学习目标
阅读本文后,您将能够:
- 说出网站能从浏览器观察到哪些环境信息
- 判断这些信息大致代表什么
- 理解这些信号如何参与浏览器指纹
- 区分网站能看到什么、又不能说明什么
浏览器和系统信息
网站可以通过 User-Agent、Client Hints 和浏览器 API,看到一部分浏览器名称、版本和操作系统。
| 网站可能观察到 | 大致代表什么 |
|---|---|
| Browser | 浏览器类型 |
| User-Agent | 浏览器和平台声明 |
| Client Hints | 浏览器主动提供的部分平台信息 |
| Platform | 浏览器报告的平台环境 |
这些字段说的是当前这个浏览器怎么声明自己。单独一项很常见,网站通常会把它和后面的屏幕、渲染放在一起看。
屏幕与设备信息
网站可以读取屏幕、窗口和一部分硬件量级信息,用来描述当前的显示环境和设备能力。
| 网站可能观察到 | 大致代表什么 |
|---|---|
| Screen | 屏幕分辨率 |
| Viewport | 当前窗口的可视区域 |
| Device Pixel Ratio | 逻辑像素和物理像素的比例 |
| Hardware Concurrency | 浏览器报告的逻辑处理器数量 |
| Device Memory | 浏览器报告的大致内存 |
很多电脑报出的数字都相近。这类信号很少单独等于一台设备。
图形与渲染环境
网站可以通过画布和 GPU 路径,观察浏览器如何渲染文字和图形。
| 网站可能观察到 | 大致代表什么 |
|---|---|
| Canvas | 画布如何渲染一段文字或图形 |
| WebGL | 3D / GPU 路径如何渲染 |
| GPU | 显卡厂商与渲染器名称 |
图形和文字怎么被画出来,往往是区分度较高的信号。
字体与文本环境
网站可以通过检测已安装字体和文本渲染差异,观察一部分系统字体环境。
| 网站可能观察到 | 大致代表什么 |
|---|---|
| 已安装字体 | 系统里能被页面测到的字体集合 |
| 文本渲染 | 同一段文字在当前环境下的绘制结果 |
字体环境属于图形与系统的交界,通常和其他渲染信号一起看。
时区、语言和区域设置
网站可以读取浏览器当前的时区、语言和区域格式,用来说明这个浏览器按哪个地区设置。
| 网站可能观察到 | 大致代表什么 |
|---|---|
| Timezone | 浏览器当前使用的时区 |
| Language | 首选语言和备用语言 |
| Locale | 日期、数字等区域格式 |
它们更常用来判断环境和网络出口是否配套,而不是单独拿来当身份。
网络环境信息
网站几乎总会看到浏览器这次请求从哪个公网地址出去。有的页面还能通过 WebRTC 再看到别的地址。
| 网站可能观察到 | 大致代表什么 |
|---|---|
| 出口 IP | 浏览器这次请求使用的公网地址 |
| WebRTC | 页面可能另外看到的本机或公网地址 |
IP 不是浏览器指纹本身。出口变了,上面那些浏览器信号往往还在。
浏览器功能与 API
网站可以通过探测 API 支持和功能差异,观察这个浏览器实际能做什么。
| 网站可能观察到 | 大致代表什么 |
|---|---|
| API 支持 | 这个浏览器实现了哪些 Web API |
| 功能差异 | 同一类浏览器里,实现细节仍可能不同 |
| 浏览器特性 | 隐私设置或扩展带来的行为差别 |
两个看起来都是 Chrome 的环境,能力集合仍可能不同。
改掉一项,其余还在
网站同时看着浏览器、设备和网络。您只换 IP、只清 Cookie,或只换一个浏览器,变的只是其中一层。其余信号并不会跟着变。
理解这些信息时需要注意什么
- 网站看到的不是完整设备档案。
- 不同网站拿到的信息不同。
- 某个字段相同,不能证明是同一台设备。
- 某个字段不同,也不能证明一定来自不同用户。
- 能看到这些信号,不等于认出了某个真人。
常见问题
网站能知道我具体使用哪台电脑吗?
不能。网站看到的是这个浏览器允许它读取的那些项,不是某台电脑的编号。
网站能看到我安装的所有软件吗?
不能。它测不到完整的软件清单。字体检测只能覆盖页面能够测到的那一部分字体环境。
不同网站看到的浏览器信息一样吗?
不一样。采集字段、浏览器许可和隐私设置都会改变最终拿到的集合。
无痕模式会减少这些信息吗?
无痕主要少存历史和 Cookie。上面这些浏览器信号在无痕里通常还在。