PowerScan
ZH

浏览器指纹:网站究竟读取了什么

浏览器指纹 · 阅读约 10 分钟 · 作者:PowerOps

图片:Unsplash

逐项解读网站收集的各类数值,从 Canvas 和 WebGL 到音频、字体、屏幕和时区,并说明为什么自洽的身份比随机化的身份更好。

浏览器指纹识别,是根据浏览器所报告的数值,而不是它存储的任何内容来识别浏览器的做法。无需任何 Cookie。浏览器只是回答了任何网页都有权提出的问题,而这些回答合在一起,足以独特到可以被再次认出。

被收集的数值

大多数指纹识别脚本读取的都是同样的几个来源。

显而易见的那些

渲染相关的那些

人们说到指纹识别时指的就是这些值,因为它们是间接的。网页要求浏览器绘制某样东西,然后精确读回绘制出的结果。

网络相关的那些

为什么把每个字段都随机化是错误的直觉

直觉上的防御办法是每次访问都改变一切。这反而适得其反,原因有两个。

第一是矛盾。随机化的字段彼此并不知晓。声称是 Windows 的 User-Agent,旁边却是只出现在 Apple 硬件上的 WebGL 渲染器字符串,这个信号比其中任何单个值都要强。真实的机器是内部自洽的,只有合成出来的机器才会自相矛盾。

第二是不稳定。一个每次访问都报告不同设备的账号,描述的是现实中没有人拥有的东西。随时间保持一致,才是普通用户的样子。

配置文件的身份涵盖哪些内容

项目处理方式
User-Agent 与平台一起生成,使声称的平台与周围的值相符
屏幕与像素比按配置文件固定,取自真实显示器实际会报告的尺寸
时区与区域设置按配置文件设置,并与其使用的网络线路相匹配
Canvas、WebGL 与音频给予稳定的按配置文件处理,每次打开都相同
字体按配置文件设定一组字体,与该配置文件所声称的平台一致
WebRTC受到约束,不会与配置文件的网络线路相矛盾

检查你自己的设置

打开一个配置文件,访问一个指纹检测页面。有几个页面会免费公布它们读取到的值。值得检查的两件事,可能和你预想的不一样:

  1. 各个值彼此一致吗?平台、字体、显卡字符串和时区应当描述同一台合理的机器。
  2. 和上次一样吗?关闭配置文件,再次打开,重新加载检测页面。数值在两次打开之间发生变化的配置文件是不稳定的,而稳定性才是关键的属性。

检测页面上的稀有度评分是其中最没用的数字。它是拿你与该页面的访客相比较,而这些访客绝大多数是在测试指纹浏览器的人。

全部文章 · 开始扫描