同意预检:发布前检查清单
为什么要这样教: Vibe Coding 让一个下午就能上线一个应用变得很容易,但也同样容易招来官司。常见的陷阱是追踪像素(Meta、Google、TikTok)在页面打开那一刻就开始运行。在加州,未经同意的追踪可能被视为窃听,每次违规最高罚款 5,000 美元。如果像素在用户点击横幅之前就触发,那么 Cookie 横幅并不能保护你。有横幅和等待许可是两件完全不同的事情。 解决方法就是给你的 AI 构建工具一个指令,并确认它已生效。
一个必须记住的提示: “确保所有追踪像素、分析工具或第三方脚本在用户点击 Cookie 横幅上的‘接受’之前都不会加载。”
这不是法律建议。它能捕捉常见的高代价错误,但不做任何认证。
10 项检查
在一个全新的、无 Cookie 的标签页中运行预览或真实 URL(Claude 内置浏览器:清除存储,然后在任何点击之前使用 read_network_requests),如果可以获取代码,还要进行代码扫描:
python3 ~/.claude/skills/consent-audit/scripts/scan_trackers.py <app-dir>
| # | 检查项 | 通过标准 |
|---|---|---|
| 1 | 全新访问,无点击: 是否向任何广告/分析/回放域名(facebook, google-analytics, googletagmanager, tiktok, licdn, hotjar, clarity, posthog, segment, heycatch…)发送了请求? | 无 |
| 2 | 点击前有 Cookie: 是否存在 _ga、_fbp、_gcl_au、_ttp、_hj*、ph_* 等? | 无 |
| 3 | 宿主附加组件已关闭或受控: Lovable Visitor analytics、Vercel/Netlify/Cloudflare 分析服务、网站构建器的像素字段 | 已关闭,或已受控 |
| 4 | 拒绝生效: 点击拒绝,浏览 2 个页面,没有任何可选追踪触发 | 是 |
| 5 | 横幅公平性: 接受和拒绝按钮同样醒目;开关默认未选中。如果没有任何可选追踪器,则无需横幅(直接不需要) | 是 |
| 6 | 回退路径: 页脚提供“隐私选择”链接,用于更改或撤回同意 | 是(如果有横幅) |
| 7 | 追踪器不接收身份信息: 使用测试账户登录;追踪请求中不含邮箱或用户 ID | 无发送 |
| 8 | 发送出去的 URL 中不含秘密: 追踪请求中不含 ?code=、?token=、?email= 或搜索文本 | 无 |
| 9 | 隐私声明: 公开页面,链接在页脚和注册页,列出真实供应商和真实联系方式 | 是 |
| 10 | 发布范围: 你知道此版本将发布的所有未发布更改 | 已列出并确认 |
结果
PREFLIGHT: <应用名称> - <通过 / 先修复> (<日期>)
1 ✅/❌ ... 10 ✅/❌ (每项一行证据:发现的域名、找到的 Cookie,或“无”)
先修复:<失败的检查项,按风险排序:1、7、2、3 优先>
- 全部通过: 发布,然后在真实 URL 上重新运行检查 1、2 和 4。托管服务可能会添加预览中没有的脚本。
- 1-4 或 7-8 中任意一项失败: 不要发布。运行
consent-audit进行完整清单盘点,然后运行consent-gate(或移除追踪器)。 - 仅 5、6 或 9 失败: 使用
consent-gate的横幅/声明部分修复,然后发布。
教学笔记(面向学生)
- 眼见为实: 在新标签页中打开他们的网站,打开开发者工具 → 网络,过滤“facebook”或“google”,刷新页面,让他们亲眼看着像素在他们碰到横幅之前就触发了。那一刻会让教训深植于心。
- 更少的追踪器就是简单的胜利。 如果他们还不需要运行广告,就不需要像素。没有追踪器 = 没有横幅 = 没有风险。
- 分析与自有数据: 关闭追踪器不会删除应用为用户保存的数据(账户、进度、表单答案)。那是第一方数据,受隐私声明管辖,而非 Cookie 横幅。
- 课程和视频网站: 在播放视频的页面上放 Meta 像素会带来额外的联邦风险(VPPA)。保持像素远离课程页面。