术语表
Canvas 指纹
让浏览器画一个图形或一行文字,再对回读到的像素做哈希,由此得出的标识(canvas fingerprint)。
也称:Canvas 指纹识别。
Canvas 指纹识别会让浏览器往一块离屏画布上画点东西——通常是用指定字体写的一行文字,有时是渐变或曲线——再用 toDataURL 或 getImageData 把像素读回来做哈希。两台机器拿到同样的绘制指令,画出的像素并不相同,因为 GPU、显卡驱动、字体光栅化器和抗锯齿设置各有细微差别。得到的哈希对同一台设备是稳定的,在别人那里又很少重复,这正是一个标识需要的性质。
在实际使用中,这是网页能采集到的最有价值的信号之一,也是处理不当后果最严重的信号之一。拒绝绘制过于显眼;在所有环境上都返回同一个假哈希,则是把它们彼此绑在了一起,而不是和你绑在一起。在 Argus 里,Canvas 是由渲染器而非脚本包装处理的采集面之一,并且有四种模式——真实、噪声、关闭、手动——所以硬件平平无奇的环境可以直接放行自己的答案,另一个环境则可以扰动结果,让哈希逐环境不同,同时看上去仍像 GPU 产出的东西。指纹如何工作一文讲了这四种模式,以及为什么它们是按采集面分别设置的。
术语表里的更多条目
WebGL 指纹
由网页通过 WebGL 看到的图形硬件构成的标识:声明的 vendor 与 renderer 字符串,加上三维场景渲染出的像素(WebGL fingerprint)。
音频指纹
把一段合成音送进浏览器的音频栈处理,再对输出的数字做哈希得到的标识(audio fingerprint)。
WebRTC 泄露
网页从 WebRTC 建立连接的过程里读到你的真实 IP,绕过了浏览器其余部分正在使用的代理(WebRTC leak)。
用户代理客户端提示
Chromium 用来取代 user-agent 字符串的结构化方案:一组 Sec-CH-UA 请求头和一个 JavaScript 接口,分别上报浏览器、平台和硬件(user-agent client hints)。
Cookie 存储区
浏览器存放 Cookie 的那个库。共用一个库的一切也就共用一个身份,所以隔离是库的属性,而不是标签页的属性(cookie jar)。
浏览器环境
磁盘上的一个目录,装着一个浏览身份拥有的一切——Cookie、存储、缓存、历史与设置——在防关联浏览器里还包括它的指纹和代理(browser profile)。
所有条目都列在术语表索引上。