Chrome extension - 读取网络请求正文内容

Chrome extension - read web request body content

我有一个 chrome 扩展,我正在尝试接收和保存网络请求的内容。 在这种情况下,我正在监听 JavaScript 文件,我想保存收到的实际 js 代码,但 requestBody 总是返回 'undefined'.

我错过了什么吗?谢谢

清单:

{
  "name": "Resource reader",
  "description": "resource reader test",
  "version": "1.0",
  "permissions": [
    "webRequest",
    "*://*/",
    "activeTab",
    "webRequestBlocking"
  ],
  "background": {
    "scripts": ["background.js"],
    "persistent": true
  },
  "manifest_version": 2
}

background.js:

chrome.webRequest.onBeforeRequest.addListener(
  function(details) {
    var fileName = details.url;
    var extension = fileName.split('.').pop(); 
    if(extension === 'js'){
      console.log('received js file');
      console.log("url:"+details.url);
      console.log(details.requestBody);
    }
  },
  {urls: ["<all_urls>"], types:["script"]},
["requestBody"]);

收到的输出:

received js file                                         background.js:6 
url:http://localhost:9095/hello.js                       background.js:7 
undefined                                                background.js:8 

您可以在检测到假装获得的正确 url 后使用 fetch()。

fetch(details.url)
      .then(response => response.text())
      .then(data => console.log(data));

现在注意不要进入检测、提取、检测、提取.. 同一个文件的无限循环。