如何获取Chrome扩展程序中所有请求的响应正文?

时间:2018-02-14 11:20:29

标签: google-chrome google-chrome-extension

我需要在我的扩展程序的chrome选项卡中读取所有js请求的响应正文。 我将调试器附加到webRequest.onBeforeRequest方法中的tab,用于第一个请求类型为" main_frame"和网址" http://localhost:8086/"。

chrome.webRequest.onBeforeRequest.addListener(attachDebugger, { urls: ['*://*/*'] }, ["blocking"]);

这是代码

    function attachDebugger(details){
     if(!isDebuggerAttached){
        tabId = details.tabId
        isDebuggerAttached = true
        chrome.debugger.attach({tabId:tabId}, "1.2")
        chrome.debugger.sendCommand({ tabId:tabId }, "Network.enable");
        chrome.debugger.onEvent.addListener(onEvent);
      }
    }

function onEvent(debuggeeId, message, params) {
if (message == "Network.requestWillBeSent" && params.type == "script") {
    console.log("requestWillBeSent =" + JSON.stringify(params))
  }
  if (message == "Network.responseReceived" && params.response && && params.type == "script"){

  chrome.debugger.sendCommand({
                  tabId: tabId
              }, "Network.getResponseBody", {
                  "requestId": params.requestId
              }, function(response) {
                      // you get the response body here!

              });
  }
}

我正在获取其发起人脚本但不是解析器的js请求的响应正文。 例如,我只得到login.js的响应主体(Initiator:Script)。 enter image description here

请注意第一次加载我没有收到onEvent的回复消息" Network.requestWillBeSent"对于vendor.js和app.js(发起者:解析器)

但是,如果我重新加载页面,我会收到所有请求的响应正文,并且我会收到回复消息" Network.requestWillBeSent"对于vendor.js和app.js

在为app.js和vendor.js发出请求后,看起来调试器已经附加了,这解释了为什么一切都可以重新加载。

如果我尝试将调试器附加到任何空的选项卡(在加载任何网站之前),我收到此错误“运行debugger.attach时未检查runtime.lastError:无法访问chrome:// URL

何时应该附加调试器?

0 个答案:

没有答案