字体指纹:浏览器字体检测如何追踪您以及如何防止

字体指纹识别是一种浏览器指纹识别技术,网站使用它根据用户设备上安装的字体来识别和追踪在线用户。

字体指纹识别可视化,展示网站如何检测已安装字体以创建用于追踪用户的唯一浏览器指纹
字体指纹识别如何创建唯一的追踪标识符

这种浏览器指纹识别形式通过测试哪些特定字体文件可用、使用不同字体渲染文本以及测量宽度、高度和其他字体指标等字体渲染差异来工作。结合Canvas指纹识别和WebGL指纹识别等其他指纹识别方法,字体指纹识别有助于创建可用于跨不同网站追踪用户的唯一指纹,引发了重大隐私问题。

本文解释了字体指纹识别的工作原理、为什么它是隐私风险、谁需要匿名性,以及使用反检测浏览器防止字体指纹识别的实用方法。

字体指纹识别的工作原理:清晰解释

字体指纹识别的核心是一种用于检测设备上安装的字体并测量这些字体如何渲染的技术。网站使用CSS、JavaScript和渲染测试的组合来检测已安装的字体并收集字体渲染数据。基本步骤是:

  1. 字体检测测试:网站注入CSS或JavaScript,尝试使用特定字体名称渲染文本。如果该字体安装在用户设备上,浏览器将使用该字体渲染文本。如果没有,浏览器回退到默认系统字体。
  2. 测量渲染文本:使用JavaScript,页面测量字体指标,如渲染文本的宽度和高度、行高和其他字体指标。使用不同字体渲染的相同字符串的宽度和高度差异可以揭示字体是否已安装。
  3. 跨多种字体重复:该技术使用大量字体名称列表——系统字体、Web字体和特定字体系列——进行检查。用户设备上安装的字体结果集成为唯一字体集的一部分,有助于整体指纹。
  4. 与其他信号结合:字体数据与Canvas指纹识别、WebGL指纹识别、User Agent、屏幕分辨率、已安装的浏览器插件、时区和其他特征结合。这种复合指纹比任何单一指标更稳定和准确。

从技术上讲,字体指纹识别技术通常使用隐藏的DOM元素以目标字体渲染文本,然后将元素的宽度和高度与基线测量值进行比较。由于不同的操作系统、图形驱动程序和系统字体版本以不同方式渲染文本,指纹识别方法可以检测到有助于创建唯一指纹的微妙渲染差异。简而言之,该技术根据已安装的字体和文本渲染方式生成配置文件,可用于跨网站识别用户。

其他指纹识别方法的工作方式类似。Canvas指纹识别在不可见的HTML Canvas上绘制文本或形状,并读回像素数据以查找由渲染堆栈和系统字体引起的差异。WebGL指纹识别使用GPU渲染3D内容并收集反映用户图形硬件和驱动程序的数据。结合使用时,Canvas、WebGL和字体指纹识别创建了难以更改的强大唯一指纹。

展示字体检测过程的图表,通过测量文本宽度和高度来识别用户设备上安装的字体
通过文本测量进行字体检测

为什么字体指纹识别和浏览器指纹识别是隐私风险

字体指纹识别并非无害。它是网站用来为用户设备创建持久标识符的强大追踪技术。与字体指纹识别和其他指纹识别方法相关的风险包括:

  • 画像:指纹数据可以与浏览行为结合,在未经明确同意的情况下创建兴趣、习惯和人口统计的详细画像。
  • 跨站追踪:由于唯一指纹在Web浏览器和网站之间是稳定的,它可以用于跨不同网站追踪用户,使在线保持匿名变得困难。这是一个主要的在线追踪向量。
  • 匿名性丧失:即使您阻止Cookie或使用隐私浏览,指纹识别仍然可以根据设备上安装的字体、操作系统和文本渲染方式来识别您。
  • 定向歧视:指纹画像可能导致定向广告或差别对待,例如根据推断的身份显示不同的价格或选项。

由于字体指纹识别测试设备上安装的字体并测量微小的渲染差异,即使用户采取清除Cookie等步骤,它也会引发重大隐私问题。禁用Cookie不能阻止字体或Canvas指纹识别。禁用JavaScript可以防止某些技术,但会破坏许多网站,对大多数用户来说不是实用的解决方案。

谁需要防范字体指纹识别?

虽然每个人都受益于更强的在线隐私保护,但某些群体面临更高的风险,有更强的动机来防止字体指纹识别和相关的浏览器指纹识别技术:

  • 营销人员和社交媒体经理:运行多个账号或A/B测试的专业人士需要在不跨账号关联的情况下管理会话。如果从同一设备使用多个身份,字体指纹识别可能导致账号被关联或标记为可疑。
  • 研究人员和记者:浏览敏感材料或调查匿名性重要话题的个人应避免被跨站追踪。指纹识别可以揭示损害信息来源或研究完整性的模式和联系。
  • 多账号用户和电商运营者:出于合法原因管理多个账号的用户(例如客户支持或本地化测试)需要防止账号通过指纹识别被关联的方法。
  • 注重隐私的用户:任何重视在线隐私的人——避免画像、广告定向或数据收集——都应该了解设备上安装的字体如何有助于指纹。

