【问题标题】:Chrome extensions - Other ways to read response bodies than chrome.devtools.network?Chrome 扩展 - 除了 chrome.devtools.network 之外的其他读取响应正文的方法?
【发布时间】:2012-05-10 17:46:02
【问题描述】:

我想阅读(而不是修改)与 Chrome 扩展程序中的某些模式匹配的所有请求的响应正文。我目前正在使用chrome.devtools.network.onRequestFinished,它为您提供了带有getContent() 方法的Request 对象。这工作得很好,但当然需要打开 devtools 才能使扩展工作。理想情况下,扩展程序将是一个弹出窗口,但chrome.webRequest.onCompleted 似乎无法访问响应正文。有一个feature request 允许 webRequest API edit 响应主体 - 但是 webRequest 甚至可以读取它们吗?如果没有,是否有其他方法可以在 devtools 扩展之外读取响应正文?

【问题讨论】:

    标签: google-chrome-extension google-chrome-devtools


    【解决方案1】:

    The feature request you linked to 表示也不支持阅读:

    不幸的是,这个请求并非微不足道。 (...) 关于阅读响应正文:从性能的角度来看,这是具有挑战性的。 (...) 所以总的来说,这并不容易实现...

    所以,不,除了 devtools 之外,似乎没有办法让扩展程序访问网络响应主体。

    【讨论】:

      【解决方案2】:

      这就是我所做的

      1. 我使用chrome.webRequest & requestBody 来获取帖子请求正文
      2. 我使用了decoder将正文解析成字符串

      这是一个例子

      chrome.webRequest.onBeforeRequest.addListener(
          function(details) {
              if(details.method == "POST")
              // Use this to decode the body of your post
                  var postedString = decodeURIComponent(String.fromCharCode.apply(null,
                                            new Uint8Array(details.requestBody.raw[0].bytes)));
                 console.log(postedString)
      
          },
          {urls: ["<all_urls>"]},
          ["blocking", "requestBody"]
      );
      

      【讨论】:

      • 问题是关于响应体,而不是请求体。
      【解决方案3】:

      如果您有这种请求模式,您可以在 background.html 文件中运行类似的内容:

          var xhr = new XMLHttpRequest();
          xhr.open("GET", "http://example.com/" + yourStringForPattern, true);
          xhr.onreadystatechange = function() {
          if (xhr.readyState == 4) {
            var body = xhr.responseText;
            // call some function to do something with the html body
      
          }
         }
         xhr.send();
      

      【讨论】:

      • 这只是说明如何提出请求。 OP 正在询问如何监视浏览器发出的任何请求的响应正文。 AFAIK chrome.devtools.network.onRequestFinished 仍然是获取正文的唯一方法,并且需要打开调试器。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多