Privacy & Security

浏览器指纹识别如何运作,以及为什么你应该关注

Cookie 并不是追踪的全部。即使你从不登录,浏览器也可能泄露足够多的细微信号,让你被识别出来。

The Wux Webtools Team The Wux Webtools Team 10 分钟阅读 人工智能辅助,人工审核
Abstract browser window surrounded by layered fingerprinting signals and data points.
目录
  1. 人们低估的隐蔽追踪方式
  2. 浏览器指纹识别会收集什么
  3. 为什么 canvas 指纹识别成了著名例子
  4. 指纹是如何构建的
  5. 正当用途与滥用
  6. 为什么用户应该关注
  7. 用户能如何应对指纹识别
  8. 网站团队应该做什么
  9. 浏览器防护正在改进,但并不均衡
  10. 实际结论

人们低估的隐蔽追踪方式

大多数人对 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、音频、屏幕特征、区域设置和其他信号结合起来时,它可以强化画像。

这就是指纹识别中的普遍模式:低价值信号在聚合后会变成高价值信号。

指纹是如何构建的

典型的指纹识别流程如下:

  1. 页面加载第一方或第三方脚本。
  2. 脚本查询浏览器 API,并收集被动请求数据。
  3. 它将这些值规范化为结构化画像。
  4. 它对该画像进行哈希处理或存储。
  5. 在之后的访问中,它把新的画像与以前的画像进行比较。
  6. 如果匹配足够接近,它就把该访客视为同一个浏览器或设备。

匹配步骤很重要。真实的指纹会变化。你会更新浏览器。你会接入显示器。你会前往另一个时区。你会安装扩展。因此,追踪系统是以概率方式工作,而不是完美工作。它可能分配置信度分数,而不是精确身份。

这种不完美有时会被用来淡化风险。但不应如此。大多数追踪系统并不需要法庭级别的确定性。对于广告、欺诈评分、分析增强或付费墙执行,一个高置信度的猜测可能就足够了。

正当用途与滥用

指纹识别并不总是恶意的。它有一些可以辩护的用途,尤其是在安全领域:

  • 检测自动化滥用和撞库攻击
  • 发现可疑登录尝试
  • 降低支付欺诈
  • 防止重复提交垃圾内容
  • 在不只依赖 IP 地址的情况下执行速率限制

问题始于指纹识别被用于不透明的行为追踪,尤其是在无关网站之间进行追踪,并且缺乏有意义的同意或用户理解。使用设备信号来挑战一次可疑登录是一回事。在用户拒绝追踪 Cookie 之后,仍然悄悄重建其浏览历史,则是另一回事。

对于网站所有者来说,实际问题不是“我们能不能做指纹识别?”而是“我们在解决什么问题,这种做法是否相称?”例如,如果你的联系表单被垃圾信息淹没,你应该先修复那些朴素的层面:验证、速率限制、蜜罐、审核和滥用监控。我们另有一篇文章讨论为什么联系表单会成为最大的垃圾信息隐患,其中大多数缓解措施都比对每位访客做指纹识别更少侵入。

为什么用户应该关注

指纹识别会削弱用户选择。Cookie 横幅并不完美,但它至少暴露了正在发生追踪这一事实。指纹识别更难看见、更难清除,也更难解释。

它还会造成权力不平衡。网站或第三方脚本可以观察并分类访客,而访客很少有简单方式来检查、纠正或删除由此产生的画像。

当指纹与其他标识符结合时,风险更高。一个与电子邮件地址、登录账户、广告点击、CRM 记录或购买历史相关联的指纹,会变得敏感得多。即使指纹最初是化名的,一旦与某个人连接起来,它也可能成为个人数据。

对于受 GDPR 或 ePrivacy 规则等隐私法律约束的团队来说,这一区分很重要。监管机构已多次将设备标识符和类似追踪技术视为与隐私相关。如果你将指纹识别用于严格必要的安全之外的任何用途,都应假定它需要严肃的法律和同意审查。

用户能如何应对指纹识别

没有完美的消费者级修复办法。事实上,激进的自定义可能让你更加独特。安装十个隐私扩展、更改罕见的浏览器标志、使用不常见字体,可能会减少某些追踪,同时提高你的可区分性。

不过,一些习惯会有帮助:

  • 使用主流、重视隐私且内置指纹识别防护的浏览器。
  • 保持浏览器更新。
  • 在可行时阻止第三方脚本。
  • 避免安装不必要的扩展。
  • 为不同场景使用单独的浏览器配置文件,例如工作、个人浏览和测试。
  • 对无明确理由却要求广泛权限的网站保持谨慎。
  • 在可能的情况下,优先选择在本地处理敏感数据的服务。

最后一点比指纹识别更广。诚实实现的客户端处理可以减少不必要的数据暴露。例如,我们曾写过为什么在浏览器中处理图像是隐私优势:只要某项任务可以在不把原始用户数据上传到服务器的情况下完成,同样的原则就适用。

隐私浏览模式有助于处理设备上的本地存储、Cookie 和历史记录。它们不会让你的浏览器变得不可区分。VPN 会向目标网站隐藏你的 IP 地址,但不会移除浏览器层面的信号。两者都可能有用;但两者都不是完整答案。

网站团队应该做什么

如果你构建或管理网站,指纹识别应被视为隐私设计问题,而不是增长黑客手段。

从清单开始。查看你的分析、广告、欺诈预防、A/B 测试、同意管理、聊天、热图和客户支持脚本。第三方 JavaScript 往往会带来你并未明确设计的数据收集。如果你不知道生产环境中的脚本在做什么,就检查请求、标头和脚本行为。我们关于在生产环境中调试重定向和 HTTP 标头的小工具集的文章讨论的是另一类问题,但同样的纪律适用:验证实际发生了什么,而不是仪表盘声称发生了什么。

然后问四个问题:

  1. 我们是否在收集能够识别或单独挑出访客的设备或浏览器信号?
  2. 其目的是安全关键、分析相关、广告相关,还是仅仅为了方便?
  3. 在需要时,用户是否获得了清晰告知和真实选择?
  4. 我们能否用侵入性更低的数据解决同一个问题?

对于许多团队来说,最佳答案是最小化。在设备指纹识别之前,先使用服务器端速率限制。在用户级追踪之前,先使用聚合分析。使用较短的保留期限。将安全信号与营销画像分离。除非有充分理由和有力合同,否则避免与供应商共享原始标识符。

也要在文档中保持诚实。一份只说“我们使用 Cookie”却省略通过浏览器信号进行等效追踪的隐私声明,并不具有真正的透明度。用户并不在意标识符存在于 Cookie、本地存储、服务器端画像,还是概率性指纹中。他们在意的是自己是否正在被追踪。

浏览器防护正在改进,但并不均衡

浏览器厂商采取了不同方法。有些通过让许多用户看起来更相似来降低熵。有些限制高风险 API。有些按站点分区存储和网络状态。有些添加权限提示或阻止已知追踪脚本。

这些防护有帮助,但受兼容性约束。破坏太多 API,Web 就无法工作。暴露太多细节,追踪仍然很容易。这就是核心张力:浏览器必须揭示足够的信息,让网站能够适配,但又不能多到让每位访客都变得唯一可识别。

最佳隐私姿态是分层的。浏览器应减少可被指纹识别的表面。用户应避免不必要的独特性。开发者应少收集。监管机构应将不透明追踪视为追踪,无论其技术机制是什么。

实际结论

浏览器指纹识别并不是科幻攻击。它是一种由普通浏览器功能构成的常规 Web 追踪技术。它的力量来自聚合,而不是任何单个秘密信号。

你应该关注它,因为它可以绕过用户熟悉的隐私控制,因为它通常由第三方脚本执行,也因为它会把兼容性细节变成身份线索。正确回应不是恐慌,而是克制。

对于用户,选择朴素、维护良好的浏览器设置,并对不必要的权限保持怀疑。对于团队,审计脚本、记录目的、最小化收集,并将安全用例与营销野心分开。指纹识别在技术上也许很巧妙,但尊重隐私的设计通常更简单:少收集、少保留,并多解释。

常见问题

浏览器指纹识别和 Cookie 是一回事吗?
不是。Cookie 在浏览器中存储标识符。指纹识别则从浏览器和设备特征中推导出标识符。两者都可用于追踪,但指纹识别对用户来说更难看见,也更难清除。
我能完全阻止浏览器指纹识别吗?
在正常浏览中不能完全阻止。你可以通过使用具有强隐私保护的浏览器、限制扩展、阻止不必要的第三方脚本,以及避免让你显得突出的异常自定义设置来减少暴露。
Canvas 指纹识别本身危险吗?
通常单独来看并不危险。Canvas 输出只是众多信号之一。当它与 WebGL、音频、字体、屏幕特征、区域设置和其他浏览器细节结合时,才会对追踪更有用。
指纹识别合法吗?
这取决于司法辖区、目的、同意和实现方式。在欧盟 GDPR 和 ePrivacy 框架等隐私制度下,设备标识符和类似追踪技术可能需要清晰告知、法律依据,有时还需要同意。
网站应该使用指纹识别来预防欺诈吗?
有时可以,但应范围狭窄。安全用例可以是正当的,尤其是针对登录滥用或支付欺诈。团队应最小化数据、限制保留期限、避免将安全指纹用于营销,并清晰记录这种做法。

来源与进一步阅读

  1. EFF Cover Your Tracks
  2. MDN Web Docs: Fingerprinting
  3. W3C TAG: Unsanctioned Web Tracking
  4. CNIL: Fingerprinting and consent
关于作者
The Wux Webtools Team

最后更新:

继续阅读