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

Manifest V3下如何检测扩展程序安装于普通浏览器还是自动化工具

问题描述

我需要检测扩展程序是正常浏览器安装,还是通过自动化工具/本地开发环境安装的。在Manifest V2中,能在后台页面访问window对象,用navigator.webdriver属性实现检测,但Manifest V3受Service Worker限制,这种方法行不通了,有没有替代方案?

替代解决方案

可以借助浏览器的chrome.management(Firefox对应browser.management)API获取扩展的安装类型,以此区分不同安装场景:

1. 声明权限

首先要在manifest.json里添加"management"权限:

{
  "permissions": ["management"]
}

2. 编写检测逻辑

在Service Worker中调用getSelf()获取当前扩展信息,通过installType字段判断:

const selfInfo = await chrome.management.getSelf();

if (selfInfo.installType === "normal") {
  console.log("扩展通过官方应用商店正常安装");
} else if (selfInfo.installType === "development") {
  console.log("扩展为本地开发加载(比如开发者模式下加载已解压的文件夹)");
} else if (selfInfo.installType === "sideload") {
  console.log("扩展为侧载安装(常见于自动化工具部署场景)");
}

注意点

你提供的代码里installType的对应关系搞反了:normal是商店安装的扩展,development才是本地开发加载的情况。另外Chrome还支持sideload类型,对应自动化工具或手动CRX安装的场景,可以按需补充判断。

内容的提问来源于stack exchange,提问作者SelectorsHub ChroPath Creator

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.21 18:09:27