了解浏览器指纹识别
浏览器指纹识别是系统地收集有关网络浏览器的信息,以便对其身份或特征进行有根据的猜测。
每个浏览器的设置和功能共同构成了“浏览器指纹”。
大多数浏览器无意中为每个用户创建一个独特的指纹,可以通过互联网进行追踪。
有关浏览器指纹识别的更多深度信息,请参阅 Tor 博客上的这些文章:Browser Fingerprinting: An Introduction and the Challenges Ahead 和 Tor Browser: a legacy of advancing private browsing innovation。
为什么浏览器指纹识别会威胁在线隐私?
首先,收集这些信息无需向用户请求权限。
任何在浏览器中运行的脚本,都可悄悄建立设备指纹,而用户毫不知情。
其次,如果浏览器指纹的某个属性是独特的,或者几个属性的组合是独特的,即可在线识别和追踪设备。
这意味着即使没有 Cookie,也可以使用指纹来追踪设备。
Tor 浏览器如何抵御指纹识别
Tor 浏览器经过专门设计,可以最大限度地减少每个用户指纹在各种指标上的独特性。
虽然实际上不可能让所有 Tor 浏览器用户都相同,但目标是减少每个指标可区分的“存储组”的数量。
这种方法使得有效追踪个人用户变得更加困难。
某些属性(例如操作系统和语言)对于功能的正常运行是必不可少的,因此无法完全隐藏或伪装。
相反,Tor 浏览器限制这些属性的多样性以降低独特性。
例如,它限制字体枚举并采用字符回退,通过黑边功能来标准化屏幕和窗口大小,同时,将请求语种限制在较小的预设范围。
Tor 浏览器的防指纹识别保护的关键目标是使收集足够的信息来唯一识别用户变得更具挑战性,从而在不影响必要功能的情况下增强隐私。
Tor 浏览器中的防指纹识别功能
黑边
为了防止根据屏幕尺寸进行指纹识别,Tor 浏览器首先将内容窗口缩小为 200px × 100px 的倍数。
这里的策略是将所有用户分为几个组,以便更难单独识别用户。
在用户开始调整窗口大小(例如最大化窗口或进入全屏模式)之前,此功能一直有效。
Tor 浏览器还针对这些情况提供了称为黑边的指纹识别防御功能,这一技术由 Mozilla 开发并于 2019 年推出。
其工作原理为:在浏览器窗口周围添加边距,使窗口尺寸尽可能接近期望值,同时用户仍可划分到几个屏幕尺寸分组中,防止通过屏幕尺寸单独识别出特定用户。
除了黑边,Tor 浏览器还采用了许多其他功能,抵御浏览器指纹识别并保护用户隐私。

用户代理和操作系统伪装
用户代理字符串是网站用于识别有关您的浏览器、操作系统、CPU 架构、厂商和版本的详细信息的值。
这些信息可暴露用户所用的操作系统或设备,因此一直作为浏览器指纹识别的潜在攻击方式,可通过网站或追踪器识别特定用户。
Tor 浏览器通过伪装用户代理来解决此问题。用户无法选择特定的操作系统或尝试模仿所有可能的平台。
相反,Tor 浏览器标准化用户代理值,以减少唯一性,避免产生虚假的隐私感:
- 所有 Windows 均显示为 Windows 10。
- 所有 macOS 均显示为 OS X 10.15。
- 所有 Android 均显示为 Android 10。
- 所有其他操作系统,例如 Linux 各种发行版(包括 Tails 和 Qubes)、*BSD 以及其他操作系统,都将统一归类,并上报为“Linux running X11”。
- 所有其他细节(例如处理器架构)也根据不同平台进行相应的标准化处理。
在这种情况下,Tor 浏览器的指纹识别抵御策略,是通过伪装来保护用户代理的真实值,同时确保拥有一个足够庞大的用户集。
用户代理以 HTTP 标头的形式发送到网站,同时也可通过 JavaScript 的 navigator.userAgent
获取。
这些值的不一致可能会触发反机器人和反欺诈系统,将 Tor 用户归类为机器人,并拒绝其请求,进而影响 Tor 浏览器用户的可用性。
部分隐私工具或用户建议,让所有用户都显示为 Windows 将提供最佳掩护。
不过,在不同浏览器环境下做到完美伪装,是不可能的。因此,常常通过主动式指纹识别技术,来推断硬件或操作系统的详细情况,其手段包括利用字体、功能、行为特征等等(无论是否使用 JavaScript)。
Tor 浏览器不允许用户选择他们所显示的操作系统。
这是有意为之:任何可供选择的选项都只会让用户更加独特,反而更易被指纹识别。
有限的标准化选项是确保用户融入群体、实现所有人隐私最大化的关键。
其他防指纹识别功能
除了黑边外,Tor 浏览器还采用了许多其他功能来减轻浏览器指纹识别并保护用户隐私。
这些功能包括 Canvas 图像提取阻止、NoScript 集成和第一方隔离。
如需获取完整的功能列表,请参阅 Tor 浏览器设计与实现文档。