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

如何通过网页JS检测Chrome中无web_accessible_resources的已安装扩展?

需求目标

检测Chrome浏览器中是否安装了满足以下条件的扩展程序(通过网页端JavaScript实现,而非其他扩展程序):

  • 无web_accessible_resources配置
  • 未向DOM中添加任何元素
问题背景

Stack Overflow上的多数方案都是关于在一个扩展中检测另一个扩展,但我需要在网站中检测用户是否安装了目标扩展。我曾尝试过两种方法,但均因Chrome会取消对不可访问内容的API调用而失效,相关代码如下:

function detectExtensionUsingImage(extensionId, callback) {
        const img = new Image();
        const src = `chrome-extension://${extensionId}/resources/icon_16.png`;
        img.src = src;
        img.onload = function() {
            callback(true);
        };
        img.onerror = function() {
            callback(false);
        }
};

detectExtensionUsingImage('aaaaaaaaaaaaaaaaaaaa', (isInstalled) => console.log(isInstalled ? 'Yay!' : 'Nay!'));


var detectExtensionUsingScript = function(extensionId, callbackFunc) {
    var s = document.createElement('script');
    s.onerror = () => callbackFunc(false);
    s.onload = () => callbackFunc(true)
    document.body.appendChild(s);
    const src = `chrome-extension://${extensionId}/manifest.json`;
    s.src = src;
}

detectExtensionUsingScript('aaaaaaaaaaaaaaaaaaaa',(isInstalled) => console.log(isInstalled ? 'Yay!' : 'Nay!'));

此外,我还尝试过检测扩展的图标,但也未成功。请问是否存在其他方法可以检测这类仅使用popup、无DOM元素添加且无web_accessible_resources配置的已安装扩展?


解决方案

不存在网页端JavaScript方法可以检测这类符合条件的Chrome扩展,核心原因在于Chrome的安全隔离机制:

  • 资源隔离限制:未配置web_accessible_resources的扩展,其内部所有资源(图标、manifest、脚本等)都被Chrome完全隔离,网页无法通过chrome-extension://协议访问这些资源,你之前尝试的图片加载、脚本加载方法必然失效。
  • 无外部可观测特征:这类扩展既不向网页DOM注入任何元素,也没有内容脚本进入页面上下文,网页端没有任何可捕捉的DOM变化或全局变量痕迹来判断其存在。
  • 权限边界严格:网页脚本运行在独立的沙箱环境,无权调用Chrome的扩展管理API(如chrome.management)——这类API仅对扩展自身开放,网页端无法触达。

如果必须实现类似检测,只能借助非网页端的方案:

  • 开发辅助扩展,利用chrome.managementAPI检测目标扩展的安装状态,再通过消息传递将结果同步给网页。
  • 要求目标扩展添加特定权限或交互逻辑,允许网页主动触发验证,但这需要目标扩展的开发者配合。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.18 05:17:25