跳至正文
指纹识别

Canvas Fingerprinting

Canvas 指纹(canvas fingerprinting)是一种将文本或图形渲染到 HTML5 canvas 元素上,再读回所得像素数据以推导出设备专属标识符的技术。GPU、图形驱动、字体光栅化和抗锯齿方面的微小差异,会使相同的绘制指令在不同机器上产生细微不同的像素。

工作原理

Canvas Fingerprinting 的工作原理

脚本会创建一个屏外 canvas 并发出绘制指令,通常以特定字体渲染一串文本,并附带形状、渐变和颜色。浏览器将这些指令交给图形栈处理,而最终生成的确切像素取决于操作系统、GPU、驱动版本和字体微调引擎。

随后脚本会调用诸如 toDataURL 或 getImageData 之类的方法来提取已渲染的像素缓冲区。该缓冲区被哈希为一个紧凑的值。由于渲染管道因设备而异,该哈希对同一台设备往往保持一致,而在不同设备之间会有所不同,因而成为一个有用的区分信号。

Canvas 输出随时间推移相对稳定,因为底层硬件和驱动很少变化。然而,在驱动更新、操作系统升级或浏览器渲染行为改变之后,它可能会发生变化,因此通常会与其他信号结合使用,而不是单独依赖。

隐私工具和某些浏览器会通过向像素数据添加随机噪声,或在允许读回之前进行提示,来对抗 canvas 指纹。这种刻意的扰动本身是可被检测的,并且可以被当作一个独立的信号来处理。

为何重要

Canvas Fingerprinting 对欺诈防护为何重要

Canvas 指纹贡献了关于底层硬件的高熵信息,因而对于区分那些在浏览器层面看起来别无二致的设备极具价值。在欺诈防范中,它有助于揭露成群的相似机器、模拟器以及反检测浏览器——这些工具会伪造较高层次的属性,却难以轻易伪造真正的渲染管道。它是无 Cookie 设备识别的一项主力信号。

使用 TRACIO

TRACIO 如何应对

TRACIO 将 canvas 渲染作为其 130+ 个信号之一,并按其对特定访客所表现出的区分度和稳定性来加权,而不是将其单独当作唯一 ID。由于攻击者可能注入 canvas 噪声,TRACIO 会将其与其他渲染和硬件信号交叉核对,从而使伪造某一个维度无法击败识别。这样既保持了识别的稳健,又为整体置信分数提供了输入。

常见问题

常见问题

自信识别每一台设备

从每月 2,500 次 API 调用的免费方案开始。无需信用卡。