Browser Extension Store Compliance
浏览器扩展商店:上架要求 / 政策红线 / 技术坑汇总
覆盖 5 个主要扩展分发渠道——Chrome Web Store、Microsoft Edge Add-ons、Firefox 附加组件商店 AMO、Safari(经 App Store)、Opera 附加组件商店。每条规则尽量追溯到官方开发者文档(标注 L1=官方文档 / L2=开发者自述或官方通知 / L3=第三方整理),并针对「起始页 / 新标签页 + AI 调用」这类产品标出专门红线。
- 报告更新点
- 2026-09-22 11:05v2:S7 每条红线补「依据(完整 URL)」列 + 5 条真实案例链接(v1 2026-09-22 10:14)
- 覆盖渠道
- 5 个商店Chrome / Edge / AMO / Safari / Opera
- 内容结构
- 要求 + 拒审码 + 技术坑共 9 个章节,可勾选清单见 S9
- 可信度分级
- L1 官方文档 / L2 官方通知·自述 / L3 第三方整理每条表格均有标注
- 适用产品
- 起始页 + 侧边栏 + 右键菜单兼看「多 AI 对比」形态
S1摘要与五家商店速览
五家商店的共同底线并不复杂:代码全部打包进产品、权限最小够用、列表描述与实际行为一致、收数据必须披露并获得同意、单一用途。真正的差异在「谁能上架」和「多久能过审」。
| 商店 | 开发者账号 / 费用 | 包格式 | 清单版本要求 | 审核方式与时长 | 是否要交源码 | 依据等级 |
| Chrome Web Store | 开发者账号 + 一次性 5 美元注册费;必须开启两步验证;需验证联系邮箱 | zip(根目录含 manifest) | 必须 MV3;MV2 条目已于 2026-08-31 从商店移除 | 自动 + 人工;官方称 90% 在 3 天内;宽权限 / 新账号可延至数周 | 否,但禁止混淆,压缩可读即可 | L1 / L2 / L3 |
| Microsoft Edge Add-ons | 免费注册(官方明言无注册费);需 Microsoft 账号为主所有者,个人 / 公司两种账号类型 | zip,经 Partner Center 上传 | Chromium 扩展,极少改动即可移植;MV3 为主流 | 人工认证(certification);第三方经验约 3–7 个工作日 | 否;但必须在隐私页声明是否使用远程代码 | L1 / L3 |
| Firefox AMO | 免费;需 Mozilla 账号 | zip / xpi / crx,单包上限 200MB | WebExtension API;支持 MV3 | 自动校验打底,任何版本随时可能被人工复审;签名通常 24 小时内,人工复审更久 | 是(经压缩 / 打包工具时必交,含构建说明与依赖) | L1 |
| Safari(App Store) | Apple Developer Program,99 美元 / 年;必须有 Xcode | 扩展必须包在宿主 App 内并签名 | Safari Web Extension(WebExtension 变体) | App Review;第三方经验 1–7 天(均值约 3 天) | 以 App Store 规则为准;不因压缩单独要求 | L1 / L3 |
| Opera 附加组件 | 免费;开发者账号即可提交 | zip / nex(现行文档以 zip 为准) | 基本兼容 Chromium 扩展 | 人工审核 + 三平台(Windows / Mac / Linux)功能测试;无 SLA | 是(混淆必须提供未混淆源码与复现步骤,且优先级降低) | L1 |
五条最该先记住的结论
- 起始页产品有一条专属红线。所有起始页 / 新标签页形态都要遵循所属商店的搜索与起始页规则,Opera 明令禁止替换其默认起始页——详见 S7。
- 「一切远程代码」是跨商店共识的硬禁区。把第三方统计 SDK 当作普通网页引入、或在运行时 eval 远端字符串,都是直接拒审项(Chrome 拒审码 Blue Argon)。
- 压缩可以,混淆不行;工具链开源才有资格过 AMO 与 Opera。AMO 要求构建工具必须是开源或永久免费且能在 Windows / macOS / Linux 上跑。
- 权限申请必须能在代码里被找到对应调用。Chrome 拒审码 Purple Potassium 专门打「为未来功能预留权限」,MV3 时代
storage 与 IndexedDB 的取舍也是送分题。
- 上架后不是终点。Firefox 随时复审、Chrome 周期性复审并可能下架;引入新权限的更新会被当作新提交重审。
S2Chrome Web Store:要求、拒审码、素材规格
五家里最制度化的一家:它有公开的开发者计划政策、公开的违规排查页,甚至给每类违规起了「颜色 + 化学元素」代号。先建 https://chrome.google.com/webstore/devconsole/ 项目,再按下面三张表的顺序自检。
2.1 硬性要求
| 项 | 要求 | 不遵守的后果 | 依据 |
| 注册费与账号 | 一次性 5 美元;Google 账号必须开启两步验证;联系邮箱需验证(拒审 / 警告邮件都发到这里) | 无法新建或更新条目 | L3(2026 上架清单整理) |
| 清单版本 | 必须 "manifest_version": 3;MV2 扩展已在 Chrome 138 全渠道停用,2026-08-31 起从商店全部移除 | 直接拒审:「Extensions using Manifest V2 are no longer accepted」 | L2(Chrome Web Store 官方邮件通知) |
| 单一用途 | 一个扩展只能有一个「窄而易懂」的用途;不同用途应拆成不同扩展 | 拒审码 Red Magnesium / Red Copper / Red Lithium | L1(Chrome 违规排查页) |
| 新标签页搜索 | 新标签页若提供网页搜索,必须尊重用户现有搜索设置并使用官方搜索 API;改动默认搜索体验与替换任一浏览器默认页(override page)均属「可独立存在的用途」,不可与其他功能混装 | 拒审;替代方案见 S7 | L1(Chrome 单一用途 FAQ) |
| 远程代码 | 禁止执行包外代码(远端 script 标签、对远端字符串 eval、远端下发的解释器) | 拒审码 Blue Argon | L1 / L3 |
| 代码可读性 | 可以压缩(minify),不可以混淆;base64 或字符编码包裹也算违规 | 拒审码 Red Titanium | L3 |
| 用户数据 | 显著披露 + 事先取得同意 + 安全传输;只能为单一用途采集数据 | 拒审码 Purple Nickel / Purple Copper / Purple Lithium | L1 |
| 账号额度 | 每个开发者账号上限 20 个已发布条目 | 无法再发布新条目 | L3 |
2.2 拒审代号速查(Chrome 用「颜色 + 元素」标识违规类别)
| 代号 | 含义 | 常见触发 | 修复动作 |
| Blue Argon | MV3 远程托管代码 | HTML 里外链 script;对接口返回串执行 eval;把远端配置当代码解释执行 | 所有 JS 打进包;远端只返回数据(JSON),不带逻辑 |
| Purple Potassium | 权限过多 | manifest 里声明了没有对应调用的权限;用了比功能需要的更宽的模式 | 删除闲置权限;宽模式换具体站点;改申 optional_permissions 运行时再要 |
| Yellow Magnesium | 功能跑不起来 | 审核员按描述操作但未复现;依赖登录态却没给测试账号 | 在审核备注里给演示路径 / 测试账号;剔除隐藏开关 |
| Yellow Zinc | 元数据不足 | 描述没讲清功能;列表与权限声明对不上 | 补描述、补截图、补权限说明 |
| Red Magnesium / Copper / Lithium | 单一用途违规 | 多个不相关功能打包(例:下载管理器 + 计算器) | 拆扩展;或把所有入口收敛到一个用途叙事 |
| Red Titanium | 代码混淆 | 把源码做成不可读形式 | 用常规 minify,保留可读性 |
| Red Zinc | 欺骗性安装 | CTA 没写明「这是安装扩展」;落地页 / 推广页含糊 | 所有按钮写明安装行为;广告与推荐页同样适用此规则 |
| Purple Nickel / Copper / Lithium | 用户数据:醒目披露 / 安全传输 / 其他 | 隐私政策缺失;明文传输;先收后说 | 政策页面上 + 产品内披露 + 同意 + HTTPS |
| Yellow Argon / Nickel | 关键词堆砌 / 垃圾内容 | 标题与描述塞大量无关热词 | 写人话;标题前置品牌词 |
| Grey Titanium | 联盟广告类违规 | 联属导流未披露或形式不当 | 显性披露 + 入口可关闭(见本报告主报告的「联属收益变现」章节) |
代号是「类别索引」不是诊断结论;接到拒审邮件后先按代号定位政策条目,再回包内自查。完整排查页见 https://developer.chrome.com/docs/webstore/troubleshooting/。
2.3 素材与字段规格
| 素材 / 字段 | 规格 | 坑点 |
| 图标 | 128×128 PNG(列表用,与 manifest 内图标分开上传);96×96 图形 + 四周各 16px 透明留白 | 用截图缩放代替会被打回 |
| 截图 | 1–5 张,1280×800(推荐)或 640×400;PNG 或 24 位 JPG,不带 alpha 通道 | 截图内容与描述功能不一致是高频拒审点 |
| 小推广图 | 440×280,强烈建议提供 | 缺失影响搜索排名与推荐位 |
| 大横幅 | 1400×560,进精选位需要 | 只在被推荐时必需,提前备好 |
| 名称 | 上限 75 字符 | 搜索结果磁贴约 35 字符即截断,品牌词前置 |
| 简介 | 132 字符,直接出现在搜索结果 | 写「用户收益」而非实现细节 |
| 隐私政策 | 必须可公开访问的 URL;处理个人数据即要求(建议无数据也提供) | 通用模板 / 与实际行为不符会被判定披露不足 |
| 隐私实践表 | 单一用途一句话 + 逐权限理由 + 数据类别勾选 + 合规勾选 | 大多数拒审其实出在这张表没填满 |
更新与版本机制(必知)
- 每次上传版本号必须递增(按点分数字比较,1.2.0 → 1.10.0 合法);不能回退到曾用过的版本号。
- 新增权限的更新会按新提交的同等强度复审;纯净代码更新可能几分钟内自动过。
- 已发布条目随时可能被周期性复审,甚至下架——保持联系邮箱有效。
- 发布可见性可选:公开 / 不公开(仅直链可装)/ 私有(限定 Workspace 账号或群组)。
S3Microsoft Edge Add-ons:Partner Center 八步流程
Edge 是 Chromium 系里迁移成本最低的一家(同一份包几乎能直接传),但它的提交流水答own在 Partner Center,字段比其他商店多。注册与提交均免费,官方明说无注册费。
| 步骤 | 要做什么 | 关键字段 / 坑点 |
| 0. 注册开发者 | 用 Microsoft 账号(MSA)作为 Partner Center 主要所有者,选个人 / 公司并完成验证 | 不支持用工作或学校账号注册;部分字段注册后只读(国家 / 地区、账号类型) |
| 1. 准备原型与 zip | manifest 内的 name / description / 默认语言会被带到列表页 | 这些字段在列表页只读,写错只能改包重传 |
| 2. 新建扩展条目 | 拖入 zip | 校验失败要先修再传 |
| 3. 可用性 | 可见性与市场 | 选错市场会缩小曝光 |
| 4. 属性 | 分类(必填)、官网、支持联系方式、是否含成人内容 | 官网必须指向自有站点,不能填商店列表地址 |
| 5. 隐私信息 | 是否访问 / 收集 / 传输个人信息;必填隐私政策 URL | 勾选「否」但事后被发现处理个人信息,直接导致认证失败 |
| 6. 隐私页四项 | 单一用途 / 权限理由 / 是否使用远程代码 / 数据实践认证 + 隐私政策 | 官方已把隐私信息独立成页,2026-05 起逐步全量开放给用户 |
| 7. 多语言列表 | 逐语言填名称、简介、描述、截图、搜索词、可选视频 | 支持一个 objęzy语言 ↔ 多语言的资源复制 |
| 8. 认证说明与提交 | 填写测试说明并提交 | 若被判定为潜在恶意件会进入专门流程 |
Edge 的特性与坑
- Featured 徽章:按 Microsoft 对安全、隐私、性能与体验的最佳实践自动评估获得,非安全背书;缺少徽章不代表不安全。
- 发布 API 自动化:需 Client ID + API Key + Product ID;Product ID 是小写 GUID,不是列表 URL 里的大写 Store ID;API Key 只显示一次、约 72 天过期,需要轮换。
- 审核时长:第三方经验约 3–7 个工作日;每次更新都会重新认证。
- AI 生成描述:Partner Center 提供 AI 生成简介能力,使用时应复核内容,责任仍在开发者。
S4Firefox AMO:签名、源码提交与四类审核
AMO 的门槛不在钱而在「可复核性」:所有扩展必须经 Mozilla 签名才能装进正式版 / Beta 版浏览器,而签名的前提是审核员读得懂你的代码。
4.1 签名与分发
| 机制 | 说明 | 影响 |
| 强制签名 | 无论上架 AMO 还是自行分发(unlisted),都要先签名 | 自行分发不等于绕过审核 |
| 包体积上限 | 200MB | 超限直接校验不过(视频素材 / 大模型文件尤需注意) |
| 无需签名的情况 | 字典类不需要;开发者版 / Nightly / ESR 可用 xpinstall.signatures.required 关闭校验 | 仅可做开发自测,不可作为分发方案 |
| 提交方式 | 网页上传、web-ext sign、AMO API(v8 起支持首次提交与更新,覆盖上架与自行分发) | 适合做 CI 自动化 |
| 随时复审 | 通过后任何时候都可能被人工复审,历史版本也可能被拒或拉黑 | 不要指望「过审即安全」 |
4.2 源码提交:什么时候必须交、交什么
必须提交源码包的情况
- 使用了压缩 / 混淆工具(如 uglifyJS、Closure Compiler);
- 用打包 / 单文件生成工具(如 browserify、webpack 类 bundle 步骤);
- 任何「多文件进、预处理、产出文件出」的自定义工具链;
- 包含二进制组件(插件、 applet、js-ctypes 动态库等)。
额外要求:用于压缩 / 混淆 / 构建的工具必须是开源或永久免费,且能在审核者的 Windows / macOS / Linux 机器上跑起来;第三方库必须来自官方站点或仓库、不得修改,已压缩的需附源码链接;每个版本都要附最新源码;必须附 README 说明从源码到 xpi 的完整命令,且生成的产物与上传包必须逐字节一致(审核者会用 diff 验证,不一致不仅拒绝还可能牵连信任)。未简化第三方库、已知系统库则可免交,给链接即可。
4.3 审核通道差异
| 通道 | 适用 | 审核强度 | 代价 |
| 上架 · 完整审核 | 公开列表,希望获得最佳权重 | 全代码审核 + 功能测试,最高门槛 | 耗时最长;换来搜索最优先和安装最顺滑 |
| 上架 · 初步审核 | 公开列表但功能简单 | 代码审核,一般不做功能测试 | 展示权重低,安装前会向用户提示潜在质量问题 |
| 自行分发 · 网页安装 | Beta 或限定受众 | 自动校验通过即可,失败才转人工 | 需自行分发与更新 |
| 自行分发 · 侧载安装 | 由安装器装到浏览器 | 接近上架级全代码 + 功能测试 | 必须自建更新机制 |
- 列表项上限:最多选 2 个 Firefox 分类、2 个 Android 分类;支持邮箱与支持网站建议都填。
- 必须勾选的开关:有数据外传时必须提供隐私政策;需付费 / 非自由服务才能完整使用的要勾选;未成熟的可以打「实验性」标记降低曝光。
- 名字相近会被挡:AMO 列表 URL 必须唯一,重名会被要求改名。
S5Safari:必须包一层 App,且 API 缺口最大
Safari 的分发逻辑与其他四家完全不同:不是「上传 zip」,而是「提交一个含扩展的 App 上架 App Store」。成本最高,但它是唯一能触达 iOS / iPadOS 用户的渠道。
| 环节 | 要求 | 说明 |
| 账号 | Apple Developer Program,99 美元 / 年 | 这是前置条件,没有账号无法签名 |
| 工程转换 | 用 Xcode 命令行工具 safari-web-extension-converter 生成 Xcode 工程 | 需要 Mac 与 Xcode,建议在产品设计期就考虑,不要事后补 |
| 打包方式 A | Xcode 归档 → App Store Connect 上传 | 传统方式 |
| 打包方式 B | Safari Web Extension Packager(Xcode Cloud) | 免 Xcode 打包;占用会员每月 25 小时 Xcode Cloud 额度 |
| Beta | TestFlight(iOS / visionOS 推荐);macOS 可发未签名副本让用户手动允许 | macOS 未签名扩展需要用户在 Safari 里开启允许未签名扩展 |
| 审核 | App Review,第三方经验 1–7 天(均值约 3 天) | 受 App Store 审核准则约束,扩展类另有设计条款 |
| 站外分发 | macOS 可用 Developer ID 签名 + 公证(notarization),绕开 Mac App Store | 仍要有付费会员 |
Safari 的 API 缺口(做 Chromium 移植前先看这里)
| 能力 | Safari 情况 | 对方案的影响 |
| webRequest | 完全不支持(连变体都没有) | 依赖请求拦截的能力要重构为 declarativeNetRequest 或放弃 |
| declarativeNetRequest | 部分支持,需逐类规则实测 | 不要假设与 Chromium 行为一致 |
| storage.session | 2026 年初仍不支持 | 会话状态需另找容器 |
| 侧边栏 | Chromium 的侧边栏能力并非通用标准 | 「侧边栏」形态在 Safari 需要替代交互设计 |
| storage 跨端 | sync 走 iCloud,覆盖 Mac 与 iOS | 这是 Safari 的加分项,可替代自建同步后端 |
注意:以上差异条目主要来自第三方年度整理(L3),开发前请以 https://developer.apple.com/documentation/safariservices 的当前版本为准逐项验证。
宿主 App 不能是空壳
扩展必须被包装在一个 App 里,而 App Store 对这个空 App 有最低要求:通常做法是在 App 内提供「如何启用扩展」的说明页或必要设置界面。评审也会沿用 App Store 准则中的扩展设计条款——权限范围与 App 核心用途要对得上,元数据不能暗示没有实现的行为,评审备注要写清启用步骤与测试条件。
S6Opera 附加组件:条款最短,红线最具体
Opera 的验收标准文档篇幅不大,但句句有牙——它对「起始页」和「联属导流」两件事写得比其他任何商店都直白。做起始页产品的人必须先看它。
| 规则(原文意译) | 类型 | 对本项目的含义 |
| 扩展不能替换 Opera 的默认起始页 | 硬红线 | 起始页产品在 Opera 商店基本没有空间,只能做不替换默认页的其他形态 |
| 不能只是「一个链接到网站的按钮 / 弹窗」 | 硬性 | 必须有实质转换或多信息展示 |
| 单一目标政策;浏览器按钮只能服务主功能 | 硬性 | 「起始页 + AI + 页签」的 bundle 描述在 Opera 会吃亏 |
| 不得有外部 JavaScript | 硬红线 | 与 MV3 一致,但 Opera 自己单独写了一遍 |
| 代码不得混淆或压缩(第三方库除外) | 硬性 | 若必须混淆,要提供未混淆代码下载链接与复现步骤,且会被降优先级处理 |
| 不得有多余文件、冗余权限或多余 manifest 项 | 硬性 | 提交前做一次文件与权限清单核对 |
| 不得改动推荐参数(referral)、不得干扰 Opera 的变现机制或截流 | 硬红线 | 对联属变现模型直接杀伤:改跳转参数、替换他人联盟 ID 一律不可行 |
| 内容脚本里不得放广告 | 硬性 | monetization 只能走合规路径 |
| 不得未经授权收集私人信息,不得用异步请求把私人数据发到外部存储 | 硬性 | 默认本地优先是最省事的做法 |
| 隔行扫描(interlaced)PNG 不支持 | 技术坑 | 截图 / 图标导出时要关掉 interlaced 选项,否则图 CDN 库解析失败 |
| 各级图标风格需一致;图标不能只是色底 + 文字;地址栏内图标不能是锁形 | 素材 | 早期就该出一套规范 icon |
| 不得在标题里含「Opera」或暗示由 Opera 出品;不得影射第三方公司出品 | 品牌 | 「X 增强器」应写成「Improver for X™」这类表述 |
| 第三方库必须原样、来自官方站点或 CDN,并保持无已知漏洞的版本 | 供应链 | 魔改依赖会被拒 |
| 默认授权:未附 EULA 时按 CC BY-NC-ND 4.0 授权 | 法务 | 想要别的授权必须显式附 EULA |
流程侧:提交后由版主逐条比对验收标准,通过再做三平台(Windows / Mac / Linux)功能测试;拒绝后改完点 Upgrade 重新提交。没有 SLA,排期要留buffer。
S7起始页 / 新标签页类产品的专门红线
这一节是把前面分散的规则按「如果你做的是起始页 + AI 入口」重新排一遍。也是本项目最该照着做设计评审清单的一节。
把「合规」前置到信息架构里
起始页产品最容易踩的不是技术,而是「叙事越界」——一个 Column 里同时讲美化、页签、多 AI,审核员就会读到多个用途。推荐做法:对外只讲一个用途,把其余能力写成该用途的支撑能力;同时在商店后台把「单一用途」一句话写短、写死,所有截图与描述都不偏离它。
S8技术坑清单(跨商店通用)
按「运行时 / 代码与 CSP / 第三方站点嵌入 / 权限 / 存储与同步 / 版本与更新 / 素材与列表 / 变现合规」八组整理,每组给出现象与规避动作。
8.1 MV3 运行时
| 坑 | 现象 | 规避 |
| Service Worker 会被回收 | 内存变量丢失、定时任务静默失效、WebSocket 断连 | 状态一律落 chrome.storage;周期任务用 alarms;长时间连接的心跳要自行重建 |
| 持久化后台页不存在 | 沿用 MV2 写法导致首启慢、后台缺失 | 按事件驱动重写;所有初始化都要幂等 |
| webRequest 拦截能力被削 | 原来靠阻塞式请求改写的功能失效 | 改用 declarativeNetRequest 的规则集;注意 Safari 支持面不同 |
| 异常没人看见 | SW 抛错后功能静默停止,用户只体感「不好用」 | 全局错误边界 + 上报(上报走 HTTPS 接口,不要引远端 SDK) |
8.2 远程代码与 CSP
| 坑 | 现象 | 规避 |
| 远端 JS / eval / new Function | Chrome Blue Argon、Opera 明文禁止 | 全部逻辑进包;远端只回数据 |
| 第三方统计 SDK 直连 | SDK 安装片段是远端 script,装不上;改造后数据链路断裂 | 改用服务端测量协议(走 HTTPS 上报),或自研轻量埋点 |
| MV3 CSP 禁内联脚本 | popup / options 页里内联 handler 失效 | 事件绑定写进打包脚本;页面内资源走 chrome.runtime.getURL |
| 混淆/压缩的边界 | Chrome 判 Red Titanium;AMO 与 Opera 要求补源码 | 只做 minify;AMO 场景附源码包 + README + 可复现构建 |
| web_accessible_resources 未声明 | 页面拿不到扩展内的图片 / 脚本,报「资源不存在」 | 显式声明资源与匹配模式,引用统一用 getURL |
8.3 嵌入第三方 AI 站点(多模型对比类形态)
| 坑 | 现象 | 规避 |
| 目标站点禁嵌套 | 响应头含 X-Frame-Options 或 CSP frame-ancestors,iframe 直接空白 | 提前探测目标站点;fallback 到侧边栏 / 新窗口方案 |
| 目标站点 UI 改版 | 选择器 / DOM 结构变化,注入脚本全挂(本调研中 AI 比一比、ChatBrawl、AI 圆桌均依赖对方页面) | 做站点适配层 + 单点失效不影响整体;建立改版监控与快速修复流程 |
| 登录态与风控 | 需要用户自行登录;频繁操作触发验证码 / 风控 | 明示「复用你自己的登录态、不代持账号」;敏感动作保留人工确认,不做批量爬取 |
| 权限与站点的平衡 | 为转 многих站点申请宽权限会招来人工复审 | 按站点逐个申Host 权限或用 optional_host_permissions 运行时申请 |
| 跨域请求流向 | 扩展页发起的跨域请求需 Host 权限;内容脚本受页面 CSP 约束 | 网络请求放后台 / SW,页面侧只做消息传递 |
8.4 权限最小化
| 常见误解 | 实际口径 | 建议 |
| activeTab 能给当前标签持续访问权 | 只在用户主动唤起扩展时临时授权,不提供被动访问 | 用 activeTab 替代宽权限 |
| 用了 tabs API 就要申 tabs 权限 | 只有读 url / title / favIconUrl 等字段才需要;已有的宽 Host 权限本身覆盖这些数据 | 按实际读取字段决定 |
| 存数据就要申 storage | 只有 chrome.storage 需要;IndexedDB 与 Web Storage 不需要 | 纯本地大对象可走 IndexedDB,顺便减少权限声明 |
| 先申请着以后可能用 | Chrome 明确禁止「为未实现功能预留权限」 | 每次发布做一次权限审计,删掉无调用的项 |
| 消息通道是安全的 | 外部页面可以发消息给未校验来源的监听者 | 每个 onMessage 都校验 sender.id 与消息结构 |
8.5 存储配额与多端同步
| 容器 | 容量 / 条件 | 适用 | 坑 |
| storage.local | MV3 默认约 10MB,申 unlimitedStorage 可提升 | 壁纸缓存、本地历史 | 大对象不持久化会有清理风险 |
| storage.sync | 总量约 100KB、单项约 8KB,且有写入频率限制 | 小体积设置跨设备 | 装不下历史 / 附件;高频写会被节流 |
| IndexedDB | 按浏览器磁盘配额,持久化需用户授权 | 历史、离线数据 | Safari 的行为需实测 |
| iCloud 同步(Safari) | sync 走 iCloud,覆盖 Mac 与 iOS | Apple 生态内多端 | 与其他平台的同步体系不互通 |
| 自建后端 | 需账号体系、冲突处理、增量与限流 | 历史 / 收藏 / 提示词库 | 同步 = 上传,隐私叙事与合规成本同步上升 |
8.6 版本、更新与 Listing
| 坑 | 现象 | 规避 |
| 版本号必须递增且不可复用 | 线上出问题时无法「退回」到旧版本号 | 用新版本号发布「功能回退」版本 |
| 新增权限触发重审 | 功能更新被当成新提交,可能几周 | 权限一次到位或走运行时申请 |
| 描述与行为不一致 | 截图演示的功能包里没有,或反之 | 发布前让一个人按描述走一遍 |
| 关键词堆砌 | Chrome Yellow Argon | 标题与描述写人话 |
| 图不规范 | 带 alpha 通道的截图、interlaced PNG(Opera 直接不支持) | 导出时统一「无隔行 + 无 alpha」 |
| 破解自动化凭证过期 | Edge API Key 约 72 天过期;AMO 凭证需 JWT | 设轮换提醒;CI 里用环境变量 |
8.7 变现合规
- 联属必须显性披露,做成可关闭的独立模块;Referrer / 参数改写类做法在 Opera 明文禁止,在其他商店也属高风险。
- 内容脚本里嵌广告在 Opera 直接不合格;起始页第一屏的隐性广告会放大信任风险。
- 付费与服务条款必须在商店侧同步声明(AMO 有「需付费 / 非自由服务」勾选项),并在产品内给出退款与订阅管理路径。
- 支付通道与订阅:接钱就要处理退款口径、税务与消费者保护条款,建议先做「免费 + 联属」验证需求,再上订阅。
S9提交前检查清单(可直接照做)
- 先定用途一句话:能在一句话内说清,且截图、描述、权限、隐私披露表单全部对齐这句话。
- 删权限:逐个对照代码确认有调用;确认宽泛匹配模式(如全站通配)都已换成具体站点或可选权限。
- 删文件:包内无未使用资源、无 source map、无遗留 demo。
- 全量打包:构建产物里 grep 一遍
src="http、eval(、new Function(,确认零命中。
- CSP 落到位:扩展页实现为仅
script-src 'self'、object-src 'none'。
- 消息校验:所有监听校验来源与消息结构。
- 异常兜底:SW 有全局错误边界;所有定时任务走 alarms。
- 隐私就绪:隐私政策页可访问 + 产品内披露 + 同意 + HTTPS;AMO / Edge / Chrome 的隐私表全部填满。
- 起始页专属核对:搜索接官方 API;不做可选新标签页;不涉及改默认搜索;Opera 渠道形态已调整。
- 素材齐备:128×128 图标、规范截图(无隔行、无 alpha)、推广图;标题与简介字符数合规。
- AMO 专用:如需提交源码,准备 README + 开源工具链 + 依赖说明,并本地复现一遍确认产物一致。
- Safari 专用:宿主 App 有真实内容页;完成 storage、declarativeNetRequest、webRequest 差异项实测。
- 审核备注:写明功能路径、是否需要登录、测试账号、demo 视频链接。
- 版本号:确认严格递增且未曾用过。
- 发布节奏:新{array}账号或含宽权限的提交预留数周;错开活动与投放档期。
- 上线后运维:盯 review 邮箱(加入白名单)、盯评分与评论、准备热修版本。
一句话总结
把「合规」当成产品的第一条功能需求来做:它决定了叙事怎么定、权限怎么申、多少 AI 站点被依赖、以及能不能在 Opera 上架。
S10来源(按商店分组,均为完整可点 URL)
Chrome Web Store
Microsoft Edge Add-ons
Firefox AMO
Safari / App Store
Opera 附加组件
跨商店流程对照
可信度与免责声明
- L1=商店或浏览器官方文档(MDN / 微软学习平台 / 苹果开发者文档 / Chrome 开发者文档 / Opera 开发者站点);L2=官方通知或开发者自述;L3=第三方整理与实践经验。
- L3 条目(尤其审核时效、Safari 的 API 缺口、政策执行口径)随时间漂移较快,落地前请以对应官方文档的当日版本为准。
- 涉及资金往来的条款(证书、退款、税务与出口管制)建议由法律 / 合规岗再确认一遍。
- 本文件仅为政策与技术整理,不构成合规承诺;具体能否上架以各商店审核结论为准。