全部指纹
渲染

Canvas 指纹

一幅隐藏绘图被哈希成 ID,是网站无需询问就能拿到的最稳定信号之一。

读取方式HTMLCanvasElement.toDataURLgetImageDataOffscreenCanvas

它是什么

Canvas 指纹是让浏览器在一张看不见的画布上画点东西——几段文字、几个图形、一个 emoji——再把像素读回来。没有两台机器会画得一模一样,所以这些像素就成了 ID。它是网站不用申请任何权限就能拿到的最稳定的信号之一。

网站怎么读

const ctx = canvas.getContext('2d');
ctx.fillText('Cwm fjordbank gly 😃', 2, 15);
const id = hash(canvas.toDataURL());

整个过程只需几毫秒,页面上不留任何痕迹。

为什么它能认出你

最终像素取决于显卡、驱动、操作系统、已安装字体、抗锯齿与色彩管理设置。其中任何一项变了图就变;都不变,图能几个月保持一致。

风控怎么用它

风控很少在意哈希值本身,它更关心画布“像不像真的”:同一幅图画两次结果是否一致?OffscreenCanvas 与屏上画布是否一致?toDataURL 还是不是浏览器自己的函数?“每次调用加随机噪声”这种粗暴保护三项全挂,会被判成经过修改的浏览器。

常见翻车点

加随机噪声的浏览器扩展;返回空白图的 canvas blocker;多个声称不同硬件的环境却共用同一个 canvas 值。

Mango 正在接受候补登记。以下介绍首发能力,客户端将在发放邀请后开放使用。

Mango Browser 如何处理

噪声

带种子的噪声:每个环境有自己稳定的种子,环境之间互不相同,同一环境每次绘制(屏上或离屏)都完全一致。模式:噪声(默认)或真实。

检测你的值

跳转到你的检测结果中的这一项。

查看我的结果

用到这个信号的文章