浏览器指纹识别如何运作,以及为什么你应该关注
Cookie 并不是追踪的全部。即使你从不登录,浏览器也可能泄露足够多的细微信号,让你被识别出来。
目录
人们低估的隐蔽追踪方式
大多数人对 Cookie 已经有基本理解:网站存储一个小标识符,浏览器把它发回去,网站就能记住你。浏览器指纹识别更不显眼,也常常更令人不安。它不需要在你的设备上存储任何明显的东西。相反,它会收集关于你的浏览器、设备、操作系统、设置和行为的许多小细节,然后把它们组合成一个画像;这个画像可能足够独特,能在之后再次识别你。
单个信号通常并不令人警惕。你的屏幕尺寸不是秘密。你的浏览器版本不是秘密。你的首选语言也不是秘密。问题在于组合。一个运行特定版本、位于特定 OS、带有特定 GPU、时区、字体集、扩展、canvas 渲染行为和音频输出特征的浏览器,可能会显得出人意料地独特。
指纹识别之所以重要,是因为它会绕过用户以为能保护自己的控制手段。你可以清除 Cookie、拒绝追踪同意、使用隐私模式浏览,但仍可能泄露足够多的特征,从而在多次访问之间被关联起来。这并不意味着每个网站都在对你做指纹识别,也不意味着指纹识别总是准确。但它确实意味着,隐私工作不能止步于 Cookie 横幅。
如果你已经在最近的 Cookie 变化之后审查自己的追踪技术栈,那么这就是自然的下一层。我们关于 2026 年 Cookie 发生了什么变化的指南涵盖了同意和第三方 Cookie 方面;指纹识别则是常常位于这些熟悉心智模型之外的部分。
浏览器指纹识别会收集什么
指纹识别脚本试图回答一个简单问题:“这个浏览器看起来像不像我们以前见过的某一个?” 为了回答这个问题,脚本可能会收集以下信号:
- 浏览器名称、版本、user agent 和平台
- 操作系统和设备类别
- 屏幕尺寸、视口尺寸、像素比和色彩深度
- 时区、区域设置、首选语言和日期格式
- 已安装字体或字体渲染行为
- 可用的媒体设备和输入能力
- WebGL renderer、GPU 细节和图形行为
- Canvas 渲染输出
- 音频处理输出
- 电池、内存、CPU 并发数以及其他与硬件相邻的提示
- 触控支持、指针行为和运动传感器
- 扩展产生的副作用,如果可以检测到
- 某些环境中的网络和 TLS 特征
现代浏览器已经减少了对其中一些表面的访问,并且若干 API 现在需要权限,或者返回精度较低的值。但仍然存在足够大的表面,因为 Web 确实需要设备信息才能正常工作。响应式布局需要屏幕尺寸。视频应用需要媒体能力。游戏和 3D 界面需要图形 API。无障碍和国际化依赖语言、输入和渲染细节。
隐私问题在于,有用的兼容性信息也可能变成追踪信息。
为什么 canvas 指纹识别成了著名例子
Canvas 指纹识别是最广为人知的技术之一,因为它听起来几乎有些荒诞。脚本要求浏览器把文本或图形绘制到一个 HTML canvas 元素中,然后读回渲染后的像素。操作系统、图形驱动、抗锯齿、字体和硬件加速中的细微差异,都可能产生略有不同的输出。
脚本并不关心图像本身。它关心的是由此得到的哈希值。如果你的浏览器绘制测试图像的方式与之前某次访问相匹配,这就会成为又一条线索。
Canvas 并不神奇。单独来看,它很少足以可靠地识别一个人。但与 WebGL、音频、屏幕特征、区域设置和其他信号结合起来时,它可以强化画像。
这就是指纹识别中的普遍模式:低价值信号在聚合后会变成高价值信号。
指纹是如何构建的
典型的指纹识别流程如下:
- 页面加载第一方或第三方脚本。
- 脚本查询浏览器 API,并收集被动请求数据。
- 它将这些值规范化为结构化画像。
- 它对该画像进行哈希处理或存储。
- 在之后的访问中,它把新的画像与以前的画像进行比较。
- 如果匹配足够接近,它就把该访客视为同一个浏览器或设备。
匹配步骤很重要。真实的指纹会变化。你会更新浏览器。你会接入显示器。你会前往另一个时区。你会安装扩展。因此,追踪系统是以概率方式工作,而不是完美工作。它可能分配置信度分数,而不是精确身份。
这种不完美有时会被用来淡化风险。但不应如此。大多数追踪系统并不需要法庭级别的确定性。对于广告、欺诈评分、分析增强或付费墙执行,一个高置信度的猜测可能就足够了。
正当用途与滥用
指纹识别并不总是恶意的。它有一些可以辩护的用途,尤其是在安全领域:
- 检测自动化滥用和撞库攻击
- 发现可疑登录尝试
- 降低支付欺诈
- 防止重复提交垃圾内容
- 在不只依赖 IP 地址的情况下执行速率限制
问题始于指纹识别被用于不透明的行为追踪,尤其是在无关网站之间进行追踪,并且缺乏有意义的同意或用户理解。使用设备信号来挑战一次可疑登录是一回事。在用户拒绝追踪 Cookie 之后,仍然悄悄重建其浏览历史,则是另一回事。
对于网站所有者来说,实际问题不是“我们能不能做指纹识别?”而是“我们在解决什么问题,这种做法是否相称?”例如,如果你的联系表单被垃圾信息淹没,你应该先修复那些朴素的层面:验证、速率限制、蜜罐、审核和滥用监控。我们另有一篇文章讨论为什么联系表单会成为最大的垃圾信息隐患,其中大多数缓解措施都比对每位访客做指纹识别更少侵入。
为什么用户应该关注
指纹识别会削弱用户选择。Cookie 横幅并不完美,但它至少暴露了正在发生追踪这一事实。指纹识别更难看见、更难清除,也更难解释。
它还会造成权力不平衡。网站或第三方脚本可以观察并分类访客,而访客很少有简单方式来检查、纠正或删除由此产生的画像。
当指纹与其他标识符结合时,风险更高。一个与电子邮件地址、登录账户、广告点击、CRM 记录或购买历史相关联的指纹,会变得敏感得多。即使指纹最初是化名的,一旦与某个人连接起来,它也可能成为个人数据。
对于受 GDPR 或 ePrivacy 规则等隐私法律约束的团队来说,这一区分很重要。监管机构已多次将设备标识符和类似追踪技术视为与隐私相关。如果你将指纹识别用于严格必要的安全之外的任何用途,都应假定它需要严肃的法律和同意审查。
用户能如何应对指纹识别
没有完美的消费者级修复办法。事实上,激进的自定义可能让你更加独特。安装十个隐私扩展、更改罕见的浏览器标志、使用不常见字体,可能会减少某些追踪,同时提高你的可区分性。
不过,一些习惯会有帮助:
- 使用主流、重视隐私且内置指纹识别防护的浏览器。
- 保持浏览器更新。
- 在可行时阻止第三方脚本。
- 避免安装不必要的扩展。
- 为不同场景使用单独的浏览器配置文件,例如工作、个人浏览和测试。
- 对无明确理由却要求广泛权限的网站保持谨慎。
- 在可能的情况下,优先选择在本地处理敏感数据的服务。
最后一点比指纹识别更广。诚实实现的客户端处理可以减少不必要的数据暴露。例如,我们曾写过为什么在浏览器中处理图像是隐私优势:只要某项任务可以在不把原始用户数据上传到服务器的情况下完成,同样的原则就适用。
隐私浏览模式有助于处理设备上的本地存储、Cookie 和历史记录。它们不会让你的浏览器变得不可区分。VPN 会向目标网站隐藏你的 IP 地址,但不会移除浏览器层面的信号。两者都可能有用;但两者都不是完整答案。
网站团队应该做什么
如果你构建或管理网站,指纹识别应被视为隐私设计问题,而不是增长黑客手段。
从清单开始。查看你的分析、广告、欺诈预防、A/B 测试、同意管理、聊天、热图和客户支持脚本。第三方 JavaScript 往往会带来你并未明确设计的数据收集。如果你不知道生产环境中的脚本在做什么,就检查请求、标头和脚本行为。我们关于在生产环境中调试重定向和 HTTP 标头的小工具集的文章讨论的是另一类问题,但同样的纪律适用:验证实际发生了什么,而不是仪表盘声称发生了什么。
然后问四个问题:
- 我们是否在收集能够识别或单独挑出访客的设备或浏览器信号?
- 其目的是安全关键、分析相关、广告相关,还是仅仅为了方便?
- 在需要时,用户是否获得了清晰告知和真实选择?
- 我们能否用侵入性更低的数据解决同一个问题?
对于许多团队来说,最佳答案是最小化。在设备指纹识别之前,先使用服务器端速率限制。在用户级追踪之前,先使用聚合分析。使用较短的保留期限。将安全信号与营销画像分离。除非有充分理由和有力合同,否则避免与供应商共享原始标识符。
也要在文档中保持诚实。一份只说“我们使用 Cookie”却省略通过浏览器信号进行等效追踪的隐私声明,并不具有真正的透明度。用户并不在意标识符存在于 Cookie、本地存储、服务器端画像,还是概率性指纹中。他们在意的是自己是否正在被追踪。
浏览器防护正在改进,但并不均衡
浏览器厂商采取了不同方法。有些通过让许多用户看起来更相似来降低熵。有些限制高风险 API。有些按站点分区存储和网络状态。有些添加权限提示或阻止已知追踪脚本。
这些防护有帮助,但受兼容性约束。破坏太多 API,Web 就无法工作。暴露太多细节,追踪仍然很容易。这就是核心张力:浏览器必须揭示足够的信息,让网站能够适配,但又不能多到让每位访客都变得唯一可识别。
最佳隐私姿态是分层的。浏览器应减少可被指纹识别的表面。用户应避免不必要的独特性。开发者应少收集。监管机构应将不透明追踪视为追踪,无论其技术机制是什么。
实际结论
浏览器指纹识别并不是科幻攻击。它是一种由普通浏览器功能构成的常规 Web 追踪技术。它的力量来自聚合,而不是任何单个秘密信号。
你应该关注它,因为它可以绕过用户熟悉的隐私控制,因为它通常由第三方脚本执行,也因为它会把兼容性细节变成身份线索。正确回应不是恐慌,而是克制。
对于用户,选择朴素、维护良好的浏览器设置,并对不必要的权限保持怀疑。对于团队,审计脚本、记录目的、最小化收集,并将安全用例与营销野心分开。指纹识别在技术上也许很巧妙,但尊重隐私的设计通常更简单:少收集、少保留,并多解释。