防止字体指纹识别的实用方法

完全防止指纹识别具有挑战性,因为指纹识别是一种跨Web浏览器使用且跨设备工作的技术。但是,有一些实用步骤可以减少您对字体指纹识别的暴露并使您的指纹不那么独特:

  • 使用反检测浏览器防止字体指纹识别最可靠的解决方案是使用反检测浏览器。反检测浏览器旨在伪造或标准化许多指纹识别信号——字体、Canvas输出、WebGL、User Agent等——使您的设备显示为常见配置文件或每个会话显示为不同的配置文件。这最大限度地减少了创建唯一指纹的机会,对营销人员、研究人员和多账号用户特别有用。
  • 限制已安装字体:减少操作系统上的字体数量可以降低已安装字体集的唯一性。使用最少的系统字体集使网站更难根据字体生成唯一指纹。
  • 阻止或限制JavaScript:由于许多字体检测方法依赖JavaScript来测量宽度和高度或读取Canvas数据,禁用JavaScript可以防止字体指纹识别。NoScript等工具允许选择性启用JavaScript,但这通常会破坏基本的网站功能。
  • 使用隐私扩展:Privacy Badger、uBlock Origin和其他反追踪工具等扩展可以阻止使用高级指纹识别脚本的已知追踪器。虽然Privacy Badger或类似扩展可以帮助,但它们对嵌入页面中的自定义指纹识别技术并非万无一失。
  • 沙箱化您的浏览:为不同的在线身份使用单独的虚拟机、容器或不同的浏览器配置文件。这可以防止由于共享字体集和系统配置而导致的跨站关联。
  • 字体阻止或CSS覆盖:一些高级隐私设置使用用户样式表或扩展来防止网页访问某些CSS字体功能,或强制使用回退字体。这些可以通过使不同字体在测量脚本看来相同来破坏字体检测技术。
  • 定期更改或随机化设置:定期更改浏览器配置文件、已安装字体或使用伪造Canvas或WebGL的浏览器扩展可以减少长期追踪。但是,不断更改设置本身可能成为唯一信号。

请注意,许多预防技术都有权衡。禁用JavaScript或积极阻止资源会使许多网站无法使用。隐私扩展可以帮助,但通常无法阻止高度定制的指纹识别脚本。这就是为什么反检测浏览器——专门为伪造或标准化指纹识别信号而构建——通常是需要可靠保护而不牺牲可用性的人的首选方法。

反检测浏览器界面,展示字体伪造和指纹保护功能以防止追踪
反检测浏览器防范字体指纹识别

常见问题:关于字体指纹识别的常见问题

问:字体指纹到底是什么?

答:字体指纹是浏览器或设备指纹的一部分,由用户设备上安装的唯一字体集以及文本渲染方式的测量生成。它有助于用于跨网站识别用户的更大浏览器指纹。

问:网站如何检测已安装的字体?

答:网站使用CSS字体声明和JavaScript测试以目标字体渲染文本,然后测量宽度和高度或其他字体指标的变化。如果测量值与该字体的预期指标匹配,脚本就会得出该字体已安装的结论。

问:禁用JavaScript足以防止字体指纹识别吗?

答:禁用JavaScript可以防止许多字体检测技术,但会破坏网站功能,不适合日常使用。此外,一些指纹识别方法仍然可以在没有完全JavaScript访问的情况下推断信息。

问:浏览器扩展足以保护我吗?

答:Privacy Badger和内容阻止器等扩展通过阻止已知的追踪器和脚本来帮助,但它们不能保证防范自定义指纹识别方法。它们是防御策略的一部分,而非完整的解决方案。

问:阻止字体指纹追踪的最佳方法是什么?

答:对于需要一致保护而不破坏网站的大多数用户来说,反检测浏览器是通过伪造或标准化许多识别信号来防止字体指纹识别和其他浏览器指纹识别技术的最可靠工具。

结论

字体指纹识别是一种用于检测设备上安装的字体并测量字体渲染差异以创建唯一指纹的技术。结合Canvas和WebGL指纹识别以及其他指纹识别方法,关于用户设备上字体和渲染的数据可用于跨不同网站追踪用户、对个人进行画像并侵蚀在线隐私。

虽然限制已安装字体、使用Privacy Badger等隐私扩展、禁用JavaScript或沙箱化浏览等实用步骤可以降低风险,但它们都有局限性。对于需要可靠匿名性的用户——管理多个账号的营销人员、处理敏感信息的研究人员和注重隐私的用户——最可靠的解决方案是通过伪造或标准化指纹信号来防止字体指纹识别和其他浏览器指纹识别技术的反检测浏览器。

了解字体指纹识别的工作原理并采取行动可以显著降低您的设备产生唯一指纹并被用于在线追踪的机会。测试您自己的字体指纹,看看追踪器可以检测到关于您系统的哪些信息。