一句话回答
浏览器指纹是把浏览器暴露出来的许多属性(如用户代理、屏幕尺寸、时区、语言、已安装字体、Canvas 图形的渲染方式)组合起来,得到一个清除 Cookie 后依然不变的标识。
什么是浏览器指纹?
浏览器指纹不在浏览器里存任何东西就能认出它。脚本读取浏览器暴露出来的几十个小细节,组合起来。每个细节都有几百万人相同,合在一起却可能少见到能从人群里挑出一个浏览器,而且清除 Cookie 之后结果也不变。
用到哪些信号
| 信号 | 例子 | 稳定程度 |
|---|---|---|
| 用户代理和客户端提示 | 浏览器、版本、操作系统 | 随更新变化 |
| 屏幕 | 分辨率、像素比、色深 | 同一设备稳定 |
| 地区设置 | 时区、语言 | 稳定 |
| 字体 | 装了哪些字体 | 比较稳定 |
| Canvas 和 WebGL | 绘图结果的细微差别 | 同一设备和驱动稳定 |
| 音频 | 音频栈处理测试信号的结果 | 稳定 |
| 硬件 | CPU 核数、内存档位、是否支持触屏 | 稳定 |
Canvas、字体、音频和硬件探测属于主动手段:它们存在的主要目的就是区分浏览器。
指纹、Cookie 和服务端粗粒度哈希
| Cookie | 浏览器指纹 | 服务端粗粒度哈希 | |
|---|---|---|---|
| 存在浏览器里 | 是 | 否 | 否 |
| 用户能否重置 | 清除 Cookie | 很难 | 换网络或换浏览器 |
| 能否跨站 | 只有第三方 Cookie 能 | 能,只要到处跑同一个脚本 | 不能,每个站点单独加盐 |
| 常见用途 | 登录、偏好、广告 | 反欺诈、跨站追踪 | 不用 Cookie 统计访客 |
浏览器怎么防
Safari 和 Firefox 会拦截很多已知的指纹脚本,并减少暴露的细节;Brave 会按站点随机化部分值;Chrome 在减少用户代理字符串里的细节。对个人来说,用常见的、最新版的浏览器并打开防追踪功能,效果比较好。
统计到底需要什么
统计访客并不需要指纹。选统计工具时可以问清楚:读取哪些信号、标识能不能跨站、能保持多久。
TapCub 不运行客户端指纹脚本:不探测 Canvas、字体、音频或硬件。网站脚本不写 Cookie,也不写本地存储。访客 ID 是在服务端用站点盐对 IP 地址和用户代理做 HMAC 得到的;用户代理会去掉版本号,IPv6 地址只取前 64 位。严格隐私模式下盐每天更换,同一个浏览器第二天就是新访客。参见无 Cookie 统计和哈希。
这个解释清楚吗?
我们会根据反馈修改和补充这篇内容。
提交没有成功,请稍后再试。
谢谢你的反馈,我们会据此改进这篇内容。你已经反馈过这篇了,谢谢。
