术语表

Canvas 指纹

让浏览器画一个图形或一行文字,再对回读到的像素做哈希,由此得出的标识(canvas fingerprint)。

也称:Canvas 指纹识别。

Canvas 指纹识别会让浏览器往一块离屏画布上画点东西——通常是用指定字体写的一行文字,有时是渐变或曲线——再用 toDataURL 或 getImageData 把像素读回来做哈希。两台机器拿到同样的绘制指令,画出的像素并不相同,因为 GPU、显卡驱动、字体光栅化器和抗锯齿设置各有细微差别。得到的哈希对同一台设备是稳定的,在别人那里又很少重复,这正是一个标识需要的性质。

在实际使用中,这是网页能采集到的最有价值的信号之一,也是处理不当后果最严重的信号之一。拒绝绘制过于显眼;在所有环境上都返回同一个假哈希,则是把它们彼此绑在了一起,而不是和你绑在一起。在 Argus 里,Canvas 是由渲染器而非脚本包装处理的采集面之一,并且有四种模式——真实、噪声、关闭、手动——所以硬件平平无奇的环境可以直接放行自己的答案,另一个环境则可以扰动结果,让哈希逐环境不同,同时看上去仍像 GPU 产出的东西。指纹如何工作一文讲了这四种模式,以及为什么它们是按采集面分别设置的。