阻止Chrome中的请求

时间:2013-08-10 03:08:33

标签: google-chrome google-chrome-extension

我正在尝试阻止Chrome应用中的某些请求。

我创建了一个执行此验证的JavaScript侦听器:

chrome.webRequest.onBeforeRequest.addListener(
    {
        urls: ["*://site.com/test/*"]
    },
    ["blocking"]
);

但请求并未阻止。我在这段代码中遗漏了什么吗?

我的清单:

"background": {
        "scripts": ["listener.js"],
        "persistent": true
    },
"permissions": ["tabs", "http://*/*"],
    "manifest_version": 2,

4 个答案:

答案 0 :(得分:19)

看起来你在这里误解了“阻塞”的含义。

https://developer.chrome.com/extensions/webRequest.html#subscription

  

如果可选的opt_extraInfoSpec数组包含字符串'blocking'   (仅允许特定事件),处理回调函数   同步。这意味着请求被阻止,直到   回调函数返回。在这种情况下,回调可以返回一个   BlockingResponse确定了进一步的生命周期   请求。

要阻止请求(取消它),请在事件处理程序中返回{cancel: true}

例如:

chrome.webRequest.onBeforeRequest.addListener(
    function() {
        return {cancel: true};
    },
    {
        urls: ["*://site.com/test/*"]
    },
    ["blocking"]
);

这将阻止所有与*://site.com/test/*匹配的网址。

还要记住在清单中声明webRequestwebRequestBlocking权限。

答案 1 :(得分:6)

Chrome 59 ,您可以屏蔽开发者工具本身的“网络”标签中的特定请求。

https://developers.google.com/web/updates/2017/04/devtools-release-notes#block-requests

右键单击“网络”面板中的请求,然后选择“阻止请求URL”。 Drawer中会弹出一个新的请求阻止选项卡,您可以使用该选项卡管理被阻止的请求。

Sample

答案 2 :(得分:4)

您可以执行以下操作:

  1. 创建一个新目录。
  2. 创建以下文件。
  3. 通过chrome://extensions/
  4. 在开发者模式下加载解压缩的扩展程序

    <强> background.js

    chrome.webRequest.onBeforeRequest.addListener(
      function(){ return {cancel: true}; },
      {
        urls: ["<all_urls>"], // Change this to a more specific pattern
        types: ["script"]
      },
      ["blocking"]
    );
    

    <强>的manifest.json

    {
       "name": "Block request",
       "version": "1.0",
       "manifest_version": 2,
       "background": {
           "scripts": ["background.html"]
       },
       "permissions": [
           "webRequest",
           "webRequestBlocking",
           "<all_urls>"
       ]
    }
    

答案 3 :(得分:0)

您可以使用已构建的Google Chrome扩展程序

就我而言,我还想关闭不需要的标签页:

对于有http-request-blocker(github项目here)的请求阻止,您只需要配置不需要的请求:

enter image description here

对于使用ad-close-gold扩展名的自动标签关闭,工作原理几乎相同。