- WebGL 可以提供有用的图形线索来识别浏览环境。
- 图形占用空间并不一定等同于识别特定的物理 GPU。
- 浏览器保护机制可以在不完全禁用 WebGL 的情况下限制数据流量。
- 禁用 WebGL 会影响兼容性,并且不会消除所有形式的跟踪。
El WebGL指纹识别 它利用浏览器图形环境中的信息来帮助识别设备。它可能会结合渲染器特性、支持的功能以及使用 WebGL 生成的图像结果。它无需存储 cookie 即可收集这些信号,但也不一定能创建唯一且永久的标识符。
这种区别很重要: 知道GPU的型号并不等同于识别具体的物理单元。此外,所获取的数据取决于驱动程序、系统、浏览器及其安全措施。为了评估风险,了解正在访问哪些信息、如何使用这些信息以及可以采取哪些措施来限制这些信息至关重要。
什么是WebGL指纹识别?它使用哪些数据?

WebGL 是一个 JavaScript API,用于在支持的浏览器中渲染 2D 和 3D 图形。它可用于可视化应用程序、游戏和其他交互式体验,无需依赖外部插件。
指纹识别是指收集特定表示形式的某些特征来区分浏览环境。可用的信号包括可用功能、描述渲染器的字符串以及绘制场景时产生的结果。
因此,将其描述为读取显卡上的物理车牌号并不准确。该信息来自…… 硬件和软件的组合通过浏览器允许您使用的功能呈现。
并非所有 WebGL 的使用都涉及图形追踪。应用程序可能会查询图形功能以确保正常运行,或应用解决方案来解决兼容性问题。其目的取决于它收集哪些数据以及如何使用这些数据。
如何从渲染图中获取足迹

没有单一的强制性流程。系统可以查询元数据、分析图像或组合多个测试。基于渲染的流程可以遵循以下步骤:
- 创建图形上下文: 页面代码请求与 canvas 元素关联的 WebGL 或 WebGL 2 上下文。
- 查看功能: 它会根据浏览器允许的情况,获取某些兼容的参数和功能。
- 画一幅场景图: 它使用定义的指令和输入数据来生成图像。
- 查看结果: 诸如以下功能
readPixels()它们允许从图形缓冲区中检索像素数据。 - 比较或总结这些信号: 可以将结果合并并转换为哈希值,以便于存储和比较。
这些查询是通过在浏览器中执行的代码完成的。页面随后可以将信息发送到服务器。标识符的计算可以在客户端、服务器端或两者之间共享完成。
哈希值并不会给原始数据增加唯一性。 如果多台计算机对同一测试输入相同的数据,它们可以共享结果。字符串看起来很复杂并不能证明它只能识别一台计算机。
它与 Canvas 2D 指纹识别有何不同?
元素 canvas 它既可用于 2D 环境,也可用于 WebGL 环境。例如,在 Canvas 2D 测试中,可以分析文本和形状;在 WebGL 中,则可以利用其图形环境的操作和特性。
在这两种情况下,系统和软件要素都可能发挥作用。因此, 将 Canvas 视为一种完全基于浏览器的技术,而将 WebGL 视为一种完全基于物理的技术,这种观点是不正确的。也不应声称其中一方总是比另一方更能认同。
它能揭示你的GPU哪些信息以及它的局限性
不同浏览器和配置下可获取的信息类型各不相同。有些信号描述的是许多设备共有的功能;另一些信号则有助于区分更具体的组合。
| 符号 | 它能做出什么贡献 | 它本身并不能证明什么 |
|---|---|---|
| 制造商和渲染器 | 浏览器通信的图形实现相关信息。 | 实体卡的唯一标识。 |
| 扩展和限制 | 该应用程序支持的功能和特性。 | 功能相同的两台设备就是同一台设备。 |
| 图片结果 | 渲染测试输出结果的差异。 | 系统改变后,结果保持不变。 |
| 性能指标 | 更先进的研究技术所使用的信号。 | 任何追踪器都能达到这些实验的精度。 |
已知的扩展之一是 WEBGL_debug_renderer_info它允许您使用以下方式查询制造商和渲染器字符串 UNMASKED_VENDOR_WEBGL y UNMASKED_RENDERER_WEBGL当浏览器提供该信息时。
这些字符串并不一定总是显示控制器的准确模型或完整版本。隐私保护措施可能会限制它们,或者导致它们返回通用信息。
还有一些技术超越了查询元数据或比较像素的范畴。这项研究 分散该研究在 NDSS 2022 上发表,考察了 GPU 执行单元之间的速度差异,并在实验中能够区分配置相似的设备。
这一结果表明图形指纹识别值得关注,但这并不意味着任何网站都能识别出所有GPU。区分所使用的方法、测试条件和结果至关重要。
此外,当图形环境或软件发生变化时,数字足迹也会随之演变。如果数字足迹保持稳定,则有助于关联访问记录;如果发生变化,则并不意味着该服务已失去识别您的其他方式。
如何减少接触图像信息

