它是什么
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);图像噪声按环境加种子,哈希独一无二且稳定。
检测你的值
跳转到你的检测结果中的这一项。