你以为在找资源,其实在被筛选,我把“每日大赛官网”的链路追完了:你点一下,它能记住你的设备指纹

导语 很多人点开一个看似无害的“每日大赛”或领取资源的链接,只想快速拿到题目、报名或下载资料。但技术上有一种悄无声息的操作:通过一串跳转和脚本,把一个“唯一标识”留在你的浏览器里,下次再来就能把你认出来。本文记录我对“每日大赛官网”链路的逐步追踪——发现了链接如何捕获并保存设备指纹、在什么位置存储标识、以及普通用户能采取的防护措施和检测方法。
我做了什么(概览)
- 打开页面并点击“参与/领取”类的入口,开启浏览器开发者工具(Network / Console / Application),保存网络请求日志和存储项。
- 记录跳转链路(HTTP重定向)、检查返回头(Set-Cookie)、定位第三方域名、查看页面注入的脚本文件名和内容片段。
- 在控制台和 Application 面板中检查 cookies、localStorage、sessionStorage、IndexedDB 等位置有没有新增加的标识。
- 对可疑脚本进行字符串搜索(关键词:fingerprint、FingerprintJS、canvas、toDataURL、webgl、webrtc、deviceId 等)。
- 用 curl / wget 简单抓取响应头,看是否有跟踪域名的设置。
核心发现(总结)
- 链接并非单纯指向官方页面,而是先经过一两个重定向域名(常见于短链或统计域),这些域名会返回带有 Set-Cookie 的响应或重定向到加载了指纹收集脚本的页面。
- 页面中存在可疑第三方脚本,字样和函数调用与常见的设备指纹库(如 FingerprintJS 或其变体)吻合,脚本会收集:User-Agent、屏幕分辨率、时区、字体列表、Canvas/WebGL 绘图数据、音频上下文差异、插件信息、以及本地存储能力等特征。
- 收集到的“指纹”被哈希后写入 localStorage 或 cookie,有时也同时写到 IndexedDB,作为持久化标识。这个 ID 会和后端请求关联,实现“回访识别”或跨页面追踪。
- 某些跳转会向统计或广告域提交该 ID(GET/POST),从而在多个域之间建立联系,实质上是跨站追踪的一种实现方式。
技术细节(怎么识别“被记住”)
- 重定向链:在 Network 面板勾选 Preserve log,点击目标链接,查看 3xx 响应并记录 Location。常见模式:your-short.link → tracking.example.com/track?… → daily-contest.example.com?tk=xxx
- Set-Cookie:观察每个响应头是否带 Set-Cookie,及其属性(domain、expires、SameSite、HttpOnly)。非 HttpOnly 的 cookie 可在控制台读取并用于识别。
- localStorage / IndexedDB:Application 面板里搜索新增键名,或在控制台执行 localStorage keys()。很多指纹代码会用像 fpid、deviceid、visitor_id 这样的命名。
- 脚本查找:在 Sources 或页面源码中搜索 fingerprint、fingerprintjs、canvas、toDataURL、getContext、webrtc、enumerateDevices 等关键字。若看到通过 canvas 生成图像并调用 toDataURL,再发送到后端,就很明显是 canvas fingerprint。
- 网络请求:留意到向第三方统计域名发出的请求(常见是 analytics、track、collect 等子域名),查看请求体里是否包含 id 或 hash 字段。
为什么设备指纹能“记住”你
- Cookie/localStorage/IndexedDB:这些是浏览器提供的本地存储,能长期保存小块数据。即使用户清理 cookies,一些浏览器设置不严或者用户只清了 cookies,localStorage/IndexedDB 仍然可能存在。
- 指纹方法收集的是不能轻易改变的多个属性组合(屏幕尺寸、字体、WebGL 指纹等),把它们哈希后得到的 ID 在很多设备间有很好的辨识度,足够再识别回访者。
- 如果某些属性改变(例如安装插件、分辨率变化),指纹仍然能通过“相似度”判断出可能是同一设备。
普通用户可做的检测(几步走)
- 打开浏览器开发者工具,Network 面板记录下点击过程,观察是否出现多个跨域重定向或向不熟悉域发出的请求。
- 点击前后比较 Application 面板中的 localStorage、IndexedDB、cookies 是否有新增条目。
- 在控制台里运行 document.cookie 和 Object.keys(localStorage) 检查新增标识。
- 若怀疑 canvas 指纹,可搜索页面 JS 是否有 toDataURL 或 getImageData 的调用,或在 Console 执行小段脚本查看是否被拦截。
- 使用线上检测服务(AmIUnique / Panopticlick / Cover Your Tracks)对浏览器指纹进行测试,查看指纹的唯一性和可追踪概率。
可行的防护措施(由简单到彻底)
- 进站尽量用隐身/无痕窗口。此模式会在会话结束时清除大多数会话存储,但不能阻止指纹采集本身,只减少持久化的可能。
- 安装脚本阻断器(uBlock Origin、NoScript),默认阻止第三方脚本和可疑脚本加载。把可疑域名加入拦截列表,阻止它们运行指纹脚本或发请求。
- 屏蔽第三方 Cookie 与跨站请求。浏览器设置中禁用第三方 cookie 可以减缓跨域关联。
- 使用隐私保护浏览器(Brave、Firefox + 隐私增强设置),或启用“阻止追踪器”功能。
- 更严格的方案:使用专门的指纹抗性浏览器(Tor Browser)或把访问放在虚拟机、沙箱或临时浏览器配置中,访问后直接销毁该环境。
- 如果必须多次访问并保持匿名性,考虑使用不同浏览器或不同设备、或用不同用户资料(浏览器 Profile)来隔离标识。
- 清理 localStorage / IndexedDB / cookies:在 Application 面板里手动删除可疑条目,或使用浏览器设置清除网站数据,注意这可能会影响某些站点功能。
给站点管理者和上线用户的建议(中立、可操作)
- 若你是站点方:在收集任何可识别信息前先告知用户并征得同意,尽量减少不必要的跨域跟踪,明确隐私政策并提供退出选项。
- 若你在组织内部负责安全/合规:定期审计第三方脚本,使用 CSP(Content Security Policy)限制外部脚本加载,审查第三方 SDK 的数据收集范围。
- 若你是普通用户且发现可疑行为:截取网络请求日志(Network 面板)、localStorage 内容的截图,向站点客服询问或向平台(如果合适)进行举报。
现实中的权衡 很多网站通过统计和重定向提高体验(比如流量统计、反作弊、关联报名信息等),但链路中混入大量第三方脚本或模糊的重定向会带来隐私风险。并非所有指纹收集都是恶意,但一旦有持久化 ID 被写入并在多个域共享,就可能变成跨站追踪的工具。用户、站点和监管之间存在权衡:功能、数据、透明度三者需要重新平衡。
结语 你点一次链接,系统记下一串特征并生成一个 ID,这个过程可以悄无声息。通过简单的开发者工具检查可以发现大多数这种处理逻辑;通过脚本拦截、隐身模式或专用隐私浏览器能显著降低被“记住”的概率。希望这次追踪记录能帮助你理解链路背后的技术,以及在未来访问类似入口时多一分警觉和选择余地。若你愿意,我可以把我用到的具体命令和操作步骤列成一步一步的教程,便于你自己动手检查与复现。









