首页 > web前端 > js教程 > 正文

如何在 Chrome 扩展程序中检索 HTTP 响应正文:可能吗?

Susan Sarandon
发布: 2024-10-24 18:38:35
原创
229 人浏览过

How to Retrieve HTTP Response Body in Chrome Extensions:  Is it Possible?

如何在 Chrome 扩展程序中检索 HTTP 响应正文

在 Chrome 扩展程序后台脚本中检索 HTTP 响应正文是一项挑战。虽然扩展程序可以使用 chrome.webRequest.onBeforeRequest 访问请求正文,但通常无法获取响应正文。

为了克服此限制,一种创造性的方法涉及利用 chrome.debugger API。此 API 允许扩展程序调试浏览器的网络活动并与之交互。下面是详细实现:

  1. 使用 chrome.tabs.query 和 chrome.debugger.attach 建立与当前选项卡的连接。
  2. 通过发送 Network.enable 命令启用网络调试到选项卡。
  3. 为 Network.responseReceived 事件注册事件侦听器。
  4. 收到响应后,发送 Network.getResponseBody 命令,并从事件参数中指定 requestId。
  5. 响应正文将由命令返回,允许您根据需要进行处理。
<code class="javascript">// Attach to the current tab and enable network debugging.
chrome.tabs.query({ currentWindow: true, active: true }, tabs => {
  chrome.debugger.attach({ tabId: tabs[0].id }, '1.0', debuggeeId => {
    chrome.debugger.sendCommand({ tabId: debuggeeId.tabId }, 'Network.enable');
  });
});

// Listen for response received events.
chrome.debugger.onEvent.addListener((debuggeeId, message, params) => {
  if (debuggeeId.tabId !== currentTab.id) return;
  if (message === 'Network.responseReceived') {
    // Get the response body by sending a command.
    chrome.debugger.sendCommand({ tabId: debuggeeId.tabId }, 'Network.getResponseBody', { requestId: params.requestId }, response => {
      // The response body is now available.
      // ... Process the response body ...
    });
  }
});</code>
登录后复制

此方法允许您检索 HTTP 响应正文,而不需要额外的浏览器页面或第三方服务。请注意,完成后您可以使用 chrome.debugger.detach 关闭调试会话。

以上是如何在 Chrome 扩展程序中检索 HTTP 响应正文:可能吗?的详细内容。更多信息请关注PHP中文网其他相关文章!

来源:php
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责声明 Sitemap
PHP中文网:公益在线PHP培训,帮助PHP学习者快速成长!