You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Chrome扩展开发需求:特定网页触发新标签页并设置Cookie限制

Chrome 扩展实现方案

1. 基础配置与权限

  • 在manifest.json中声明必需权限:tabs(操作标签页)、cookies(读写Cookie)、activeTab,同时通过matches指定监听的网站范围(若需兼容所有域名,用<all_urls>后续再做域名过滤更灵活)。
  • 定义多组URL映射规则:直接写在扩展的config.js配置文件中,示例:
    const URL_MAPPINGS = {
      "booking.com": "https://airbnb.com",
      "google.com": "https://bing.com",
      "yahoo.com": "https://duckduckgo.com"
    };
    
    进阶版可做popup页面让用户自定义规则,基础版写死配置即可满足需求。

2. 页面加载监听逻辑

  • 使用chrome.tabs.onUpdated事件监听标签页状态,当页面加载完成(status === 'complete')时,提取当前标签的域名:new URL(tab.url).hostname。
  • 校验该域名是否存在于URL_MAPPINGS的键集合中,匹配成功则进入下一步判断。

3. Cookie防重复触发机制

  • 匹配到目标域名后,调用chrome.cookies.get查询是否存在名为autoJump_${domain}的Cookie:
    chrome.cookies.get({url: tab.url, name: `autoJump_${domain}`}, (cookie) => {
      // 后续逻辑处理
    });
    
  • 若Cookie不存在:调用chrome.tabs.create({url: URL_MAPPINGS[domain]})打开新标签,同时设置有效期为X天的Cookie:
    const expireTime = Date.now() / 1000 + X * 24 * 60 * 60; // 转换为Chrome要求的秒级时间戳
    chrome.cookies.set({
      url: tab.url,
      name: `autoJump_${domain}`,
      value: "1",
      expirationDate: expireTime,
      sameSite: "strict"
    });
    
  • 若Cookie已存在,直接跳过跳转逻辑。

4. 细节优化

  • 处理子域名匹配:比如www.booking.com也要触发跳转,可使用hostname.endsWith('booking.com')或正则匹配,避免漏触发。
  • 防止无限循环:若映射的目标URL也在触发列表中,需增加判断(检查目标域名是否在URL_MAPPINGS的键中),避免打开新标签后再次触发跳转。
  • 可选功能:新增popup页面,支持用户修改映射规则、调整Cookie有效期,或手动清除指定域名的防重复Cookie。

内容的提问来源于stack exchange,提问作者John

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 15:20:37