浏览器指纹是什么
不用 Cookie,网站也能认出你:把浏览器的几十项特征组合起来,几乎每台设备都不一样,这就是浏览器指纹。
常见的指纹来源
- Canvas:让浏览器画一段文字和图形再读出像素。显卡、驱动、字体渲染和抗锯齿的细微差别会让结果不同。
- WebGL:读取显卡型号、支持的扩展和参数,并渲染一个 3D 场景取像素。
- 音频:用离线音频引擎处理一段波形,不同设备的浮点运算结果略有差异。
- 字体:测量文字在不同字体下的宽度,推断安装了哪些字体,进而推断系统和地区。
- 其它:屏幕分辨率、CPU 线程数、内存、时区、语言、触控支持、插件等。
时钟漂移
比较 Date.now() 和高精度计时器 performance.now() 的差值变化。差值突然跳动,可能说明有程序在修改页面看到的时间。
环境矛盾比指纹更危险
风控系统不只看指纹是否罕见,更看各项特征是否自洽:User-Agent 写着 macOS,WebGL 却是 Direct3D;声称是手机却不支持触控;时区在上海,IP 在洛杉矶。这些矛盾说明环境被修改过,比"指纹独特"更容易被标记。