gpt4 book ai didi

javascript - 所有谷歌搜索页面的匹配模式

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:24:30 26 4
gpt4 key购买 nike

我正在开发一个扩展程序,它将对所有 Google 搜索 URL 执行特定操作,但不会在其他网站或 Google 页面上执行。在自然语言中,匹配模式是:

  • 任何协议(protocol)('*://')
  • 任何子域或无子域('www''')
  • 域字符串必须等于 'google'
  • 任何 TLD,包括三个字母的 TLD(例如 '.com')和多个国家/地区的 TLD(例如 '.co.uk')
  • 路径的前 8 个字母必须等于 '/search?'

许多人说“要匹配所有 google 搜索页面,请使用 "*://*.google.com/search?*" 但这显然是不正确的,因为它不会匹配像 google 这样的国家 TLD .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 本地化是一个有效的策略。

最佳答案

不幸的是,匹配模式do not allow wildcards for TLDs for security reasons .

You cannot use wildcard match patterns like http://google.*/* to match TLDs (like http://google.es and http://google.fr) due to the complexity of actually restricting such a match to only the desired domains.

For the example of http://google.*/*, the Google domains would be matched, but so would http://google.someotherdomain.com. Additionally, many sites do not own all of the TLDs for their domain. For an example, assume you want to use http://example.*/* to match http://example.com and http://example.es, but http://example.net is a hostile site. If your extension has a bug, the hostile site could potentially attack your extension in order to get access to your extension's increased privileges.

You should explicitly enumerate the TLDs that you wish to run your extension on.

一个稍微不切实际的选择是列出具有所有国家 TLD 的所有变体。

编辑:感谢 rsanchez 的非常有用的评论, 这是一个 up to date list使这种方法可行的所有 Google 域变体。

一个现实的选择是注入(inject)更大的页面集(例如,所有页面),然后分析 URL(例如,使用正则表达式)并且仅当它与您正在寻找的模式匹配时才执行。是的,这将是一个更可怕的权限警告,您将不得不向您的用户解释。

关于javascript - 所有谷歌搜索页面的匹配模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23747781/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com