防御措施可以阻止某些脚本、限制暴露的数据或修改某些响应。 保护自己并不一定需要禁用所有图形显示。然而,每项措施都有其适用范围和潜在影响。
勇敢的图形保护
Brave浏览器宣布从1.93版本开始采取新措施,减少通过WebGL和WebGPU传输的信号。这些措施包括使用通用的制造商和渲染器信息、在WebGPU中使用空的适配器描述符,以及对WebGL扩展列表进行随机化处理。
根据他们的文档,这些保护措施在桌面和安卓系统上默认启用。请检查您是否使用的是最新版本。 页面已启用屏蔽功能如果某个图形应用程序导致问题,请先检查该网站的例外情况,然后再更改整个浏览器的保护设置。
Firefox 的保护和高级设置
Firefox 的增强型跟踪保护功能中包含针对已知和疑似跟踪器的措施。这些防御措施不应与完全阻止 WebGL 混淆。
还有高级设置 privacy.resistFingerprintingMDN 指出,启用此功能后,Firefox 会禁用该扩展程序。 WEBGL_debug_renderer_info.
但是,它会修改浏览器的更多方面,可能会导致不兼容问题。 Mozilla 不建议普通用户将此作为通用配置。不建议启用此功能,因为它只会隐藏 GPU 型号。
Tor浏览器采取多种措施来降低其环境的独特性。其目标是减少可观察到的差异,从而增加追踪难度,但其文档也明确指出,不可能使所有用户完全相同。
这种策略不同于安装声称可以模拟任何设备的工具。商业上承诺的“无法检测”并不构成隐私保障。
VPN、隐身模式或SwiftShader都无法解决的问题
有些措施作用于连接的其他要素,但它们本身并不能消除图形信号:
| 程度 | 你应该记住什么 |
|---|---|
| 使用 VPN | 它本身并不会修改浏览器图形 API 的响应。 |
| 打开一扇私人窗户 | 它并不能保证所有图形信号都会被隐藏;这取决于所采用的保护措施。 |
| 删除 Cookie | 这并不一定会改变 WebGL 测试所分析的特征。 |
| 仅更改 User-Agent。 | 它不会自动修改页面上可以查看的其他数据。 |
| 强制软件渲染 | 它改变了所使用的实现方式,但这并不能证明浏览器是匿名的。 |
SwiftShader 使用 CPU 实现图形功能。这在某些开发和测试场景中很有用,但是 不应将其作为隐藏身份的通用解决方案。.
Chromium 文档中已明确指出将其用作 WebGL 替代方案所带来的安全风险,并宣布自动替换功能已过时。因此,不建议尝试通过降低浏览器安全保障的方式来更改指纹。
如果您需要更多关于隐私浏览和跟踪保护之间区别的信息,您可以咨询…… Google Chrome 隐身模式的局限性.
如何在 Firefox 中禁用 WebGL 以及如何恢复?
禁用 WebGL 会阻止使用该 API,但可能会影响游戏、3D 查看器和其他应用程序。这是一个高级选项,会带来兼容性问题,并不能保证匿名性。
Mozilla 在一份针对桌面版 Firefox 的文档中记录了此操作步骤:
- 写
about:config在地址栏中。 - 请阅读高级设置相关提示后继续。
- 寻找偏好
webgl.disabled. - 将其值更改为
true. - 完全关闭 Firefox 并重新启动。
要撤销更改,请将首选项恢复为 false 然后重启浏览器。接着检查你常用的应用程序。
禁用 WebGL 并不意味着禁用所有图形 API 或所有指纹识别方法。 也不要将其与简单地取消选中硬件加速混淆:这是不同的设置。
如何检查您正在暴露哪些 WebGL 信息

掩盖你的踪迹电子前沿基金会的工具允许用户查看浏览器特征并评估某些安全机制。其测量结果包括与图形指纹相关的信息。
以一种有用的方式回顾 WebGL:
- 运行测试并打开详细报告。
- 找到与 WebGL 相关的字段,特别是制造商、渲染器和图像占用空间等字段(如果出现)。
- 请注意浏览器版本和已启用的安全保护措施。
- 修改单个条件并重复测试以比较这些字段。
- 还要检查一下你需要的图形应用程序是否还能正常运行。
渲染器以通用名称出现可能是保护机制的预期结果。WebGL 能够继续运行并不意味着它的所有响应都毫无限制地暴露出来。
唯一性得分会将您的浏览器与该项目观察到的访问者样本进行比较。 这并非对所有球队的普查,也不是匿名证明。除了整体结果外,还要解读具体数据。
WebGPU 带来了哪些变化
WebGPU现已在受支持的浏览器和环境中可用。它允许您使用 GPU 显示图形和执行计算,但其可用性取决于浏览器、系统和设备。
它还可以提供可用于指纹识别的信号。该接口 GPUAdapterInfo 它包含有关制造商、架构、设备及其描述的信息,但这些字段可能为空,或者根据实现方式的不同,其准确性也会有所不同。
这项属性被称为 device 它不能自动被解读为卡片的物理序列号。MDN解释说,由于涉及隐私问题,共享的信息有限。
因此,在评估浏览器的图形暴露情况时,建议同时考察 WebGL 和 WebGPU(如果可用)。目的是了解哪些信号会被共享以及有哪些安全措施,而不是假设 API 总是能识别每台计算机,或者修改单个数据就能消除跟踪。
指数
我是一名技术爱好者,已将自己的“极客”兴趣变成了职业。出于纯粹的好奇心,我花了 10 多年的时间使用尖端技术并修改各种程序。现在我专攻计算机技术和视频游戏。这是因为 5 年多来,我一直在为各种技术和视频游戏网站撰写文章,旨在以每个人都能理解的语言为您提供所需的信息。
如果您有任何疑问,我的知识范围涵盖与 Windows 操作系统以及手机 Android 相关的所有内容。我对您的承诺是,我总是愿意花几分钟帮助您解决在这个互联网世界中可能遇到的任何问题。