DMC*_*ing 5 javascript google-chrome-extension opera-extension
我正在开发一个扩展程序,它将在所有 Google 搜索 URL 上执行特定操作 - 但不会在其他网站或 Google 页面上执行。在自然语言中,匹配模式是:
'*://')'www'或'')'google''.com')和多部分国家/地区 TLD(例如'.co.uk')'/search?'许多人说“匹配所有谷歌搜索页面使用的内容,"*://*.google.com/search?*"但这显然是不正确的,因为它不会匹配 google.co.uk 等国家顶级域名 (TLD)”。
因此下面的代码根本不起作用:
chrome.webRequest.onBeforeRequest.addListener(
function(details) {
alert('This never happens');
}, {
urls: [
"*://*.google.*/search?*",
"*://google.*/search?*",
],
types: ["main_frame"]
},
["blocking"]
);
Run Code Online (Sandbox Code Playgroud)
使用"*://*.google.com/search?*"as 匹配模式确实有效,但我担心我需要每个 Google 本地化的列表才能成为有效的策略。
遗憾的是,出于安全原因,匹配模式不允许 TLD 使用通配符。
您不能使用通配符匹配模式
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的非常有用的评论,这里是所有 Google 域变体的最新列表,这使得这种方法可行。
一个现实的选择是注入更大的页面集(例如所有页面),然后分析 URL(例如使用正则表达式),并且仅在它与您正在查找的模式匹配时才执行。是的,这将是一个更可怕的权限警告,您必须向您的用户解释它。
| 归档时间: |
|
| 查看次数: |
2223 次 |
| 最近记录: |