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>"
],
扩展示例和帮助链接:
- 请求延期:https://chrome.google.com/webstore/detail/requestly/mdnleldcmiljblolnjhpnblkcekpdkpa
- 扩展 Https-无处不在:https://github.com/EFForg/https-everywhere
- 示例:https://github.com/blunderboy/requestly/blob/master/src/background/background.js
- 维基百科:https://code.google.com/p/html5security/wiki/RedirectionMethods
- 维基百科:https://developer.chrome.com/extensions/webRequest
如果某些条件匹配,扩展程序如何拦截任何请求 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>"
],
扩展示例和帮助链接:
- 请求延期:https://chrome.google.com/webstore/detail/requestly/mdnleldcmiljblolnjhpnblkcekpdkpa
- 扩展 Https-无处不在:https://github.com/EFForg/https-everywhere
- 示例:https://github.com/blunderboy/requestly/blob/master/src/background/background.js
- 维基百科:https://code.google.com/p/html5security/wiki/RedirectionMethods
- 维基百科:https://developer.chrome.com/extensions/webRequest