浏览器指纹 (Browser Fingerprinting) 是把用户的浏览器和设备所具有的固有特征组合起来、识别每一位用户的技术,这些特征包括屏幕分辨率、已安装的字体、插件、时区、语言设置和 GPU 信息等。
Cookie 是基于用户同意而明确保存的,相比之下指纹只由浏览器在普通的 Web 访问中发送的信息构成,因此用户在毫无察觉的情况下就会被追踪。据 EFF (Electronic Frontier Foundation) 的 Panopticlick 项目所示,浏览器指纹的唯一性可达 83.6%,足以把大部分用户逐个识别出来。
指纹的主要构成要素有 User-Agent 字符串、屏幕分辨率与色彩深度、时区与语言设置、已安装的插件与字体。此外还有 Canvas 指纹,即用 Canvas API 绘制图像后得到的哈希值;WebGL 指纹,即 GPU 的渲染特性;以及 AudioContext 指纹,即音频处理的特性。
在短链接服务的点击分析中,遇到无法使用 Cookie 的环境,例如第三方 Cookie 被拦截或处于隐私浏览状态时,有时会利用指纹来推算独立用户数。不过 GDPR 和 ePrivacy 指令也把指纹列为与 Cookie 相同的同意要求对象,因此必须遵守隐私法规。
作为针对指纹的对策,Firefox 用 Enhanced Tracking Protection 拦截指纹脚本,Safari 用 Intelligent Tracking Prevention 实现了降低指纹精度的功能。Brave 浏览器则提供了把指纹信息随机化的功能。