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

Chrome扩展中startsWith匹配当前页面URL不生效问题求解

问题原因

你写的逻辑永远进入else分支、同时存在安全隐患,核心是三个问题:

  • 前缀匹配规则写得太死:你判断的固定前缀是https://swisscom.ch,但实际访问Swisscom官方站点时,根域名会自动跳转到带www的子域名(即https://www.swisscom.ch开头),登录、商城等业务线还会使用login.swisscom.ch、shop.swisscom.ch这类独立子域名,硬写无www的固定前缀自然匹配失败。
  • 字符串直接匹配存在钓鱼误判风险:直接对完整URL用startsWith判断,会把https://swisscom.ch.phish.com这类钓鱼站误判为官方站——这类URL开头确实包含你写的字符串,但实际域名归钓鱼方所有,完全违背安全检测的初衷。
  • 额外功能缺陷:你只设置了徽章背景色,没有设置徽章文本,用户根本看不到角标提示,功能没有实际触达。
修复方案

不要直接匹配URL字符串,用原生URL对象解析出域名主体,判断域名是否为Swisscom官方持有(即主域名精确为swisscom.ch,或属于其下的子域名),既覆盖所有官方站点场景,又能拦截钓鱼域名。

修正后的script.js代码如下:

async function checkCurrentPage() {
  // 获取当前窗口激活的标签页
  const [currentTab] = await chrome.tabs.query({
    active: true,
    windowId: chrome.windows.WINDOW_ID_CURRENT
  });

  // 兼容浏览器内部页面(新标签页、扩展管理页等非http/https协议页面)
  if (!currentTab.url || !currentTab.url.startsWith('http')) {
    setBadge('?', '#FFA500');
    alert('当前为浏览器内部页面,无法检测站点归属');
    return;
  }

  // 解析URL拿到域名
  const pageHost = new URL(currentTab.url).hostname;
  // 官方站判断规则:主域精确匹配swisscom.ch,或为swisscom.ch的下级子域名
  const isOfficial = pageHost === 'swisscom.ch' || pageHost.endsWith('.swisscom.ch');

  if (isOfficial) {
    alert('Dies ist eine gültige Seite der Swisscom (Schweiz) AG.');
    setBadge('OK', '#00FF00');
  } else {
    alert('Vorsicht! Dies ist keine Seite der Swisscom (Schweiz) AG. Geben Sie keine Login- oder Bankdaten ein.');
    setBadge('!', '#FF0000');
  }
}

// 统一封装徽章设置逻辑
function setBadge(text, bgColor) {
  chrome.action.setBadgeText({text});
  chrome.action.setBadgeBackgroundColor({color: bgColor});
}

checkCurrentPage();

你的manifest.json配置已经满足基础检测需求,不需要额外调整,参考配置如下:

{
  "name": "SCSAG Security Check",
  "version": "1.0.0",
  "description": "Example App",
  "manifest_version": 3,
  "author": "alpinebeagle",
  "action":{
    "default_popup": "index.html",
    "default_title": "Check page status"
  },
  "permissions": [
    "tabs"
  ]
}

测试时注意不要在浏览器内置的新标签页、扩展页等内部页面触发检测,打开任意Swisscom官方页面(比如官网首页)再点击扩展图标即可得到正确结果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.27 14:45:35