PowerScan
ZH

什么是浏览器指纹识别,网站究竟能读取什么?

浏览器指纹 · 阅读约 6 分钟 · 作者:PowerScan

图片:Unsplash

每次打开页面,浏览器都会向网站递上一长串关于自身的信息。这些信息没有一条是秘密,没有一条需要征求许可,而且大多数是为了让页面能正确渲染。指纹识别,就是网站不再用这些信息来渲染,而开始用它们来认出你的时候。

页面无需询问就能读取的内容

在普通标签页中运行的脚本可以读取:User-Agent 字符串、首选语言列表、时区、屏幕尺寸和像素密度、CPU 线程数、取整后的设备内存数值、色深、是否支持触控、WebGL 背后的图形渲染器名称,以及把一张小图画到 Canvas 上或渲染一小段音频缓冲区的结果,等等。它还能观察某些操作所需的时间、哪些字体会改变一行文字的宽度,以及存在哪些媒体设备(只有数量,没有名称,除非你授予权限)。

单独来看,这些都平淡无奇。一个时区只能把你缩小到几亿人之中。但把它们合起来,范围就缩小得多,因为稀有的是组合。一台 Windows 机器,配有特定的 NVIDIA 渲染器字符串、12 个线程、2560×1440 的屏幕,语言依次是法语和英语,再加上某个特定的 Canvas 哈希,这样的人不会很多。

什么让一个信号可用于识别

有三个特性很关键。信号必须稳定:同一个浏览器明天应给出同样的值。它必须多样:不同的浏览器应给出不同的值。它还必须廉价:无需权限提示,几毫秒就能读到。Canvas 哈希在这三点上都得分很高,这就是它出现在每一个指纹识别库里的原因。屏幕尺寸在前两点上得分不错,在第三点上则堪称完美。User-Agent 过去在多样性上得分很高,正是出于这个原因,被浏览器厂商有意地压平了。

页面读取不到的内容

这一部分常被夸大。如果你在代理后面,页面脚本看不到你的真实地址:它看到的是代理所呈现的地址。它无法读取其他标签页、你的历史记录、书签或保存的密码。它无法确切判断你是否处于隐私窗口;声称能做到这一点的启发式方法经常失灵。它不知道你的姓名。它也无法自行判断某个地址是代理还是数据中心:这个结论来自网站付费购买的信誉数据库,而不是你的浏览器所说的任何内容。

显示“机器人评分”或“代理:是”的网站,是把你的浏览器所报告的内容与第三方的数据结合在了一起。这样做无可厚非,但重要的是要知道,哪一半是测量,哪一半是查询。

为什么会有检测页面

像 PowerScan 这样的检测页面读取的信号与追踪器相同,但它是把这些信号展示给你,而不是存储起来。目的不是给你打分,而是让你检查两件事:你以为被隐藏的信号是否可见,以及这些信号彼此之间是否一致。不一致才是账号被标记的原因:地址在一个国家,浏览器时钟在另一个国家,WebRTC 候选与你访问时使用的地址对不上。

阅读报告时,请把每一行都当作对同一个问题的回答:“这个浏览器刚才对这个页面说了什么?”仅此而已。哈希不是结论,读取到的信号数量也不能衡量你看起来有多真实。

全部文章 · 开始扫描