做多账号的朋友,多半被提醒过"显卡信息是重点指纹之一",但很少有人告诉你它到底怎么暴露、为什么这么难防。
举个真实场景:你在同一台电脑上用 Chrome 登录店铺 A,用 Edge 登录店铺 B,以为"浏览器都换了,肯定没问题"。结果平台还是把两个号判定为关联 —— 因为 Chrome 和 Edge 用的是同一个 GPU,报出的显卡型号一模一样。
这个"显卡型号",就是 WebGL 指纹。
WebGL 指纹是浏览器通过 GPU 渲染能力采集到的硬件标识 —— 它不像 Canvas 那样"画图后测像素差异",而是直接向你索要显卡的名字和参数。 浏览器指纹是由几十项参数组成的(整体原理在什么是浏览器指纹这篇科普里讲过),WebGL 是其中"最诚实"的一项:它几乎不给你伪装的机会。
Canvas 指纹是"间接测量" —— 让你画一幅图,再对比像素细节;WebGL 指纹是"直接自报家门" —— 浏览器直接问 GPU 要厂商名和型号。前者靠猜,后者靠问。
所以如果平台要选一个"最省事的关联证据",WebGL 常年排在前列。
整个采集过程只需要一行 JavaScript,两步完成:
WEBGL_debug_renderer_info 扩展,读出两个字段:UNMASKED_VENDOR_WEBGL(显卡厂商,如 "NVIDIA Corporation")和 UNMASKED_RENDERER_WEBGL(显卡型号,如 "NVIDIA GeForce GTX 1650 / PCIe / SSE2")。这两个字段是"未遮罩"的原始值,Chrome、Firefox、Edge 都默认允许读取。这里有一个很多人不知道的细节:换浏览器没用。 Chrome、Edge、Firefox 的内核不同,但底层调用的都是同一个 GPU 驱动。我第一次用 Chrome 和 Edge 分别测同一台电脑的 WebGL 信息,显卡型号一字不差 —— 浏览器换了个遍,硬件还是那个硬件。

很多人只知道"显卡型号会被采集",但具体采集了哪些字段并不清楚。我整理了一份检测网站会读取的参数清单:
| 字段 | 示例值 | 说明 |
|---|---|---|
| 显卡厂商 | NVIDIA Corporation | 来自 UNMASKED_VENDOR_WEBGL |
| 显卡型号 | NVIDIA GeForce GTX 1650 / PCIe / SSE2 | 来自 UNMASKED_RENDERER_WEBGL,连接口和指令集都会带出来 |
| GLSL 版本 | OpenGL ES GLSL 3.00 | 着色器语言版本,反映浏览器和驱动的能力组合 |
| 着色器精度 | Highp / Mediump / Lowp | 不同 GPU 支持的精度范围不同 |
| 最大纹理尺寸 | 16384 | GPU 纹理能力上限,越高说明显卡越强 |
| 扩展列表 | ANGLE_instanced_arrays 等 | 支持的 WebGL 扩展项清单 |
| ANGLE 层 | ANGLE (NVIDIA, ...) | Chrome 通过 ANGLE 把 WebGL 请求转译给底层图形 API,转译层版本也会暴露 |
看懂这张表,你就明白为什么"改 UA"这类常规手段在 WebGL 面前完全无效——它读的是真实硬件参数,不是浏览器声明。其中 ANGLE 层最容易忽略:它相当于浏览器和显卡之间的"翻译官",翻译官的版本和实现方式,本身也是一条独立的指纹信息。
因为它在关联检测里太好用了:
这也是为什么风控系统做关联判定时,WebGL 经常和 Canvas、字体列表一起作为"核心证据组"。
对不同行业来说,这条证据链的杀伤力也各不相同:跨境电商卖家多店铺同设备登录,显卡信息一致就是关联判定的实锤;社媒矩阵批量养号,几十个账号报出同一张显卡,等于主动暴露"背后是同一个团队";广告投放多账户测试素材,账户一旦被关联,预算和起量节奏全被打乱。无论哪个行业,只要账号量上来,WebGL 都是绕不开的那道坎。
想看看你的显卡在浏览器眼里长什么样,两步即可:
MasBrowser 环境启动后的运行信息,标注 Fingerprint protection: Enabled 状态

检测的意义在于:如果你用普通浏览器登录多个账号,所有账号的 WebGL 信息完全一致 —— 这就是平台做关联判定时最有力的证据之一。
不需要代理、不需要额外工具,纯本地就能验证 WebGL 隔离有没有生效:
这个验证和 IP、代理完全无关 —— 哪怕两个环境共用同一个网络出口,显卡信息也是隔离的,这正是 WebGL 防护的意义所在。
先看几个"看起来有用、实际没用"的办法:
真正可行的方向是在 WebGL 层面做"遮罩":让浏览器返回一份与真实显卡不同的标识,或者对渲染参数做随机化。指纹浏览器把这做成了开关 —— 以 MasBrowser 为例,创建环境时在指纹设置里找到 WebGL 相关选项,可以选择"随机"生成一份合理的显卡配置,或按目标地区常见的显卡型号自定义。
开启后,每个环境的 WebGL 厂商和型号都独立生成,平台无法再通过"同一张显卡"把多个账号串起来。完整的独立环境与指纹隔离配置,可以在 MasBrowser 多账号安全管理页面 查看。
实际操作中有一个容易忽略的点:随机生成的显卡配置要"合理"。 比如代理 IP 显示目标地区是美国,随机出来一台中国特供型号的显卡,反而显得刻意。稳妥的做法是选"随机"后人工确认一眼,或直接按目标市场主流显卡型号自定义。
另外两个细节也值得留意:一是笔记本往往有核显和独显两套 GPU,检测结果可能随驱动策略和电源状态变化,环境创建后尽量别频繁切换性能模式,保持指纹稳定;二是 Windows 更新显卡驱动后 WebGL 指纹可能变化,如果账号已经稳定运行了一段时间,尽量别在运营期动驱动,避免"环境突变"触发风控。
会,但频率极低。只有换显卡、重装显卡驱动(大版本更新)时,WebGL 信息才会变化;平时保持稳定。这也是平台敢长期跟踪它的原因。
能,但代价很大 —— 很多网站(地图、3D 展示、部分广告验证)依赖 WebGL 渲染,关掉后页面功能受限甚至无法加载。相比之下,用指纹浏览器做"遮罩"是更优雅的方案。
在指纹浏览器里改的是"上报给网站的显卡标识",不是真的改显卡驱动,网页 3D 渲染照常进行,不影响功能。
WebGPU 是新一代 GPU 计算 API,比 WebGL 能暴露更详细的硬件信息,未来会成为新的指纹维度。现在大多数网站仍以 WebGL 为主,但提前关注 WebGPU 防护是有必要的。
WebGL 指纹是浏览器指纹里"最不会说谎"的一项 —— 它不靠你声明什么,而是直接读取你显卡的真实身份。对普通用户,它是隐私风险;对多账号运营者,它是关联判定的"主证据",处理不好账号就被一锅端。
好在这项能力可以通过指纹浏览器做遮罩。免费版就有 2 个环境配额,下载 MasBrowser,建一个环境配置 WebGL 随机化,再去检测页对比一下,你会直观看到显卡信息被隔离的效果。