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

时间:2015-06-02 07:54:55

标签: google-chrome http google-chrome-extension

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

Similar question for Firefox.

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

1 个答案:

答案 0 :(得分:22)

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()函数的变体。除了指定回调函数之外,还必须指定过滤器参数,并且可以指定可选的额外信息参数。

Web请求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>"
],

扩展示例和帮助链接: