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

如何检测与网页交互并篡改代码的特定Chrome扩展

问题根源

普通网页的JavaScript环境没有权限访问Chrome扩展API(包括chrome.runtime、chrome.extension),这是Chrome的安全隔离机制导致的——扩展API仅对扩展自身的代码(背景脚本、内容脚本、弹窗等)开放,外部网页无法直接调用,所以你会遇到chrome.runtime未定义的错误。

可行的检测方案

既然无法直接调用扩展API,你需要基于目标扩展篡改网页的具体行为特征来间接检测它的存在,常见思路如下:

1. 检测扩展注入的全局变量/标记

很多恶意扩展会在网页的全局window对象上留下自定义属性,你可以直接检查这些标记:

function detectTargetExtension() {
  // 假设目标扩展会注入window.__target_ext_id这个全局变量
  if (window.__target_ext_id === "bjnkkhimoaclnddigpphpgkfgeggokam") {
    alert("检测到目标篡改扩展");
    return true;
  }
  return false;
}

// 页面加载完成后执行检测
window.addEventListener('DOMContentLoaded', detectTargetExtension);

2. 检测扩展注入的DOM元素

如果扩展会在页面中插入特定的DOM节点(比如隐藏的标记元素),可以通过DOM查询检测:

function detectTargetExtension() {
  // 查找扩展可能注入的特定元素(示例:带有特定data属性的元素)
  const extMarker = document.querySelector('[data-ext-id="bjnkkhimoaclnddigpphpgkfgeggokam"]');
  if (extMarker) {
    alert("检测到目标篡改扩展");
    return true;
  }
  return false;
}

window.addEventListener('load', detectTargetExtension);

3. 检测被篡改的原生API

如果扩展会修改网页的原生API(比如fetch、XMLHttpRequest、document.write)来篡改内容,可以对比API的原始特征:

// 保存fetch的原始引用(需要在扩展篡改前执行,比如放在页面最顶部)
const originalFetch = window.fetch;

function detectAPITampering() {
  if (window.fetch !== originalFetch) {
    // 进一步验证是否为目标扩展的篡改(比如检查函数toString的特征)
    if (window.fetch.toString().includes("bjnkkhimoaclnddigpphpgkfgeggokam")) {
      alert("检测到目标扩展篡改了fetch API");
      return true;
    }
  }
  return false;
}

window.addEventListener('load', detectAPITampering);
关键提示
  • 你需要先明确目标扩展具体是如何篡改网页的(比如注入了什么、修改了什么),才能针对性编写检测逻辑。
  • 永远不要尝试依赖扩展内部的API调用,网页没有权限访问这些私有接口。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 02:50:38