词汇表·指纹识别
画布指纹识别
通过渲染 HTML 画布绘图的微小差异来识别设备。
定义
Canvas 指纹识别是一种页面使用 HTML Canvas API 绘制文本或形状并读回结果像素的技术。由于渲染取决于 GPU、图形驱动程序、字体和抗锯齿,因此设备之间的输出可能略有不同,并且其哈希值会成为一个指纹信号。
它是如何运作的
- 脚本创建一个画布元素(通常不可见)并使用 2D 上下文绘制文本、表情符号、渐变或形状。
- 它使用 toDataURL()(将图像作为数据 URL 返回)或 getImageData() 等方法读取结果。
- 像素数据经过哈希处理。相同的设置往往会产生相同的哈希值;不同的硬件或字体堆栈通常不会。
为什么这很重要
- 它不需要权限提示并且无需cookie即可工作,因此被广泛用于跟踪和反欺诈脚本。
- 这是指纹浏览器和注重隐私的浏览器试图通过使输出一致或添加噪音来控制的信号之一。
限制和常见误解
- “只有画布才能识别我。”这是一个信号;它通常与其他内容结合使用,例如 WebGL、字体和屏幕数据。
- “添加随机噪声是看不见的。”每次读取时变化的噪声本身可以通过绘制相同的图像两次并进行比较来检测。
示例: 在具有集成显卡的笔记本电脑和具有独立 GPU 的台式机上以相同的字体绘制相同的句子可能会产生肉眼看不见的像素差异,但在散列时会产生不同的像素差异。
没有浏览器或代理可以保证帐户不会受到限制。遵守各个平台的规则。
相关术语
- 浏览器指纹 — 浏览器和设备特征的组合,可以识别没有 cookie 的浏览器。
- WebGL 指纹识别 — 使用 WebGL 图形信息和渲染输出来识别设备。
来源
- MDN:画布 API (浏览器文档)
- MDN:HTMLCanvasElement.toDataURL() (浏览器文档)
- W3C:减轻 Web 规范中的浏览器指纹识别 (标准)
检查了2026-11-07。