我正在开发一个扩展程序,该扩展程序会对所有Google搜索网址执行某项操作,但不会在其他网站或Google网页上执行。在自然语言中,匹配模式为:
'*://'
)'www'
或''
)'google'
'.com'
)和多部分国家/地区顶级域名(例如'.co.uk'
)'/search?'
许多人说匹配所有谷歌搜索页面都使用"*://*.google.com/search?*"
,但这显然是不真实的,因为它与google.co.uk等国家顶级域名不匹配。
因此,以下代码根本不起作用:
chrome.webRequest.onBeforeRequest.addListener(
function(details) {
alert('This never happens');
}, {
urls: [
"*://*.google.*/search?*",
"*://google.*/search?*",
],
types: ["main_frame"]
},
["blocking"]
);
使用"*://*.google.com/search?*"
作为匹配模式 可以正常工作,但我担心我需要列出每个Google本地化的列表才能成为有效策略。
答案 0 :(得分:3)
不幸的是,匹配模式do not allow wildcards for TLDs for security reasons。
您不能使用
http://google.*/*
之类的通配符匹配模式进行匹配 TLD(如http://google.es
和http://google.fr
)由于 实际上将这种匹配仅限于所需的复杂性 域。对于
http://google.*/*
的示例,Google域名将是。{ 匹配,但http://google.someotherdomain.com
也是如此。另外, 许多网站并不拥有其域名的所有TLD。为 例如,假设您要使用http://example.*/*
进行匹配http://example.com
和http://example.es
,但http://example.net
是一个 敌对网站。如果您的扩展程序有错误,恶意网站可以 可能会攻击您的扩展程序以访问您的扩展程序 扩展的特权增加。您应明确列举您希望运行的TLD 延期。
稍微不切实际的选择是列出所有国家TLD的变体。
修改:感谢rsanchez提供的非常有用的评论,这里有up to date list所有Google域名变种,这使得此方法可行。
一个现实的选择是注入更大的页面集(例如,所有页面),然后分析URL(例如,使用正则表达式),只有在匹配您正在寻找的模式时才执行。是的,这将是一个更可怕的权限警告,您将不得不向您的用户解释。
答案 1 :(得分:3)
来源:https://stackoverflow.com/a/16187588/6250024
我想知道同样的问题并找到了一个更好的解决方案,它引入了“include_globs”参数。
"matches": ["http://*/*", "https://*/*"],
"include_globs": ["http://www.google.*/*", "https://www.google.*/*"],
答案 2 :(得分:1)
您可以使用任意长度的匹配模式数组(尽管使用超过1000左右时会降低浏览器的速度)。为方便起见,这里有一个更新列表:
"matches": [
"*://*.google.com/*",
"*://*.google.ad/*",
"*://*.google.ae/*",
"*://*.google.com.af/*",
"*://*.google.com.ag/*",
"*://*.google.com.ai/*",
"*://*.google.al/*",
"*://*.google.am/*",
"*://*.google.co.ao/*",
"*://*.google.com.ar/*",
"*://*.google.as/*",
"*://*.google.at/*",
"*://*.google.com.au/*",
"*://*.google.az/*",
"*://*.google.ba/*",
"*://*.google.com.bd/*",
"*://*.google.be/*",
"*://*.google.bf/*",
"*://*.google.bg/*",
"*://*.google.com.bh/*",
"*://*.google.bi/*",
"*://*.google.bj/*",
"*://*.google.com.bn/*",
"*://*.google.com.bo/*",
"*://*.google.com.br/*",
"*://*.google.bs/*",
"*://*.google.bt/*",
"*://*.google.co.bw/*",
"*://*.google.by/*",
"*://*.google.com.bz/*",
"*://*.google.ca/*",
"*://*.google.cd/*",
"*://*.google.cf/*",
"*://*.google.cg/*",
"*://*.google.ch/*",
"*://*.google.ci/*",
"*://*.google.co.ck/*",
"*://*.google.cl/*",
"*://*.google.cm/*",
"*://*.google.cn/*",
"*://*.google.com.co/*",
"*://*.google.co.cr/*",
"*://*.google.com.cu/*",
"*://*.google.cv/*",
"*://*.google.com.cy/*",
"*://*.google.cz/*",
"*://*.google.de/*",
"*://*.google.dj/*",
"*://*.google.dk/*",
"*://*.google.dm/*",
"*://*.google.com.do/*",
"*://*.google.dz/*",
"*://*.google.com.ec/*",
"*://*.google.ee/*",
"*://*.google.com.eg/*",
"*://*.google.es/*",
"*://*.google.com.et/*",
"*://*.google.fi/*",
"*://*.google.com.fj/*",
"*://*.google.fm/*",
"*://*.google.fr/*",
"*://*.google.ga/*",
"*://*.google.ge/*",
"*://*.google.gg/*",
"*://*.google.com.gh/*",
"*://*.google.com.gi/*",
"*://*.google.gl/*",
"*://*.google.gm/*",
"*://*.google.gp/*",
"*://*.google.gr/*",
"*://*.google.com.gt/*",
"*://*.google.gy/*",
"*://*.google.com.hk/*",
"*://*.google.hn/*",
"*://*.google.hr/*",
"*://*.google.ht/*",
"*://*.google.hu/*",
"*://*.google.co.id/*",
"*://*.google.ie/*",
"*://*.google.co.il/*",
"*://*.google.im/*",
"*://*.google.co.in/*",
"*://*.google.iq/*",
"*://*.google.is/*",
"*://*.google.it/*",
"*://*.google.je/*",
"*://*.google.com.jm/*",
"*://*.google.jo/*",
"*://*.google.co.jp/*",
"*://*.google.co.ke/*",
"*://*.google.com.kh/*",
"*://*.google.ki/*",
"*://*.google.kg/*",
"*://*.google.co.kr/*",
"*://*.google.com.kw/*",
"*://*.google.kz/*",
"*://*.google.la/*",
"*://*.google.com.lb/*",
"*://*.google.li/*",
"*://*.google.lk/*",
"*://*.google.co.ls/*",
"*://*.google.lt/*",
"*://*.google.lu/*",
"*://*.google.lv/*",
"*://*.google.com.ly/*",
"*://*.google.co.ma/*",
"*://*.google.md/*",
"*://*.google.me/*",
"*://*.google.mg/*",
"*://*.google.mk/*",
"*://*.google.ml/*",
"*://*.google.com.mm/*",
"*://*.google.mn/*",
"*://*.google.ms/*",
"*://*.google.com.mt/*",
"*://*.google.mu/*",
"*://*.google.mv/*",
"*://*.google.mw/*",
"*://*.google.com.mx/*",
"*://*.google.com.my/*",
"*://*.google.co.mz/*",
"*://*.google.com.na/*",
"*://*.google.com.nf/*",
"*://*.google.com.ng/*",
"*://*.google.com.ni/*",
"*://*.google.ne/*",
"*://*.google.nl/*",
"*://*.google.no/*",
"*://*.google.com.np/*",
"*://*.google.nr/*",
"*://*.google.nu/*",
"*://*.google.co.nz/*",
"*://*.google.com.om/*",
"*://*.google.com.pa/*",
"*://*.google.com.pe/*",
"*://*.google.com.pg/*",
"*://*.google.com.ph/*",
"*://*.google.com.pk/*",
"*://*.google.pl/*",
"*://*.google.pn/*",
"*://*.google.com.pr/*",
"*://*.google.ps/*",
"*://*.google.pt/*",
"*://*.google.com.py/*",
"*://*.google.com.qa/*",
"*://*.google.ro/*",
"*://*.google.ru/*",
"*://*.google.rw/*",
"*://*.google.com.sa/*",
"*://*.google.com.sb/*",
"*://*.google.sc/*",
"*://*.google.se/*",
"*://*.google.com.sg/*",
"*://*.google.sh/*",
"*://*.google.si/*",
"*://*.google.sk/*",
"*://*.google.com.sl/*",
"*://*.google.sn/*",
"*://*.google.so/*",
"*://*.google.sm/*",
"*://*.google.sr/*",
"*://*.google.st/*",
"*://*.google.com.sv/*",
"*://*.google.td/*",
"*://*.google.tg/*",
"*://*.google.co.th/*",
"*://*.google.com.tj/*",
"*://*.google.tk/*",
"*://*.google.tl/*",
"*://*.google.tm/*",
"*://*.google.tn/*",
"*://*.google.to/*",
"*://*.google.com.tr/*",
"*://*.google.tt/*",
"*://*.google.com.tw/*",
"*://*.google.co.tz/*",
"*://*.google.com.ua/*",
"*://*.google.co.ug/*",
"*://*.google.co.uk/*",
"*://*.google.com.uy/*",
"*://*.google.co.uz/*",
"*://*.google.com.vc/*",
"*://*.google.co.ve/*",
"*://*.google.vg/*",
"*://*.google.co.vi/*",
"*://*.google.com.vn/*",
"*://*.google.vu/*",
"*://*.google.ws/*",
"*://*.google.rs/*",
"*://*.google.co.za/*",
"*://*.google.co.zm/*",
"*://*.google.co.zw/*",
"*://*.google.cat/*"
],
要重新创建,您可以使用命令
curl https://www.google.com/supported_domains | sed 's!\(.*\)!"*://*\1/*",!g'