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

如何检测访客Chrome浏览器是否安装了我的自定义扩展?

检测Chrome浏览器是否已安装指定扩展(Manifest V3)

针对你用原生JS搭建的网站和Manifest V3版本的Chrome扩展,下面提供两种可靠的检测方案:

方法一:请求扩展内的可访问资源

核心逻辑是让网站尝试请求一个扩展中对外暴露的资源,能成功请求则说明扩展已安装。

1. 修改扩展的manifest.json

添加web_accessible_resources字段,指定一个网站可访问的空文件:

{
    "name": "Covid-19 Stats UK",
    "version": "1.0.0",
    "description": "latest covid data of UK",
    "manifest_version": 3,
    "author": "Sampurna Chapagain",
    "action":{
       "default_popup": "index.html",
        "default_title": "Latest Covid Report"
    },
    "web_accessible_resources": [
        {
            "resources": ["check-installed.txt"],
            "matches": ["*://你的网站域名/*"] // 替换成你实际的网站域名,比如"*://example.com/*"
        }
    ]
}

然后在扩展根目录创建一个空的check-installed.txt文件。

2. 网站端原生JS检测代码

在你的网站中加入以下代码发起请求判断:

async function checkExtensionInstalled() {
    // 替换成你的扩展ID,可在Chrome扩展管理页(chrome://extensions/)开启开发者模式后查看
    const extensionId = "你的扩展ID";
    const resourceUrl = `chrome-extension://${extensionId}/check-installed.txt?t=${Date.now()}`; // 加时间戳避免缓存

    try {
        const response = await fetch(resourceUrl);
        if (response.ok) {
            console.log("扩展已安装");
            // 这里写扩展安装后的逻辑,比如显示专属提示、加载对应功能
        } else {
            console.log("扩展未安装");
        }
    } catch (error) {
        console.log("扩展未安装");
    }
}

// 调用检测函数
checkExtensionInstalled();

方法二:通过Chrome.runtime消息通信

让网站向扩展发送消息,扩展收到后返回响应,以此判断是否安装。

1. 扩展中添加消息监听

新建background.js文件,加入监听代码:

chrome.runtime.onMessageExternal.addListener((message, sender, sendResponse) => {
    // 验证消息来源是你的网站,防止恶意调用
    if (sender.origin === "https://你的网站域名") {
        if (message.type === "check_installation") {
            sendResponse({ installed: true });
        }
    }
    return true; // 保持端口开放支持异步响应
});

然后修改manifest.json注册background脚本:

{
    // 原有字段保留
    "background": {
        "service_worker": "background.js"
    },
    "externally_connectable": {
        "matches": ["*://你的网站域名/*"] // 指定允许通信的网站域名
    }
}

2. 网站端检测代码

在网站中添加以下代码发送消息:

async function checkExtensionInstalled() {
    const extensionId = "你的扩展ID";
    try {
        const response = await chrome.runtime.sendMessage(extensionId, { type: "check_installation" });
        if (response?.installed) {
            console.log("扩展已安装");
            // 执行后续逻辑
        } else {
            console.log("扩展未安装");
        }
    } catch (error) {
        console.log("扩展未安装");
    }
}

// 先判断是否是Chrome环境,避免非Chrome浏览器报错
if (typeof chrome !== "undefined" && chrome.runtime) {
    checkExtensionInstalled();
} else {
    console.log("非Chrome浏览器,无需检测");
}

注意事项

  • 两种方法都需要你获取扩展的ID,开启Chrome扩展管理页的开发者模式即可查看。
  • 域名匹配规则要精准,避免其他网站滥用你的检测逻辑。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 06:15:39