Chrome 扩展:如何拦截请求的网址?

Chrome extension: how to intercept requested urls?

如果某些条件匹配,扩展程序如何拦截任何请求 URL 以阻止它? ()

manifest.json需要设置什么权限?

JavaScript代码:

以下示例说明如何阻止对 www.evil.com 的所有请求:

chrome.webRequest.onBeforeRequest.addListener(
  function(details) {
    return {cancel: details.url.indexOf("://www.evil.com/") != -1};
  },
  { urls: ["<all_urls>"] },
  ["blocking"]
);

以下示例以更有效的方式实现了相同的目标,因为不需要将不针对 www.evil.com 的请求传递给扩展程序:

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

正在注册事件侦听器:

要为 Web 请求注册事件侦听器,您可以使用常用 addListener() 函数的变体。除了指定回调函数外,您还必须指定过滤器参数,并且可以指定可选的额外信息参数。

网络请求API的addListener()的三个参数定义如下:

var callback = function(details) {...};
var filter = {...};
var opt_extraInfoSpec = [...];

下面是一个监听 onBeforeRequest 事件的例子:

chrome.webRequest.onBeforeRequest.addListener(
  callback, filter, opt_extraInfoSpec);

manifest.json 需要权限:

"permissions": [
  "webRequest",
  "webRequestBlocking",
"tabs",
"<all_urls>"
],

扩展示例和帮助链接: