无需登录 数据私有 本地保存

WebGL 指纹展示 - GPU 渲染器与扩展信息

11
0
0
0
WebGL 检测中...
--

正在获取GPU信息...

计算中...
WebGL 版本

--

最大纹理尺寸

--

MAX_TEXTURE_SIZE
最大视口

--

MAX_VIEWPORT_DIMS
扩展数量

--

已支持扩展
WebGL 上下文参数详情
参数名 说明 分类
正在采集参数...
WebGL 扩展列表 0
正在加载扩展列表...
常见问题与知识点

WebGL 指纹是浏览器指纹技术的一种,通过调用 WebGL API 获取设备的 GPU 信息(如渲染器型号、供应商、扩展支持列表、硬件参数限制等),将这些信息组合后生成一个哈希值。由于不同设备的 GPU 硬件、驱动版本、浏览器实现存在差异,这些参数组合具有较高的唯一性,可用于追踪用户。常见的采集维度包括:RENDERERVENDORMAX_TEXTURE_SIZE、支持的扩展列表、着色语言版本等。

Canvas 指纹通过渲染特定图形并提取像素数据来识别设备,依赖 GPU 渲染的微小差异(如抗锯齿算法、颜色空间处理等)。而 WebGL 指纹直接读取 GPU 硬件元数据(型号、参数限制、扩展列表),信息量更大、熵更高。两者常被结合使用,形成更强大的跨浏览器指纹。通常 WebGL 指纹比 Canvas 指纹更稳定,但隐私浏览器可能会对其结果进行伪造或屏蔽。

普通的 RENDERER 参数在大多数浏览器中会被修改为通用字符串(如 Chrome 显示 "ANGLE (GPU名称)",Firefox 显示 "Mozilla")。而通过 WEBGL_debug_renderer_info 扩展获取的 UNMASKED_RENDERER_WEBGLUNMASKED_VENDOR_WEBGL 会返回未经修改的真实 GPU 信息,具有更高的指纹熵值。该扩展在大多数现代浏览器中可用,但部分隐私模式或反指纹浏览器会禁用它。

以下几种方式可以降低 WebGL 指纹追踪风险:
1) 使用 Tor 浏览器,它默认对 WebGL 信息进行伪造或屏蔽;
2) 在 Firefox 中设置 webgl.disabled = true 完全禁用 WebGL(但这可能导致部分网站功能异常);
3) 安装反指纹浏览器扩展,如 Canvas Blocker、Privacy Badger 等;
4) 使用 Brave 浏览器,其内置了指纹保护功能,会对 WebGL 参数进行随机化处理;
5) 在 Chrome 中可以通过 --disable-webgl 启动参数禁用 WebGL。

WebGL 指纹主要用于:
1) 反欺诈系统:识别设备是否被用于批量注册、刷单等恶意行为;
2) 用户行为分析:跨站点追踪用户浏览习惯,构建用户画像;
3) 内容保护:DRM 系统验证设备唯一性,防止未授权访问;
4) 广告投放:精准识别用户设备,实现跨域广告重定向;
5) 安全认证:作为多因素认证的辅助手段,检测异常登录设备。

同一设备上不同浏览器的 WebGL 指纹可能不同。原因包括:
1) 各浏览器对 RENDERERVENDOR 的修改策略不同(Chrome 使用 ANGLE 包装,Firefox 曾简化为 "Mozilla");
2) 不同浏览器启用的 WebGL 扩展集合可能存在差异;
3) WebGL 1 vs WebGL 2 的默认上下文选择不同;
4) 部分浏览器会对某些参数值进行随机化处理以防止指纹追踪。因此,跨浏览器指纹识别通常需要综合多种信号。

WebGL 扩展是浏览器和 GPU 驱动提供的额外功能接口(如各向异性过滤、浮点纹理、调试信息等)。不同 GPU 和驱动版本支持的扩展集合差异显著——例如,移动端 Mali GPU 与桌面端 NVIDIA GPU 的扩展列表完全不同。扩展列表的排序、具体名称和数量都是指纹的重要组成因子,其组合熵值通常远高于单一参数。

ANGLE (Almost Native Graphics Layer Engine) 是 Chrome 和 Edge 浏览器使用的图形抽象层,它将 WebGL 调用转换为 Direct3D(Windows)、Metal(macOS)或 Vulkan(Linux)。因此在这些浏览器中,RENDERER 字符串会以 "ANGLE" 开头,后跟实际 GPU 名称。这是正常现象,不影响 WebGL 功能。如需查看未包装的原始 GPU 信息,可通过 WEBGL_debug_renderer_info 扩展获取 UNMASKED_RENDERER_WEBGL