全部指纹
硬件

WebGL

GPU 厂商与渲染器名称、约 60 个能力参数,以及一张渲染图像的哈希。

读取方式WEBGL_debug_renderer_infogetParameter(...)shader render

它是什么

WebGL 暴露整套图形栈:unmasked vendor 与 renderer 字符串点名 GPU 和驱动,几十个参数描述它的上限(纹理尺寸、精度格式、扩展),渲染一个小场景得到的像素则取决于确切的驱动。

网站怎么读

const gl = canvas.getContext('webgl');
const ext = gl.getExtension('WEBGL_debug_renderer_info');
gl.getParameter(ext.UNMASKED_VENDOR_WEBGL);    // "Apple"
gl.getParameter(ext.UNMASKED_RENDERER_WEBGL);  // "ANGLE (Apple, ANGLE Metal Renderer: Apple M2, ...)"

字符串来自 WEBGL_debug_renderer_info 扩展;参数来自 getParameter();图像来自把一段着色器画进离屏画布再做哈希——与 Canvas 指纹同一个配方,只是低了一层。

为什么它能认出你

GPU 型号加驱动版本加操作系统是一个很窄的组合,而渲染出的像素在驱动不变的情况下始终稳定。合在一起,它是页面能收集到的最强硬件信号之一。

风控怎么用它

渲染器字符串会对照操作系统与 CPU:Apple GPU 需要一台 Mac 和一个 ARM 架构提示,GeForce 不该出现在手机上,SwiftShader 或 llvmpipe 意味着软件渲染——虚拟机和无头浏览器的典型特征。getParameter 也会被检查是否仍是原生代码,参数集合是否与所报 GPU 相符。

常见翻车点

手改渲染器字符串却留着真实显卡的参数;Apple 芯片的 Mac 上出现 NVIDIA 名字;hook 掉 getParameter;给图像加每次调用都变的随机噪声,让两次渲染永远对不上。

Mango 正在接受候补登记。以下介绍首发能力,客户端将在发放邀请后开放使用。

Mango Browser 如何处理

噪声

渲染器字符串来自各系统的真实 GPU 池(Apple / Intel / NVIDIA / AMD);图像噪声按环境加种子,哈希独一无二且稳定。

检测你的值

跳转到你的检测结果中的这一项。

查看我的结果

用到这个信号的文章