我顺着跳转追到了源头:这种“资源合集页”用“验证年龄”套信息,你点一下,它能记住你的设备指纹

我顺着跳转追到了源头:这种“资源合集页”用“验证年龄”套信息,你点一下,它能记住你的设备指纹

我顺着跳转追到了源头:这种“资源合集页”用“验证年龄”套信息,你点一下,它能记住你的设备指纹

引言 最近在几个社群和论坛上看到有人抱怨:某些“资源合集页”要求先做“年龄验证”,点一下就能被“记住”,即便清理了 Cookie 和历史,还是会被识别回去。我特意从一个跳转链头追到尾,拆解出这些页面到底用的是什么手法、会收集哪些信息、能把设备“记住”到什么程度,以及普通用户能采取哪些立刻见效或长期有效的防护措施。

我是怎么追到源头的(简要过程)

  • 在一个资源汇总页点击“确认年龄/进入网站”后,观察到短短几次重定向和一个外部脚本被加载。
  • 在浏览器开发者工具的 Network、Application、Console 面板里逐条追踪请求,发现一个第三方域名在收集大量客户端属性并下发 ID。
  • 检查本地存储(localStorage/IndexedDB/Service Worker cache)后发现该域名写入了一个长期有效的标识符,并通过一个带有大量参数的上报接口把设备信息发送到后台。
  • 在不同浏览器/隐私模式下重复试验,确认这是典型的“设备指纹 + 持久存储”组合方案,而非单纯依赖 Cookie。

这类“年龄验证”实际上在干什么 表面:一个看似简单的按钮或一个要求输入出生日期的弹窗。 实质:诱导用户触发一段第三方脚本或跟踪像素,该脚本会同步采集你的浏览器和设备特征,并把结果与一个唯一 ID 关联后写入耐久存储。之后,无论你删除 Cookie,脚本都能用该 ID 在后续访问中重新识别你。

常见采集项(设备指纹构成)

  • 浏览器相关:User-Agent、Accept headers、语言、时区、时钟偏移
  • 渲染特征:Canvas 渲染指纹、WebGL 信息、字体列表、CSS 支持差异
  • 硬件/性能:屏幕分辨率、设备内存(deviceMemory)、CPU 核心数(hardwareConcurrency)
  • 平台特性:已安装插件、媒体编解码器支持、音频指纹(通过 WebAudio)、传感器支持、触控能力
  • 环境数据:IP 地址、TLS 指纹、网络延迟 这些数据往往组合成能区分率很高的“指纹”。

持久化手法(让指纹可恢复)

  • localStorage / sessionStorage / IndexedDB 写入标识符
  • Service Worker 缓存、Cache API
  • 浏览器 Cookie(持久/第三方)
  • ETag、缓存时间戳等缓存机制“复活”ID(所谓的“Evercookie”技术)
  • 通过服务器端关联 IP + 指纹模型进行再识别

如何快速判断你遇到的是这类页

  • 在点“进入”前,右上角查看该页面加载的外部脚本域名;有 FingerprintJS、amplitude、segment、mixpanel 或陌生第三方域名时多留神。
  • 打开开发者工具(F12)→ Network,观察是否有 /collect、/track、/identify、/v1/requests 这类请求,同时检查请求参数里是否包含大量类似“fonts, canvas, webgl, timezone”等字段。
  • Application(存储)面板里查看 localStorage、IndexedDB、Cookies,是否有意外的长 ID 字段或不明来源的域名。
  • 使用隐私工具(如 uBlock Origin 的 logger)查看被阻止的跟踪脚本列表。

如果已经点了该按钮,如何补救(立即可做)

  • 先断网(临时关闭网络或飞行模式),以阻止现场再发送数据。
  • 清除该站点的数据:
  • Chrome:设置 → 隐私与安全 → Cookie 与其他网站数据 → 查看所有 Cookie 和站点数据,删除对应域;
  • 或者在开发者工具 → Application → Storage,手动清空 localStorage、IndexedDB、Service Workers、Cache Storage。
  • 清除浏览器缓存和 Cookie(时间范围选“全部”或“所有时间”)。
  • 关闭并重启浏览器,观察是否还被识别(可用隐身/私人窗口作为对照)。
  • 如果怀疑长期被关联,可以换用新的浏览器 Profile 或临时用移动设备访问敏感内容。

长期防护建议(可操作性强) 短期策略(便捷、门槛低)

  • 在普通浏览之外使用隐私模式或受限浏览器访问不信任的“合集/验证”页面。
  • 阻止第三方 Cookie;在浏览器隐私设置中阻止第三方跟踪器。
  • 安装并启用 uBlock Origin(拦截外部脚本)、Privacy Badger(自动学习并阻止跟踪器)、Cookie AutoDelete(关闭标签页后自动清理站点数据)。
  • 对于频繁遇到的可疑页面,先在浏览器中仅打开页面源代码或用“查看页面信息”检查脚本来源。

高级策略(隐私保护更彻底)

  • 使用抗指纹浏览器:Tor Browser(最高)、Brave(带防指纹功能),但需理解使用成本与兼容性限制。
  • 禁用或按需允许 JavaScript:NoScript(Firefox)或在 uBlock 中启用“禁止脚本”模式,但会导致页面功能受限。
  • 为不同用途使用不同浏览器/Profiles,避免长期在同一 profile 上混合访问敏感和普通站点。
  • 使用 VPN/不同网络以降低基于 IP 的再识别可能性(但单靠 VPN 无法对抗强指纹)。

给站长/内容运营者的建议(如果你也在做网站)

  • 年龄验证应尽量采用最少化原则:只在服务端做粗略校验,不要依赖第三方指纹或不透明的采集脚本来做“防未成年”。
  • 清晰告知用户会收集哪些数据,并提供可选的、非必需的打点。把用户识别与功能性需求分离。
  • 避免把“点击同意/进入”当作搜集长期识别信息的借口;合规与透明能减少被投诉和被封禁风险。

如何在技术上辨别具体库/厂商(给愿意深挖的人)

  • 在 Network 面板按域名过滤:常见指纹/统计域名包括 fingerprintjs.com、cdn.segment.com、amplitude.com、mixpanel.com、analytics.js、collect.adobe.com 等。
  • 查看脚本名:fingerprint.min.js、fp.js、analytics.min.js、track.js 等通常是线索。
  • 利用浏览器扩展(如 Requestly、uMatrix)拦截并观察请求参数。

结语 那句看似无害的“点击以验证年龄”,在某些页面下可能是个触发器:一键激活了指纹采集与长期存储的组合,把访问行为和设备信息绑定成可复现的识别码。对普通用户来说,防护并非只有“彻底放弃网络体验”这一个选项:通过阻止第三方脚本、隔离浏览环境、用隐私工具并养成检查外链来源的习惯,能把被“记住”的几率大幅降低。若你经常在开放资源页、陌生分享链接里游走,先想一想:为什么要让我先“验证年龄”?那一步背后可能比你想象的要复杂得多。

如果你愿意,我可以:

  • 根据你常用的浏览器给出一套一步步配置清单;
  • 或者帮你检查一个你怀疑的页面流量日志/域名(把链接或域名发来),看看有没有明显的指纹收集特征。