You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

求Chrome扩展可用的官方/最新谷歌搜索域名完整列表

解决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.jsonmatches数组里,比如:

"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

火山引擎 最新活动