我正在尝试阻止Chrome应用中的某些请求。
我创建了一个执行此验证的JavaScript侦听器:
chrome.webRequest.onBeforeRequest.addListener(
{
urls: ["*://site.com/test/*"]
},
["blocking"]
);
但请求并未阻止。我在这段代码中遗漏了什么吗?
我的清单:
"background": {
"scripts": ["listener.js"],
"persistent": true
},
"permissions": ["tabs", "http://*/*"],
"manifest_version": 2,
答案 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/*
匹配的网址。
还要记住在清单中声明webRequest
和webRequestBlocking
权限。
答案 1 :(得分:6)
从 Chrome 59 ,您可以屏蔽开发者工具本身的“网络”标签中的特定请求。
https://developers.google.com/web/updates/2017/04/devtools-release-notes#block-requests
右键单击“网络”面板中的请求,然后选择“阻止请求URL”。 Drawer中会弹出一个新的请求阻止选项卡,您可以使用该选项卡管理被阻止的请求。
答案 2 :(得分:4)
您可以执行以下操作:
chrome://extensions/
<强> 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)的请求阻止,您只需要配置不需要的请求:
对于使用ad-close-gold扩展名的自动标签关闭,工作原理几乎相同。