2013-08-30 45 views
13

それは難しい問題(または不可能なのですか?)と思われます。 Chrome拡張機能のバックグラウンドスクリプトを見ながら、ブラウザでHTTPリクエストが原因でHTTPレスポンスを取得して読みたいと思っています。 我々はにHTTPレスポンスボディを取得する任意の巧妙な方法はありこれらstackoverflowsChrome拡張機能 - HTTPレスポンス本体を取得する方法

私もチェック

chrome.webRequest.onBeforeRequest.addListener(function(data){ 
    // data contains request_body 
},{'urls':[]},['requestBody']); 

このようにHTTPリクエストボディを得ることができますChrome拡張機能

+1

一般的な方法はありません。特定のユースケースに対してのみ可能です。 –

答えて

12

私はこのアンサーより良い方法を見つけることができません。

Chrome extension to read HTTP response

anwserは(event-responseReceivedを参照)、応答OBJには、本体情報が存在しない別のpage.Butにレスポンスヘッダとディスプレイを取得する方法を語りました。応答本体を別のページなしで取得したい場合は、これを試してください。

var currentTab; 
var version = "1.0"; 

chrome.tabs.query(//get current Tab 
    { 
     currentWindow: true, 
     active: true 
    }, 
    function(tabArray) { 
     currentTab = tabArray[0]; 
     chrome.debugger.attach({ //debug at current tab 
      tabId: currentTab.id 
     }, version, onAttach.bind(null, currentTab.id)); 
    } 
) 


function onAttach(tabId) { 

    chrome.debugger.sendCommand({ //first enable the Network 
     tabId: tabId 
    }, "Network.enable"); 

    chrome.debugger.onEvent.addListener(allEventHandler); 

} 


function allEventHandler(debuggeeId, message, params) { 

    if (currentTab.id != debuggeeId.tabId) { 
     return; 
    } 

    if (message == "Network.responseReceived") { //response return 
     chrome.debugger.sendCommand({ 
      tabId: debuggeeId.tabId 
     }, "Network.getResponseBody", { 
      "requestId": params.requestId 
     }, function(response) { 
      // you get the response body here! 
      // you can close the debugger tips by: 
      chrome.debugger.detach(debuggeeId); 
     }); 
    } 

} 

私はそれが私のために十分に有用だと思うと、あなたは醜い先端部を閉じるようにchrome.debugger.detach(debuggeeId)を使用することができます。

申し訳ありませんが、mabyeは役に立ちません...^

+1

'--silent-debugger-extension-api'コマンドラインを使ってブラウザをランチして黄色のバーを取り除くと、ブラウザの最初のインスタンスになる必要があります –

+0

私は応答が未定義のままです。 –

+0

理由は「特定の識別子のリソースが見つかりません」(getResponseBodyのrequestIdが間違っています)ですが、なぜそれが間違っているのかわかりません:( –

関連する問題