私はまさにそれを行う Devtools 拡張機能をリリースしました :)
これは mitmproxy に基づいたタンパーと呼ばれ、現在のタブで行われたすべてのリクエストを表示し、変更し、次回の更新時に変更されたバージョンを提供することができます。
これはかなり初期のバージョンですが、OS X および Windows と互換性があるはずです。うまくいかない場合は、お知らせください。
ここから入手できます: http://dutzi.github.io/tamper/
動作原理
以下の @Xan のコメントにあるように、拡張機能は mitmproxy を拡張する Python スクリプトとネイティブ メッセージングを介して通信します。
この拡張機能は、chrome.devtools.network.onRequestFinished を使用してすべてのリクエストをリストします。
chrome.devtools.network.onRequestFinished
いずれかのリクエストがヒットすると、リクエスト オブジェクトの getContent() メソッドを使用してその応答がダウンロードされ、その応答がローカルに保存された Python スクリプトに送信されます。
getContent()
次に、call (OSX の場合) または subprocess.Popen (Windows の場合) を使用して、エディターでファイルを開きます。
call
subprocess.Popen
Python スクリプトは mitmproxy を使用してプロキシを経由するすべての通信をリッスンし、保存されたファイルのリクエストを検出すると、保存されたファイルを提供します。
Chrome のプロキシ API (具体的には chrome.proxy.settings.set()) を使用して、PAC をプロキシ設定に設定しました。この PAC ファイルは、すべてのトラフィックを Python スクリプトのプロキシにリダイレクトします。
chrome.proxy.settings.set()
mitmproxy の最も優れた点は、HTTPS 通信も変更できることです。だからあなたもそれを使うことができます:)
一般に、標準の Chrome 拡張機能 API を使用して HTTP リクエストの応答本文を変更することはできません。
104058: WebRequest API: 応答本文の拡張編集を許可する でリクエストされています。更新の通知を受け取るには、この質問をブックマークしてください。
XMLHttpRequest の応答本文を編集したい場合は、コンテンツ スクリプト を通じてコード を挿入し、デフォルトの XMLHttpRequest コンストラクターをオーバーライドしてください。カスタム 実際のイベントを起動する前に応答本文をオーバーライドする (完全に機能する) コンストラクターを定義します。 XMLHttpRequest オブジェクトが Chrome の組み込み XMLHttpRequest オブジェクトと完全な互換性があることを確認してください。そうでない場合、AJAX を多用する Web サイトで問題が発生します。
の応答本文を編集したい場合は、コンテンツ スクリプト
コンストラクターをオーバーライドしてください。カスタム 実際のイベントを起動する前に応答本文をオーバーライドする (完全に機能する) コンストラクターを定義します。 XMLHttpRequest オブジェクトが Chrome の組み込み
オブジェクトと完全な互換性があることを確認してください。そうでない場合、AJAX を多用する Web サイトで問題が発生します。
chrome.webRequest または chrome.declarativeWebRequest API を使用してリクエストを ## にリダイレクトできます。 #データ:-URI。 XHR アプローチとは異なり、元のリクエストのコンテンツを取得することはできません。実際、リダイレクトは実際のリクエストが送信される前にのみ完了できるため、リクエストがサーバーに到達することはありません。 main_frame リクエストをリダイレクトすると、ユーザーにはリクエストされた URL の代わりに data:-URI が表示されます。
main_frame
data:
私はまさにそれを行う Devtools 拡張機能をリリースしました :)
これは 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 通信も変更できることです。だからあなたもそれを使うことができます:)
一般に、標準の Chrome 拡張機能 API を使用して HTTP リクエストの応答本文を変更することはできません。
この機能は104058: WebRequest API: 応答本文の拡張編集を許可する でリクエストされています。更新の通知を受け取るには、この質問をブックマークしてください。
既知のXMLHttpRequest
他の場合には、の応答本文を編集したい場合は、コンテンツ スクリプト
を通じてコード を挿入し、デフォルトの XMLHttpRequestコンストラクターをオーバーライドしてください。カスタム 実際のイベントを起動する前に応答本文をオーバーライドする (完全に機能する) コンストラクターを定義します。 XMLHttpRequest オブジェクトが Chrome の組み込み
XMLHttpRequestオブジェクトと完全な互換性があることを確認してください。そうでない場合、AJAX を多用する Web サイトで問題が発生します。
chrome.webRequest
または chrome.declarativeWebRequest
API を使用してリクエストを ## にリダイレクトできます。 #データ:-URI。 XHR アプローチとは異なり、元のリクエストのコンテンツを取得することはできません。実際、リダイレクトは実際のリクエストが送信される前にのみ完了できるため、リクエストがサーバーに到達することはありません。
main_frame
リクエストをリダイレクトすると、ユーザーにはリクエストされた URL の代わりにdata:
-URI が表示されます。