TL;DR
- 浏览器指纹识别将可观察的浏览器和设备属性结合成一个概率标识符或风险信号,通常不依赖于 Cookie。
- 常见输入包括用户代理、语言、屏幕属性、字体、画布/WebGL 输出、硬件提示、时区和特征行为。
- 没有隐私设置可以承诺完美的匿名性;减少暴露的熵并加入更大的标准化人群通常比创建独特的自定义设置更安全。
- 对于授权的自动化,使用稳定的、符合标准的环境和明确的服务标识,而不是伪造指纹来模仿用户。
- 网站所有者应减少收集的属性,测试误报,限制保留,并避免将指纹作为高影响决策的唯一依据。
什么是浏览器指纹识别?
浏览器指纹识别是收集和组合浏览器、设备和执行属性以识别或分类客户端的过程。与 Cookie 不同,标识符可以从浏览器在普通页面执行期间暴露的信息中得出。结果是概率性的:配置可以冲突,属性可以更改,隐私防御可以故意减少唯一性。
Nstdata 运营授权自动化和公共数据工作流的基础设施,其中浏览器的一致性可以影响可重现性。一致性不能与冒充混淆。自动化客户端应使用文档化的身份和支持的访问路径,而不是试图看起来像特定的人。
MDN 指纹识别词汇表 将此做法定义为通过收集和结合特征来识别浏览器。隐私问题在于,即使常规存储被清除,识别仍然可能存在。
浏览器指纹是如何构建的
HTTP 和客户端提示
服务器可以观察用户代理、接受的内容类型、语言、压缩、客户端提示、IP 上下文和协议行为。这些字段对于兼容性和本地化很有用,但不寻常的组合可能会变得具有识别性。
屏幕和环境属性
JavaScript 可以暴露屏幕尺寸、颜色深度、设备像素比、时区、区域设置、平台提示和硬件并发性。每个值可能是常见的;它们的组合可能更为稀有。
字体和文本度量
可用字体集和渲染文本的确切大小可以揭示操作系统和配置的差异。现代浏览器和隐私模式可能会限制或标准化这一表面的一部分。
画布和 WebGL
绘图命令可以基于图形硬件、驱动程序、操作系统、字体和渲染库产生小的输出差异。脚本可以对渲染结果进行哈希。WebGL 会暴露额外的渲染器和能力信息。
音频和媒体能力
音频处理、编解码器支持、媒体查询和设备 API 可以增加熵。权限可以限制对敏感设备的访问,但许多兼容性查询不需要提示。
行为和会话上下文
某些系统将技术指纹与导航、时间、账户和交易行为结合起来。这更接近于风险档案而不是纯粹的设备指纹。
无头网络爬虫指南 解释了为什么浏览器执行会改变可观察的表面与仅使用 HTTP 的客户端相比。



