第七十一章 工作流二十五:数据合规扫描

什么时候用

目标公司有 App、小程序或网站,个人信息是它业务的一部分。三个时点会用到:投前判断这家公司的数据是资产还是负债;申报前补数据合规专项;收购一家靠流量和用户画像挣钱的公司,看它有没有踩线。

这个工作流只解决一个具体问题:它说的和它做的,是不是一回事。隐私政策是自我陈述,抓包记录是行为证据。只审政策,等于让被调查对象自己出题;只抓包不看政策,你不知道哪些行为它本来就没打算告诉你。两样放在一起,差异才有意义。

适用范围要划清。它查的是「声明与行为的一致性」,不查数据出境、数据分类分级、重要数据识别、算法备案。这几项要另开工作流,材料和判断口径都不同:数据出境看安全评估与标准合同那一路,重要数据要看行业目录,算法备案看推荐算法那套文件。别把六件事塞进一个提示词,塞进去它只会给你一份看起来全面、每条都浅的清单。

还有一层容易被忽略:数据合规的结论高度依赖时点。同一款 App,2023 年版和 2026 年版的采集行为可能完全不同,监管口径也在变。所以材料必须带版本号和日期,产出必须标时点。没有时点的数据合规表,在报告里等于没有——读者不知道你说的是哪一版。

指令

你是我的尽调助理,只做提取、比对和列差异,不做合规结论。凡涉及「是否违法」「是否情节严重」「是否取得有效同意」的问题,一律标注「需律师判断」。

【说明】下文 App 名称、版本号、日期、采集项均为占位符,请替换为本项目实际数据。

【材料】
材料一:隐私政策全文(版本号 V__,生效日期 ____,抓取日期 ____,抓取渠道:App 内 / 官网)
材料二:权限清单(Android 与 iOS 分列,含权限名称、申请时机、用途说明文案)
材料三:抓包记录(工具 ____;采集区间 ____ 至 ____;覆盖场景:首次安装启动、注册登录、浏览、搜索、下单、支付、客服、后台驻留、退出后重新唤起)
材料四:第三方 SDK 清单(名称、提供方、版本、用途、初始化位置与时机、是否在隐私政策中披露)
材料五:小程序、H5、公众号的同类材料(如有,分别标注)
材料六:《常见类型移动互联网应用程序必要个人信息范围规定》中与本 App 类型对应的条目(请引用规定原文逐条列出;不确定归类时列候选类别并说明理由,不要硬归)

【任务】
1. 从材料一提取:声明的采集项、收集目的、使用场景、共享或委托处理的第三方、保存期限、用户权利条款。逐项注明在隐私政策第几节。
2. 从材料三提取:实际发生的网络请求与本地读取,按「采集项—发生场景—发生时机—频次—接收方域名」列。
3. 做四张比对表:
   表 A 声明有、本次未见(再分「政策虚列」与「场景未覆盖」两种)
   表 B 实际有、声明无(未披露采集)
   表 C 同意前采集(首次启动、点击同意之前、拒绝授权后仍采集)
   表 D 超必要范围(对照材料六逐项比对)
4. SDK 单列一张表:是否披露、初始化时机、是否在同意前初始化、收集哪些字段、是否含热更新配置。
5. 输出「需律师判断清单」,每条写:争点、涉及材料、还缺什么证据。

【输出】
第一部分:四张比对表,列为:采集项、政策声明(节号)、抓包证据(时间戳与域名)、时机、判定类别、备注。
第二部分:SDK 表。
第三部分:需律师判断清单。
第四部分:抓包盲区(哪些场景、哪些端、哪类采集方式没有覆盖)。

【边界】
- 抓包记录里没有的,写「本次抓包未见」,不写「未采集」
- 隐私政策没写的,写「政策未披露」,不写「未收集」
- 不引用具体法条条号,只写规定名称,条号我自己核
- 每条结论必须能追到材料几、第几节或第几行
- 不要写「建议尽快整改」这类空话,写缺哪份证据、向谁要

它会给出什么

四张表加两张清单。示例数据如下。

采集项政策声明抓包证据时机判定
设备标识(OAID)3.2 节「设备信息」00:00:03 GET api.xxx.com/init?oaid=…首次启动,同意前表 C
应用列表未披露00:00:05 POST api.xxx.com/collect,字段 app_list首次启动表 B
粗略位置3.4 节「附近门店」02:11 浏览页触发,仅前台同意后表 A(场景未覆盖)
通讯录未披露本次未见——
剪贴板未披露本次未见(抓包看不到本地读取)—盲区

SDK 表:

SDK提供方初始化时机收集字段是否披露备注
某统计 SDK某公司Application.onCreate设备标识、应用列表、IP否同意前初始化
某推送 SDK某公司首屏后异步设备标识、厂商通道 token是(3.6 节)含热更新配置
某分享 SDK某公司点击分享时无(仅唤起)是未见异常

需律师判断清单:

序号争点涉及材料还缺什么
1应用列表是否属于实现功能所必需材料三、材料六该功能的实现说明、技术文档;SDK 官方说明
2首次启动即初始化统计 SDK,是否属于同意前收集材料三、材料四SDK 初始化代码位置、启动流程说明
3隐私政策未列该统计 SDK,是否构成未披露共享材料一、材料四数据处理协议、SDK 隐私政策链接

