**摘要:**自建访问统计的第一步不是写代码,而是定访客标识------它决定 UV、新老访客、留存这些指标的精度。本文对比第一方 Cookie、LocalStorage、设备指纹三类方案,说清第三方 Cookie 失效后的现实,以及《个人信息保护法》下的合规边界。
收藏提示 建议把本文收进收藏夹:设计访客标识前先按「稳定优先、合规兜底、降级有预案」三原则过方案;正文「Cookie + LocalStorage 双写」与四连测验证法可以直接落地,能少踩大多数数据失真坑。评论区欢迎交流你们的标识方案。
自建统计的访客标识到底要解决什么问题?
**结论:**访客标识要回答一句话:同一个人在不同时间、不同入口的多次访问,怎么被识别成同一个人。它直接决定 UV、新老访客、回访频率、留存这些指标的准确度。
我在做自建统计时先明确了一点:PV 只需要计数,UV 必须依赖标识。没有稳定标识,同一个用户上午和下午访问会被算成两个「访客」,留存曲线会系统性失真。所以标识设计的优先级是:稳定 > 精度 > 成本,稳定永远第一位。
三类标识方案对比:没有银弹
**结论:**第一方 Cookie 是性价比最优的主流方案;LocalStorage 作为 Cookie 被清理时的第二存储层;设备指纹精度高但合规与成本代价大,仅在确有需要时使用。三者可以组合成「多级标识」。
| 方案 | 稳定性 | 实现成本 | 合规成本 | 典型问题 |
|---|---|---|---|---|
| 第一方 Cookie | 高(受清理影响) | 低 | 低(统计分析用途) | 用户清 Cookie、隐私模式、跨设备丢失 |
| LocalStorage | 中高(跨标签页、持久) | 低 | 低 | 不随请求自动携带,需配合上报;清除站点数据时一并丢失 |
| 设备指纹 | 中(环境变化即变) | 高(采集+维护) | 高(个人信息属性) | 指纹漂移、误判、合规风险 |
我的实践经验是「Cookie + LocalStorage 双写」:服务端下发的 uuid 同时写入第一方 Cookie 与 LocalStorage,上报时优先取 Cookie,取不到再取 LocalStorage,两处都没有才生成新标识。这样即使清 Cookie,只要站点数据没被整体清除,访客还能被认回来。
第三方 Cookie 政策时间线
为什么第三方 Cookie 不再是可靠选项?
**结论:**第三方 Cookie 的生存环境已经系统性收缩:Safari 与 Firefox 自 2020 年起默认阻止第三方 Cookie,Chrome 在 2024 年 7 月放弃自动淘汰计划、2025 年 4 月确认改为用户选择模式。任何依赖第三方 Cookie 做跨站识别的方案都不可靠。
这条时间线是公开可查的:
- **2020 年:**Apple Safari、Mozilla Firefox 先后默认阻止第三方 Cookie;
- **2024 年 7 月:**Google 宣布不再推进 Chrome 自动淘汰第三方 Cookie 的计划(9to5Google 等多家媒体报道);
- **2025 年 4 月:**Google 确认维持「用户选择」模式,不强制弹窗,第三方 Cookie 在 Chrome 默认保留(Google 官方说明)。
对自建统计的影响:你面向的用户里,Safari/Firefox 用户已经默认拿不到第三方 Cookie;Chrome 用户未来也可能自行关闭。所以访客标识必须建立在第一方数据上------这是你自己的域名下的 Cookie 与存储,与第三方 Cookie 政策无关。
访客标识多级方案的组成与降级路径
标识生成、存储与续期设计
**结论:**推荐「服务端生成 uuid(Uuid v4)→ 双写下发 → 两年续期」的简单链路:标识尽量不依赖客户端生成,续期策略统一,过期后再生成新标识并保留旧标识的关联。
// 示意代码:访客标识初始化(前端 SDK)
function getVisitorId() {
let id = readCookie('vuid')
if (!id) id = readLocal('vuid') // Cookie 缺失,读 LocalStorage
if (!id) { id = generateUuid(); writeBoth(id) }
else refreshExpiry(id) // 续期:滑过期
return id
}
设计要点:
- **标识值用 UUID 而非自增数字:**避免自增 ID 泄露「第几个访客」的业务信息,也便于跨端合并;
- **服务端下发优先:**首屏请求返回时由服务端种 Cookie(HttpOnly 可选),前端生成只做兜底,保证标识源可控;
- **滑过期续期:**每次访问顺延有效期,活跃用户不会因「两年硬到期」突然变新访客;
- **跨设备不强行合并:**登录用户可以用登录态 ID 关联多设备访客标识,未登录用户不猜测,避免造假关联。
隐私合规边界:标识不是随便种的
**结论:**在国内运营,访客标识相关处理受《中华人民共和国个人信息保护法》约束(2021 年 8 月 20 日通过、2021 年 11 月 1 日施行):标识本身不一定构成个人信息,但当它与行为数据、设备信息组合能识别到个人时,就要按个人信息处理------告知、取得同意、提供删除渠道。
- **告知:**隐私政策里说明收集哪些标识、用于什么统计目的、保留多久;
- **最小化:**统计分析只需要随机标识,不要顺带采集手机号、邮箱等可直连身份的信息;
- **设备指纹谨慎:**指纹信息组合性强、可识别度高,除非有明确业务必要性(风控等),自建统计不建议引入;
- **删除渠道:**提供「清除我的数据」入口(如 localStorage 清理、Cookie 过期),满足用户行使删除权。
欧盟 GDPR(2018 年 5 月 25 日生效)对 Cookie 有类似的告知同意要求(ePrivacy 指令),如果你的站点面向欧洲用户,Cookie 横幅是刚需,不只是「可选项」。
怎么验证标识真的稳定?
**结论:**用「同一浏览器四连测」验证稳定性:正常访问 → 关闭重开 → 清 Cookie 保留站点数据 → 隐私模式,观察标识是否按预期保留或重生。
- **场景 A:**正常访问两次,标识应完全一致(Cookie 生效);
- **场景 B:**关闭浏览器重开,标识应一致(持久 Cookie);
- **场景 C:**清 Cookie 但保留站点数据,标识应仍一致(LocalStorage 兜底生效);
- **场景 D:**隐私模式,标识应重生为新的(符合预期,不算 bug)。
四组结果与预期不符的,先查双写与读取顺序,再查续期逻辑。
踩坑记录:HTTP 与 HTTPS 之间 Cookie 失效
**现象:**站点从 HTTP 切换到 HTTPS 后,UV 连续两天异常升高,老访客大量变成新访客。
**根因:**旧 Cookie 是 HTTP 域下种的(未带 Secure 标记),HTTPS 下不再发送,服务端读不到旧标识,全部当新访客。
**修复:**切换 HTTPS 前给 Cookie 加 Secure 属性;上线后用「历史标识表 + IP 近似匹配」做一次性迁移,或接受切换日的口径断点并在报表中标注。如果你在用全端分析平台,注意它的访客指标在站点协议切换、域名变更后同样会出现断点,迁移时要在平台侧同步处理历史数据口径。
FAQ
Q1:第一方 Cookie 会受第三方 Cookie 淘汰影响吗?
A:不会。第三方 Cookie 淘汰针对的是跨域跟踪;你自己的域名下种的 Cookie 属于第一方,不在淘汰范围内,这就是「标识必须建立在第一方数据上」的原因。
Q2:LocalStorage 会不会被浏览器清理?
A:会。清除站点数据、长时间不访问(部分浏览器)、隐私模式退出时都可能被清。所以它是第二层而不是唯一层。
Q3:UUID 会重复吗?需要查重吗?
A:UUID v4 碰撞概率在统计上可忽略(128 位随机),不需要查重;如果审计要求极严,可以在服务端保留标识注册表做去重。
Q4:不种 Cookie 还能统计 UV 吗?
A:能,但精度下降。用 IP+UA 近似、或用「会话标识 + 短时窗口」估算;精度需求高时还是建议 Cookie 方案。
Q5:访客标识应该存多久?
A:统计分析用途建议不超过 2 年(滑过期),并在隐私政策中写明;超过后生成新标识,同时保留「旧标识→新标识」的映射以维持历史连续性。
Q6:多设备用户怎么算 UV?
A:未登录时视为多个访客(业界默认,无需合并);登录后可用登录态 ID 关联同一用户的多设备标识,但要在报表里区分「访客口径」与「用户口径」。
核心价值与实施边界是什么?
访客标识是自建统计的「地基」:它决定 UV、新老访客、留存、回访频率整组指标的可信度。把标识建立在第一方数据上、用多级方案做兜底、按合规要求约束采集,是三个缺一不可的支柱。
实施边界在于:标识解决「是不是同一个人」,不解决「这个人做了什么」------行为事件、页面路径、转化漏斗还需要埋点体系配合。如果团队不想从零维护标识与事件两套体系,可以评估接入现成的全端分析平台,把访客标识、事件采集与合规配置交给平台,前端专注业务埋点,能显著降低自建链路的维护成本。
数据来源:
Google Chrome 第三方 Cookie 决策(2024 年 7 月放弃自动淘汰、2025 年 4 月确认用户选择模式,Google 官方与多家媒体公开报道);Safari/Firefox 自 2020 年默认阻止第三方 Cookie;《中华人民共和国个人信息保护法》(2021 年 8 月 20 日通过、2021 年 11 月 1 日施行,中国人大网全文);GDPR(2018 年 5 月 25 日生效,欧盟官方文本);W3Techs 与 StatCounter 访客标识与统计口径公开参考。