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通訊。所以你也可以使用它:)
P粉5613239752023-08-22 18:26:03
一般來說,您無法使用標準的Chrome擴充API來變更HTTP請求的回應體。
此功能正在104058: WebRequest API: 允許擴充功能編輯回應體上進行請求。收藏此問題以獲取更新通知。
如果您想編輯已知的XMLHttpRequest
的回應體,請透過內容腳本注入程式碼,以覆寫預設的XMLHttpRequest
建構函數,使用自定義(功能完整的)建構函式在觸發真實事件之前重寫響應體。確保您的XMLHttpRequest物件與Chrome內建的XMLHttpRequest
物件完全相容,否則會導致AJAX-heavy網站出現問題。
在其他情況下,您可以使用chrome.webRequest
或chrome.declarativeWebRequest
API將請求重定向到data:
-URI。與XHR方法不同,您將無法取得原始請求的內容。實際上,請求永遠不會到達伺服器,因為重定向只能在實際請求發送之前完成。如果您重定向main_frame
請求,使用者將看到data:
-URI而不是請求的URL。