它一般还会在末尾加一句「建议对上述问题进行整改并完善隐私政策」。这句删掉——第三部分已经写了缺什么、向谁要,多这一句只是占篇幅。

要留意它把「本次抓包未见」写成「未采集」。这两个词在报告里的分量完全不同:前者是取证范围的事实,后者是对行为的事实陈述。写错一个词,对方一句「你怎么知道我没采集」就把整段推翻了。

怎么判断

能直接用的:四张表的差异定位、时间戳、域名、SDK 初始化时机。这部分是机械比对,它做得比人快,也不容易漏行。表 B 和表 C 尤其好用——这两张表的价值在于「把没写出来的东西列出来」,人读一百页政策也未必能对上抓包日志。

必须改的:

  1. 「业务必需」不能由它定。要按《常见类型移动互联网应用程序必要个人信息范围规定》逐类比对。该规定按 App 类型分别列举必要信息,比如地图导航类、网络约车类、即时通信类、网络购物类、餐饮外卖类、快递物流类,各自的范围不同;不在列举范围内的,原则上不属于必要信息。它最常见的错误是把行业惯例当必要,比如把通讯录当成社交类 App 的必要信息——规定里没有这一项。
  1. 「同意」要分层次。一般同意、单独同意、书面同意是三套规则。处理敏感个人信息、向第三方提供、公开披露、处理已公开的个人信息,要求各不相同。它会把「隐私政策里写了」当成「已取得同意」,这是两件事:写了是告知,同意要有独立的交互动作和记录。
  1. 时点要卡死。首次启动、点击同意前、拒绝授权后、后台驻留、退出后重新唤起,这五个时点的行为要分开看。抓包时间戳必须能与操作日志对上,否则「同意前」这个结论站不住。它有时会把「首次启动后 5 秒内」一律算作同意前,但用户可能在第 3 秒就点了同意。
  1. 版本要对应。抓包的是 V__ 版本,隐私政策是 ____ 日生效的版本。版本错配,整张表作废。它不会主动提醒这件事,因为提示词里没让它比版本。
  1. 表 A 要拆成两类。政策虚列是「写了但没做」,属于虚假告知;场景未覆盖是「做了但这次没抓到」,属于取证不足。两者风险等级和下一步动作完全不同,它常混成一类。

它做不到的:

追问示例

第一轮:专查 SDK

请只针对第三方 SDK 做一张表:哪些在隐私政策中未披露、哪些在同意前初始化、哪些带热更新配置、哪些嵌在 H5 或小程序里。每条写清证据(代码位置、日志时间戳、配置文件),没有证据的写「未取得证据」。

这一轮的价值在于把 SDK 从「采集项」里单独拎出来。SDK 是数据合规里最容易漏的一块:它不在公司的代码里写采集逻辑,但它在跑;公司说自己没收集,技术上可能真不知道 SDK 收了什么。

第二轮:按规定逐类判定

请把本 App 归入《常见类型移动互联网应用程序必要个人信息范围规定》的类别,列出该类别的必要信息原文,再逐项比对我们抓到的采集项。超出列举范围的单独列出。归类不确定的,列候选类别和理由,不要硬归。

它会给出「本 App 属于网络购物类」这样的判断,附上该类别的条目,然后逐项标「在范围内」「超出」「无法判断」。这一轮的产出可以直接进报告,因为它带了规定的原文,读者能自己核。

第三轮:列盲区

请列出这次抓包没有覆盖的场景、端和采集方式,并说明每一类要怎么补:补抓需要什么条件、大概需要多久、可能拿到什么。

它会给出:iOS 端未抓、小程序未抓、H5 内嵌页未抓、本地读取未覆盖、后台唤醒未覆盖。每一类补抓的条件不同,iOS 要真机加描述文件,小程序要开发者工具或真机代理,H5 要看 WebView 调试开关。这一轮把「取证不足」变成了可执行的补证计划。

常见误用

误用一:只看隐私政策不抓包。

❌「这是目标公司的隐私政策,请审查是否合规。」

政策是它说自己怎么做,不是它实际怎么做。只审政策,你审的是文案水平,不是合规水平。而且政策往往是模板改的,写得越规范,越容易让人放松警惕。

正确做法:政策与抓包同时给,让它做差异表。政策单独看只用于一件事——看它有没有把该说的说了(告知义务的形式审查)。

误用二:把政策写的当实际做的。

❌「政策里写了仅在同意后收集设备信息,这一项没问题。」

这句话只是引述,不是核实。表 C 存在的意义就是打这个假设。实务里最常见的情形是:政策写得很规范,但 SDK 在 Application.onCreate 里就初始化了,同意弹窗还没弹出来,设备标识已经上传。

正确做法:每一项声明都要在抓包里找对应证据。找不到证据的,写「未取得证据」,不写「符合」。

误用三:一套政策比所有端。

❌ 用 App 的隐私政策,去比对小程序和 H5 的采集行为。

App、小程序、公众号、H5 往往各有各的隐私政策,版本还不一致,有的甚至没有独立政策。拿 App 的政策去比小程序的行为,表 B 会全是「未披露」,实际是小程序另有政策,只是你没拿到。

正确做法:分端建表,每端配自己的政策版本。最后再做一张「多端政策一致性」表,看同一项采集在不同端的表述是否冲突——这张表本身就是一个发现问题的入口。

自检