2012-07-21 6 views
14

chrome.webRequest.onBeforeRequestは、リクエストを傍受し、分析し、ブロックすることができますが、私が知る限り、要求のヘッダーにのみアクセスできます。クロムエクステンションのHTTPリクエストボディを傍受する

サンプル使用例:フォーム値をインターセプトすると思います。

正確にこれを提案するAPI変更提案hereがあるようです。

これは別の方法で達成できますか?

ありがとうございました。

+2

内蔵クロームのAPIを使用して、現在は不可能です:あなたは次のことを行う必要があり、本体にアクセスするために

。 [最新のソースコードの関連部分](http://src.chromium.org/viewvc/chrome/trunk/src/chrome/browser/extensions/api/web_request/)には、このような機能の兆候は含まれていません。この機能がなくても暮らすことができない場合は、[NPAPIプラグイン]の[可能性](http://stackoverflow.com/tags/npapi/info)(http://code.google.com/chrome /extensions/npapi.html)、または(ローカル)サーバーを起動し、特定の要求をローカルサーバーにリダイレクトします。 –

+0

それは残念です。 NPAPIは私のニーズには過剰なもののようです。しかし、答えをありがとう。 – Ped

答えて

9

この機能がAPIに追加されました。documentationを参照してください。応答/要求体をインターセプト

chrome.webRequest.onBeforeRequest.addListener(
    function(details) 
    { 
     console.log(details.requestBody); 
    }, 
    {urls: ["https://myurlhere.com/*"]}, 
    ['requestBody'] 
); 
+0

すごいですね。 pingに感謝します。 – Ped

+1

私にとっては、常にundefinedを返します。たぶんベータ版のチャンネルのみですか? – BeauCielBleu

+0

@BeauCielBleuリクエストボディがない可能性があります。代わりにURLをログに記録してみてください。 'console.log(" url: "+ details.url);' – georgiecasey

2

傍受することはできないかもしれませんが、標準のAJAXアプローチを使用してダクトテープにすることができます。非同期呼び出しを行い、提示されていないHTMLオブジェクトに保存できるかどうか、hrefリクエストを行う代わりに参照してください。次に、あなたの身体の基準が何であるかを掻き取る/読んだ/解析する。それが合格すると、そのボディーオブジェクトを現在のウィンドウ/ページに戻す。

抑制された要素にコンテンツを格納してから、同じ要素をコンテンツに使用すると、重複呼び出しを避けることができます。欠点は、あなたが使用しないようにするための完全なコンテンツを取得することです。これは、帯域幅/スピードのパフォーマンス上の問題である場合とそうでない場合があります。

関連する問題