跳至正文
中文
立即开始

WebGL 指纹识别

WebGL 指纹识别通过测量 WebGL API 暴露的图形硬件、驱动程序和渲染行为,帮助网站识别浏览器。

文章目录(8 个章节)

WebGL 指纹识别的工作原理

网站会运行 JavaScript,通常在隐藏的画布中创建 WebGL 上下文。脚本可以检查多种与图形有关的信号:

  • GPU 信息: 浏览器允许时,可获取供应商和渲染器名称。
  • WebGL 功能: 支持的扩展、纹理限制和可用功能。
  • 着色器行为: 支持的精度级别和图形管线差异。
  • 渲染像素: GPU、驱动程序、浏览器和操作系统造成的细微差异。

网站会把这些值组合成哈希或特征档案。该档案会成为更完整的浏览器指纹的一部分,可用于数据分析、欺诈检查和机器人检测,但不能作为个人身份的证明。

WebGL 指纹识别与 Canvas 指纹识别

两种方法都会渲染图形并检查结果,但使用的浏览器图形系统不同。

WebGL 指纹识别 Canvas 指纹识别
图形系统 2D 和 3D,通常使用硬件加速 主要使用 Canvas 2D
主要信号 GPU、驱动程序、着色器和扩展 字体、文本渲染和光栅化
硬件影响 通常更明显 通常更间接

网站通常会把 WebGL 与 Canvas 指纹识别及其他信号结合使用,而不是只依赖其中一种方法。

代理为什么不会改变 WebGL 指纹

代理会改变网站看到的来源 IP 地址,但不会改变 GPU、图形驱动程序或 WebGL 输出。因此,即使请求使用不同的代理 IP,只要呈现相同的图形指纹,网站仍可能把这些请求关联起来。

反过来也可能引起注意。如果同一浏览器会话始终使用相同的 Cookie 和标头,图形特征却反复变化,这些信号就无法构成一致的客户端特征。仅轮换 IP 并不能让不同请求看起来像来自不同设备。

隐私与负责任的测试

清除 Cookie 不会重置图形硬件特征。无痕浏览也可能暴露许多相同的 WebGL 值。注重隐私的浏览器可以减少或标准化这些信号;禁用 WebGL 则会阻止直接测量,但可能导致图形内容较多的网站无法正常使用。

如果运营网站,应按要求披露指纹识别行为,只保留必要的数据,并把匹配结果视为风险信号,而不是身份依据。测试或采集公开数据时,应使用受支持的浏览器、保持配置一致,并遵守网站条款、访问控制和请求限制。

常见问题

WebGL 指纹是唯一的吗?

不是。多台设备可能产生相同的指纹;浏览器、操作系统或图形驱动程序更新后,同一台设备的结果也可能改变。

代理能隐藏 WebGL 指纹吗?

不能。代理会替换网站看到的 IP 地址,但 JavaScript 仍会在浏览器中运行,并可读取浏览器的 WebGL 特征。

可以。无需存储 Cookie 也能生成用于识别的信号,但匹配结果只是概率判断,软硬件发生变化后,可靠性可能降低。

相关术语

查看全部术语