无形的握手:理解浏览器指纹识别

当你访问一个新网站时,你可能认为自己是以一张白纸的状态出现的。你没有登录,清理了 cookie,并且正在使用 VPN。然而,就在你的浏览器发起连接的那一刻,它就开始了一个“主动提供”信息的进程。这种无形的握手在毫秒内完成,为网站提供了关于你的设备、位置和习惯的惊人详细的个人资料。

最近围绕“taken”项目的讨论——一个旨在向用户展示其浏览器在未经请求的情况下披露了哪些信息的网页——引发了关于浏览器指纹识别的本质以及 Web 兼容性与用户隐私之间紧张关系的更广泛辩论。

浏览器披露的解剖结构

大多数用户都知道网站使用 cookie 来记住他们。但指纹识别不同;它不会在你的设备上存储任何东西。相反,它收集各种数据点,当这些数据点结合在一起时,就会为你的机器创建一个唯一的标识符。

基础知识:请求头与 IP

每个 HTTP 请求都包含请求头,用于告知服务器客户端是什么。这包括你的 IP 地址,它提供了大致的地理位置并识别你的互联网服务提供商 (ISP)。它还包括你的 主要语言Referer header,它会告诉目标网站你在点击链接之前具体在哪个页面。

硬件配置概况

除了基础请求头之外,浏览器还通过 WebGL 等 API 暴露深层的硬件细节。这允许网站识别你的 图形处理器 (GPU)。正如一位用户所指出的,了解 GPU 可以揭示制造商、代际以及机器的大致价格,这在理论上可用于掠夺性定价或人口统计学定向投放。

微妙的标识符

一些最有效的指纹识别技术依赖于看似无害的数据:

  • 时区: 你的设备会报告其本地时间,这可以用来推断你的睡眠和工作模式。
  • 电池状态: 虽然 Firefox 在 2016 年移除了 Battery Status API 以防止追踪,但其他浏览器仍然会暴露电池百分比和充电状态。研究人员已经表明,电池电量水平可以具有足够的唯一性,从而在短时间内跨网站追踪用户。
  • 字体列表: 系统上安装的特定字体组合通常几乎是唯一的。虽然这在像 iOS 这样受限的系统中效果较差,但对于识别使用标准化组织镜像的企业设备来说,它仍然是一个强大的工具。

辩论:效用 vs. 隐私

“taken”项目因其“过于戏剧化”的基调而受到技术社区中一些人的批评,但其背后的技术现实依然存在。来自 Hacker News 社区的评论突显了我们在看待这些数据时存在的根本分歧。

一方面,有人认为这些信息是互联网运作方式的必然副产品。正如一位贡献者所指出的:

"Browsers are stuck between compatibility and privacy. Every bit of environment detail has some site that claims to need it, and every extra bit makes users easier to distinguish."

其他人则认为这是一种在未经同意的情况下发生的侵入性行为。在没有 cookie 或账户的情况下识别用户的能力意味着“隐身模式”往往是一种幻觉。如果你的 GPU、屏幕分辨率和字体列表是唯一的,那么无论你是否存储了 cookie,你都是可以被识别的。

准确性与局限性

需要注意的是,指纹识别并不是一门精确的科学。许多用户报告说,“taken”页面错误地识别了他们的城市或浏览器。基于 IP 的地理定位通常是不精确的,特别是对于移动用户或使用 VPN 的用户。

此外,指纹识别的有效性取决于你设置的“唯一性”。一个在主要城市使用 Chrome 的标准 MacBook Air 用户可能与成千上万的其他用户无法区分。然而,一个使用小众 Linux 发行版、高端 GPU 和特定安装字体集的用户就会变成一个“独角兽”——在整个 Web 上都非常容易被追踪。

如何保护自己

对于那些担心自己数字足迹的人,有几种工具和策略可以减轻指纹识别的影响:

  1. 隐私保护浏览器: 像 Firefox 和 Brave 都有内置保护功能,以限制暴露给指纹识别脚本的数据量。
  2. EFF Cover Your Tracks: Electronic Frontier Foundation (EFF) 提供了一个工具,可以查看你的浏览器指纹是否足够唯一,并提供关于如何降低这种唯一性的指导。
  3. VPNs: 虽然 VPN 隐藏了你的真实 IP 地址,但它并不能阻止 WebGL 或基于字体的指纹识别。
  4. 禁用 JavaScript: 最极端的措施是禁用 JavaScript,这这会防止许多更具侵入性的指纹识别 API(如电池和 GPU 检查)运行,尽管这通常会破坏现代网站的功能性。

Sources