求Chrome扩展可用的官方/最新谷歌搜索域名完整列表
嘿,我完全懂你的困扰——Chrome扩展的匹配模式确实没法直接支持“所有谷歌搜索域名”这种模糊匹配,官方也没放出完整的官方域名列表,这事儿确实让人头疼。不过有几个实用的方案能帮你搞定:
1. 动态域名验证 + 宽松匹配兜底
先在manifest.json里设置一个相对宽松的匹配范围,覆盖大部分可能的谷歌域名,然后在content script里做二次验证,确保只在搜索页面执行代码:
第一步:配置manifest的匹配规则
在manifest.json里添加:"content_scripts": [ { "matches": ["*://*.google.com/*", "*://*.google.*/*"], "js": ["content.js"], "run_at": "document_start" } ]这个规则会匹配所有以
google.开头的子域名和顶级域名变体。第二步:在content script里做精准验证
在content.js里,先检查当前域名是否属于谷歌搜索域名,同时验证页面是否是搜索结果页:const hostname = window.location.hostname; // 匹配谷歌域名模式:支持google.com、google.co.uk、google.cn等 const googleDomainRegex = /^(www\.)?google\.[a-z]{2,}(?:\.[a-z]{2})?$/; // 验证是否是搜索页面:检查是否有搜索结果容器或搜索框 const isSearchPage = document.getElementById('search') || document.getElementById('gLFyf'); if (googleDomainRegex.test(hostname) && isSearchPage) { // 在这里执行你的扩展逻辑 console.log('执行谷歌搜索扩展代码'); }这个方法既能覆盖大部分谷歌搜索域名,又能过滤掉非搜索的谷歌域名(比如
googleusercontent.com这类)。
2. 内置社区维护的域名列表
虽然官方没发布,但很多开源Chrome扩展项目都维护了完整的谷歌搜索域名列表。你可以参考这些项目,把常用的谷歌搜索域名整理到manifest.json的matches数组里,比如:
"matches": [ "*://google.com/*", "*://google.co.uk/*", "*://google.com.au/*", "*://google.cn/*", "*://google.de/*", // 继续添加更多你需要的谷歌域名 ]
同时搭配上面的动态验证方案,既能保证精准匹配,又能覆盖一些小众的谷歌区域域名。
3. 使用Declarative Content API触发扩展
Chrome的declarativeContent API可以根据页面特征来触发扩展,不用依赖域名匹配。你可以在background脚本里设置规则,当页面包含谷歌搜索的特定元素时才激活扩展:
配置manifest权限
在manifest.json里添加:"permissions": ["declarativeContent"], "background": { "service_worker": "background.js" }在background.js里设置触发规则
chrome.runtime.onInstalled.addListener(() => { chrome.declarativeContent.onPageChanged.removeRules(undefined, () => { const rule = { conditions: [ new chrome.declarativeContent.PageStateMatcher({ pageUrl: { hostContains: 'google' }, css: ["#search"] // 匹配包含搜索结果容器的页面 }) ], actions: [new chrome.declarativeContent.ShowPageAction()] }; chrome.declarativeContent.onPageChanged.addRules([rule]); }); });这个方法会自动识别所有谷歌搜索页面,不管域名是什么,只要页面有搜索结果容器就会触发你的扩展。
这些方案各有优劣,你可以根据自己的需求选择:如果追求极致精准,用方案1+2;如果想省掉维护域名列表的麻烦,方案3会更省心。
内容的提问来源于stack exchange,提问作者askvictor




