阻止Chrome中的请求

Ber*_*eck 12 google-chrome google-chrome-extension

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

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

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

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

我的清单:

"background": {
        "scripts": ["listener.js"],
        "persistent": true
    },
"permissions": ["tabs", "http://*/*"],
    "manifest_version": 2,
Run Code Online (Sandbox Code Playgroud)

方 觉*_*方 觉 21

看起来你在这里误解了"阻塞"的含义.

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"]
);
Run Code Online (Sandbox Code Playgroud)

这将阻止所有匹配的URL *://site.com/test/*.

还要记住在清单中声明两者webRequestwebRequestBlocking权限.


Asi*_*K T 7

Chrome 59中,您可以阻止开发人员工具本身的"网络"标签中的特定请求.

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

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

样品