【问题标题】:How to intercept other extensions' requests using Chrome extension API?如何使用 Chrome 扩展 API 拦截其他扩展的请求?
【发布时间】:2017-09-14 14:54:15
【问题描述】:

我的代码是这样的,但是无法拦截来自其他扩展(例如 Postman)的请求:

chrome.webRequest.onBeforeRequest.addListener(
  function(details){
    console.log(details.method + " ====== "+ details.url + " ====== " + details.timeStamp);
    console.log("---requestbody----: " + details.requestBody);
  },
  {urls: ["<all_urls>"]},
  ["blocking"]
);

【问题讨论】:

  • FWIW,您可能可以使用 chrome.debugger API 和 --silent-debugger-extension-api 命令行开关附加到其他扩展程序的背景页面并拦截几乎所有内容。

标签: javascript google-chrome google-chrome-extension request


【解决方案1】:

确实,这段代码不会。

这是一项安全功能:webRequest 无法拦截来自其他扩展程序或 Chrome 应用程序的任何请求。否则,如果另一个扩展正在加载第三方库,则可能会注入您的代码。

它是used to be able to,但它是deemed a security bug 并已修复。

没有办法覆盖它。

一般来说,扩展是不允许互相干扰的(除了外部消息,但双方必须积极参与),因为存在提权问题。

【讨论】:

    【解决方案2】:

    不能拦截其他扩展请求,但您可以做的是获取然后更改要拦截的扩展,并在这两个扩展之间添加external messaging

    获取源码并修改

    1. 安装Chrome extension source viewer
    2. 转到 Chrome 网上应用店中您要修改的扩展程序的页面。
    3. 点击黄色 CRX 按钮,然后选择下载 (screenshot)。
    4. 解压 zip 文件。
    5. 阅读源代码,并更改需要更改的内容(在您的特定情况下,我很快发现您想要更改编辑config.js 并更改"channel" 属性)。保存更改。

    或者 复制您要修改的扩展的文件夹。 (根据扩展 ID 命名,要查找扩展的 ID,请转到 chrome://extensions/)。复制后,您必须删除 _metadata 文件夹。

    使用修改版的扩展。

    1. 访问 Chrome 扩展页面 (chrome://extensions/)。
    2. 选中右上角的复选框,启用开发者模式。
    3. 点击“加载解压扩展”按钮。
    4. 选择你的扩展的文件夹(要知道哪个文件夹是正确的,请检查该文件夹是否包含一个名为manifest.json的文件)。
    5. 确认。大功告成。

    除非您在这些步骤中的任何一个步骤中犯了错误(包括修改源代码),否则修改后的扩展程序应该可以按预期工作。

    来源:How to modify an extension from the Chrome Web Store?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-30
      • 2019-03-11
      • 1970-01-01
      • 2018-11-15
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多