重新导入本地扩展时保持 ID 不变
了解未打包扩展的 ID 为什么会变化、MaskPilot 如何在重新导入时保留原身份,以及哪些操作本来就会生成新 ID。
更新于 2026年10月10日未打包的浏览器扩展被移动、复制或作为另一个扩展加载后,可能得到不同的 ID。当网站、其他扩展或外部集成只认可一个扩展来源时,这个变化会直接影响工作流。在 MaskPilot 中,从已有本地扩展详情页执行重新导入与再次导入一个新扩展不同:重新导入会保留已有的受管身份。
未打包扩展的 ID 为什么会变化
浏览器根据扩展的身份信息派生扩展 ID。Chrome 官方的 Manifest key 说明指出,固定的公钥可以让开发阶段加载的扩展保持一致 ID。
没有固定身份时,从另一个位置加载相同源码也可能产生不同 ID。ID 变化可能影响:
- 只允许某个
chrome-extension://来源的集成; - 获准网站或其他扩展发送的消息;
- 扩展资源的访问规则;
- 使用扩展 ID 定位问题的排查记录。
名称和版本相同,不能证明两个扩展条目具有相同身份;应比较实际扩展 ID。
MaskPilot 在重新导入时保留什么
首次导入时,MaskPilot 会为已经审阅的文件夹或 ZIP 创建受管副本。若 Manifest 已包含有效身份键,受管副本会使用该身份;若没有,MaskPilot 会为受管副本创建身份,而不是依赖来源文件夹的路径。
从已有本地扩展详情页选择重新导入时,MaskPilot 会先复用该扩展当前的身份,再保存替换包。来源路径和版本可以变化,但受管身份仍属于原扩展条目,已有账号选择也会保留。
MaskPilot 不会把生成的身份写回原始来源文件夹;它属于当前设备上的受管副本。重新导入前应关闭所有正在使用该扩展的账号,避免运行中的浏览器进程继续依赖旧扩展包。
判断哪些操作应当保持 ID
| 操作 | 预期身份结果 |
|---|---|
| 从已有本地扩展详情页重新导入 | 保留原有受管身份 |
| 导入已包含有效固定 key 的扩展包 | 使用扩展包身份 |
| 将没有 key 的扩展包作为新本地扩展导入 | 创建新的设备本地身份 |
| 删除没有 key 的本地扩展后再次导入 | 原受管记录已不存在,因此创建新身份 |
| 在另一台设备导入相同的无 key 来源 | 本地扩展不会同步,因此创建独立身份 |
| 在另一台设备导入带固定 key 的同一可信扩展包 | 使用该扩展包的固定身份 |
需要用新构建替换当前本地扩展时,应使用重新导入。只有确实需要另一个独立管理的扩展时,才执行新的导入。
不改变 ID 地重新导入
- 完成所有使用该扩展的账号中的工作,并完全关闭这些账号。
- 打开扩展,选择已有本地扩展。
- 在详情页选择重新导入。
- 选择替换用的扩展根文件夹或 ZIP 包。
- 核对名称、版本、最低浏览器要求、网站访问、浏览器能力及新增访问范围。
- 确认替换,再启动一个原本已选择该扩展的一次性测试账号。
- 打开浏览器的扩展管理页,将 ID 与重新导入前记录的值比较,并测试依赖扩展来源的工作流。
身份保持不变,不代表可以跳过权限和兼容性检查。扩大到正式账号前,请先完成本地扩展权限检查。
如果看到的 ID 不同
修改 Manifest 前先检查以下边界:
- 确认操作来自已有扩展详情页的重新导入,而不是扩展页的普通导入入口。
- 检查旧条目是否已经被删除。没有 key 的扩展一旦删除,新的导入无法恢复之前的设备本地身份。
- 确认比较的是同一个浏览器账号和扩展条目;两个扩展包可以显示相同名称和版本,却使用不同 ID。
- 完全关闭并重新启动账号,避免检查到仍加载旧扩展包的进程。
- 检查是否存在重复的本地扩展条目,只保留身份和账号选择都符合预期的条目。
不要复制无关扩展的 key、编辑 MaskPilot 受管扩展包,或降低 Manifest 校验要求来强行匹配 ID。若扩展开发者确实迁移到了新身份,应在验证迁移期间将新旧扩展包分开处理,不要把新包伪装成旧包。
如果重新导入无法进入确认页面,请按本地扩展导入失败排查步骤检查。常规包结构和设备边界见导入本地浏览器扩展。
为另一台设备做准备
本地扩展包、生成的身份和账号选择都只保存在导入设备上。如果同一扩展必须在多台设备使用相同 ID,应由可信开发者在扩展包中预先提供有效固定 key,再在各设备导入同一可信包。对于自行开发的扩展,应按上面的官方 key 文档取得身份信息,不要自行编造或借用其他扩展的身份数据。