首頁  >  問答  >  主體

修改Chrome擴充程式中的HTTP響應

<p>是否有可能創建一個能夠修改HTTP響應體的Chrome擴充程式? </p> <p>我已經查看了Chrome擴充API,但沒有找到可以實現這個功能的內容。 </p>
P粉038161873P粉038161873446 天前622

全部回覆(2)我來回復

  • P粉311464935

    P粉3114649352023-08-22 20:54:03

    我剛剛發布了一個Devtools擴展,可以做到這一點:)

    它叫做tamper,基於mitmproxy,它允許你查看當前標籤頁發出的所有請求,修改它們,並在下次刷新時提供修改後的版本。

    這是一個相當早期的版本,但應該與OS X和Windows相容。如果對你不起作用,請告訴我。

    你可以在這裡取得它:http://dutzi.github.io/tamper/

    工作原理

    正如下面的@Xan評論所說,該擴充功能透過與擴展了mitmproxy的Python腳本進行本機訊息傳遞來通訊。

    該擴充功能使用chrome.devtools.network.onRequestFinished列出所有請求。

    當你點擊其中一個請求時,它使用請求物件的getContent()方法下載其回應,然後將該回應傳送給儲存在本地的Python腳本。

    然後,它使用call(對於OSX)或subprocess.Popen(對於Windows)在編輯器中開啟檔案。

    Python腳本使用mitmproxy監聽透過該代理進行的所有通信,如果偵測到已儲存檔案的請求,它將提供已儲存的檔案。

    我使用了Chrome的代理API(具體來說是chrome.proxy.settings.set())將PAC設定為代理設定。該PAC檔案將所有通訊重定向到Python腳本的代理程式。

    mitmproxy最棒的一點是它也可以修改HTTPS通訊。所以你也可以使用它:)

    回覆
    0
  • P粉561323975

    P粉5613239752023-08-22 18:26:03

    一般來說,您無法使用標準的Chrome擴充API來變更HTTP請求的回應體。

    此功能正在104058: WebRequest API: 允許擴充功能編輯回應體上進行請求。收藏此問題以獲取更新通知。

    如果您想編輯已知的XMLHttpRequest的回應體,請透過內容腳本注入程式碼,以覆寫預設的XMLHttpRequest建構函數,使用自定義(功能完整的)建構函式在觸發真實事件之前重寫響應體。確保您的XMLHttpRequest物件與Chrome內建的XMLHttpRequest物件完全相容,否則會導致AJAX-heavy網站出現問題。

    在其他情況下,您可以使用chrome.webRequestchrome.declarativeWebRequest API將請求重定向到data:-URI。與XHR方法不同,您將無法取得原始請求的內容。實際上,請求永遠不會到達伺服器,因為重定向只能在實際請求發送之前完成。如果您重定向main_frame請求,使用者將看到data:-URI而不是請求的URL。

    回覆
    0
  • 取消回覆