如何防止Chrome扩展覆盖用户修改后的源文件
Chrome扩展修改被自动覆盖的解决方案
问题原因
Chrome 80及以上版本新增了网上应用店扩展完整性校验机制,所有从Chrome网上应用店安装的扩展,只要本地文件与官方发布版本不一致,浏览器就会自动拉取官方安装包覆盖修改内容,该机制无公开的禁用开关,强行修改系统级策略存在较高安全风险,不推荐操作。
可行workaround操作步骤
步骤1:备份你已修改的扩展源码
- 首先打开Chrome扩展管理页:地址栏输入
chrome://extensions/,开启右上角的「开发者模式」,找到Copy All Urls扩展,记下它的扩展ID(一串随机字母组合) - 进入Chrome扩展本地存储目录:
- Windows:
C:\Users\<你的系统用户名>\AppData\Local\Google\Chrome\User Data\Default\Extensions - macOS:
~/Library/Application Support/Google/Chrome/Default/Extensions/ - Linux:
~/.config/google-chrome/Default/Extensions/
- Windows:
- 找到和你刚才记下的扩展ID同名的文件夹,进入后找到对应版本号命名的子文件夹,将里面所有文件全部复制到你自己创建的独立文件夹中(比如命名为
copy-all-urls-mod,不要放在C盘系统目录下,避免文件丢失)
步骤2:修改扩展配置避免和官方版本冲突
打开你刚才复制的本地文件夹中的manifest.json文件,做以下修改:
- 修改
name字段为自定义名称,比如Copy All Urls(私人修改版),方便和官方版本区分 - 找到
update_url字段,整行删除,该字段是浏览器拉取官方更新包的地址,删除后不会触发自动更新覆盖 - 如果文件中存在
key字段,也整行删除,该字段是官方扩展的签名密钥,本地使用不需要保留
步骤3:加载本地修改版扩展
- 回到
chrome://extensions/页面,卸载或禁用原来从应用店安装的官方Copy All Urls扩展,避免功能冲突 - 点击页面左上角的「加载已解压的扩展程序」,选择你刚才存储修改版源码的文件夹,加载完成即可正常使用
- 该本地加载的扩展不会被Chrome自动覆盖,只要不删除本地源码文件夹就会一直生效
可选:打包为独立CRX安装包
如果需要备份扩展或者安装到其他Chrome内核浏览器,可以打包为独立安装包:
- 在
chrome://extensions/开发者模式下,点击「打包扩展程序」 - 「扩展程序根目录」选择你存储修改版源码的文件夹,「私钥文件」第一次打包留空即可
- 点击「打包」后会在同级目录生成
.crx安装包和.pem私钥文件,私钥文件请妥善保存,后续更新该扩展时需要使用同一私钥打包才能正常覆盖安装
注意事项
- 本地加载的扩展每次启动Chrome时会弹出「开发者模式扩展已启用」的提示,属于正常机制,直接关闭即可,无其他使用影响
- 修改扩展功能时直接编辑本地文件夹内的源码,修改完成后到
chrome://extensions/页面对应扩展卡片下点击刷新按钮即可生效,不需要重新加载 - 不要删除存储修改版源码的本地文件夹,否则扩展会直接失效
内容的提问来源于stack exchange,提问作者user2194805
相关产品推荐
相关产品推荐

