什么是浏览器指纹?
浏览器指纹(Browser Fingerprinting)是通过收集你的浏览器和设备配置信息,组合生成一个唯一标识符的技术。与 Cookie 不同,指纹不需要在你的设备上存储任何内容——只要你访问网站,网站的 JavaScript 就可以悄悄读取你的浏览器特征并生成指纹。
浏览器指纹包含哪些信息?
使用 tool.tl 浏览器指纹检测工具 可以查看你的浏览器当前暴露了哪些信息:
| 信息类别 | 具体内容 | 唯一性 |
| User Agent | 浏览器名称、版本、操作系统 | 中 |
| 屏幕分辨率 | 1920×1080、视口大小 | 低-中 |
| 时区 | Asia/Shanghai、America/New_York | 低 |
| 语言 | zh-CN、en-US | 低 |
| 已安装字体 | 系统字体列表 | 高 |
| Canvas 指纹 | GPU 渲染的微小差异 | 极高 |
| WebGL 指纹 | 显卡型号和驱动差异 | 极高 |
| 音频指纹 | 音频处理的微小差异 | 高 |
| 插件列表 | 已安装的浏览器扩展 | 中-高 |
| 硬件并发数 | CPU 核心数 | 低-中 |
Canvas 指纹原理(最难绕过的技术)
网站在一个隐藏的 <canvas> 上绘制一段特定文字,然后读取 PNG 数据。由于不同 GPU、驱动、操作系统对图形渲染的处理存在极其微小的差异,相同代码在不同设备上产生的像素值略有不同,形成近乎唯一的标识。
const canvas = document.createElement('canvas');
const ctx = canvas.getContext('2d');
ctx.fillText('fingerprint test 🎨', 10, 10);
const hash = canvas.toDataURL(); // 每台设备略有不同
指纹追踪 vs Cookie 追踪
| 对比项 | Cookie 追踪 | 指纹追踪 |
| 存储位置 | 用户设备 | 服务器端 |
| 用户可清除 | ✅ 可以 | ❌ 无法 |
| 隐私模式有效 | ✅ 有效 | ⚠️ 大多无效 |
| 跨设备追踪 | ❌ 无法 | ⚠️ 部分可以 |
| 准确性 | 高(存在删除风险) | 中-高(随时间可能漂移) |
如何减少浏览器指纹追踪?
1. 使用 Brave 浏览器
Brave 内置指纹随机化(每次会话返回随机的 Canvas、WebGL 数据),是目前对指纹追踪防御最好的主流浏览器。
2. 使用 Firefox + 隐私设置
Firefox 在 about:config 中启用 privacy.resistFingerprinting,可以标准化大多数指纹数据。
3. 使用 Tor Browser
Tor Browser 将所有用户的指纹标准化为相同值,是指纹匿名性最高的选择,但网速较慢。
4. 安装隐私扩展
- uBlock Origin:阻止追踪脚本
- Privacy Badger:自动学习和阻止追踪器
- Canvas Blocker:干扰 Canvas 指纹
常见问题(FAQ)
Q:无痕/隐私模式能防止指纹追踪吗?
A:不能有效防止。无痕模式只阻止在本地存储浏览历史和 Cookie,但 Canvas、WebGL、字体等指纹信息仍然可被读取,指纹值与正常模式下基本相同。
Q:VPN 能防止指纹追踪吗?
A:VPN 只隐藏你的 IP 地址,不影响浏览器指纹。指纹追踪不依赖 IP,因此 VPN 对指纹追踪几乎无效。
Q:是否所有网站都在使用指纹追踪?
A:大型广告网络和部分电商平台确实使用指纹技术,尤其是在反欺诈和反机器人场景中。普通内容网站较少使用,但很难从外部判断。