跳到主要内容
BrowserCheck
报告
#WebGL#浏览器指纹

WebGL 指纹检测:显卡信息、Masked 与哈希的边界

BrowserCheck Editorial
发布于 2026年9月27日
审核于 2026年9月27日

WebGL 检测可以读取网页能访问的图形接口信息。这些信息可能帮助区分环境,但不是经过验证的硬件清单,也不是隐私评分。看到「Masked」时,需要先理解检测读到了什么,不能直接判断为故障或防护成功。

打开浏览器指纹检测,查看 WebGL 相关结果。本文说明当前 BrowserCheck 代码和一套比较流程,不提供浏览器排名,也没有声称测量了大量用户的显卡分布。

BrowserCheck 实际读取什么

检测先尝试创建 WebGL 上下文,并以 experimental-webgl 作为回退。随后请求 WEBGL_debug_renderer_info 扩展;扩展可用时读取它提供的未遮蔽渲染器和供应商字段,不可用时将这两项显示为「Masked」。

指纹工具的 WebGL 哈希由渲染器、供应商和 WebGL 版本字符串构成。隐私报告使用另一组输入,还包含着色语言版本和最大纹理尺寸。因此应比较同一页面上的同一字段,不能把两种摘要直接互相比对。这两项均不是通过绘制复杂三维场景得到的像素指纹。实现位于 src/hooks/use-extended-fingerprint.ts 的 getWebGLInfo。

Lab 又是另一种观察方式:它检查 WebGL2 可用性及该上下文暴露的渲染器。保存比较记录时,应注明使用哪个页面、字段和方法,不能把 Lab 记录无声地替换为指纹工具结果。

Masked、不支持和不可用有什么区别

「Masked」表示本次没有获得可选的调试扩展,因此未读取其中额外的供应商和渲染器字段。它不表示所有图形特征均被隐藏,上下文仍可能提供标准 WebGL 参数。

「不支持」表示创建上下文时没有得到可用上下文;「不可用」表示观察过程中发生错误。仅凭这些状态不能确定原因。浏览器策略、图形支持和环境限制都值得检查,但页面不会替你断言其中哪一个是根因,也不会把失败标记为通过。

渲染器字符串是浏览器报告的信息,可能描述图形抽象层或软件渲染器。BrowserCheck 没有核验物理 GPU 序列号,也不能据此证明具体设备型号或设备所有者。共享结果时,保留必要的测试条件通常比宣称「识别到真实硬件」更准确。

如何比较两个条件

  1. 记录浏览器版本、操作系统、当前配置文件和硬件加速设置。
  2. 在改动前对同一页面运行两次,将渲染器、供应商、哈希和错误状态一起记录。
  3. 只改变一个图形或隐私设置;浏览器要求重启时,先完成重启。
  4. 重复同一检测。先比较可读字段,再比较摘要,便于理解变化位置。
  5. 恢复原设置后再测。如果期间有更新、远程桌面会话或扩展变化,一并记录。

这个流程用于诊断,不是建议永久关闭保护。某项设置可能影响图形应用能否运行,功能影响应单独记录,不能与本页可观察到的指纹变化混为一谈。若无法维持相同条件,应明确写出比较的限制。

能得出哪些结论

渲染器字符串变化,说明网页收到的图形信息不同;哈希不变,只说明当前摘要没有变化。二者均不能证明其他网站如何组合信号,也不能排除网站继续通过账户或本地存储识别会话。

不要把遮蔽结果或检测失败解释为安全。BrowserCheck 没有人群基准数据,无法计算显卡配置的稀有度;它也没有覆盖所有 WebGL 扩展或第三方可能采用的渲染方法。判断结果时需要保留这些边界。

Canvas 指南介绍另一种绘图观察,浏览器泄漏检测则比较网络地址。图形信息变化不能被描述成修复了网络泄漏,把不同方法分开会让排查结论更有用。

来源与审核说明

本文于 2026 年 9 月 27 日对照当前 BrowserCheck 实现和以下文档整理,没有声称某个硬件或浏览器版本已经通过上述流程,也没有编造测试截图或测量结果。

分享这篇文章: