浏览器指纹识别的工作原理
用户访问网站时,网站会收到 User-Agent、浏览器接受的语言等信息。JavaScript 随后可以查询浏览器 API,并发送更多设备及其渲染行为信息。网站会将这些信息组合成特征记录或哈希值,再与后续访问进行比较。
与 Cookie 不同,浏览器指纹不是从存储的标识符中读取,而是每次重新推断。匹配结果基于概率:相似设备可能产生相同结果,浏览器更新以及设置或硬件变化也可能改变指纹。
浏览器指纹使用的特征
- **软件:**浏览器版本、操作系统和支持的功能。
- **显示与硬件:**视口、屏幕尺寸、色彩深度、触控支持和逻辑处理器数量。
- **渲染:**受图形硬件、驱动程序和软件影响的 Canvas、WebGL 和 AudioContext 输出。
- **区域设置与配置:**时区、语言、字体可用情况和无障碍偏好设置。
服务还可能将这些信息与 TLS 指纹识别结合使用。TLS 指纹来自连接的 ClientHello 模式,而不是 JavaScript 浏览器 API。
浏览器指纹与 Cookie 和 IP 的区别
| 方法 | 信息来源 | 发生变化的情况 |
|---|---|---|
| 浏览器指纹 | 浏览器和设备特征 | 软件、设置或硬件发生变化 |
| Cookie | 已存储的网站标识符 | 被清除、拦截或过期 |
| IP 地址 | 网络连接 | 网络或代理发生变化 |
网站可以把浏览器回传的 Cookie 用作该浏览器环境的稳定标识符,但 Cookie 无法证明浏览器、设备或用户的身份。浏览器指纹用于估算两次访问是否来自同一客户端。网站通常会将这三类信号关联起来分析。
浏览器指纹识别为何会影响代理使用
轮换代理会改变网站看到的 IP 地址,但不会改变 JavaScript 执行结果、显示属性或常规浏览器请求头。如果同一个稳定指纹在短时间内对应多个 IP,网站可能会认定这些请求相互关联。
地区信息不一致也可能影响风险评分。例如,IP 位于一个国家,而时区却与该国明显不匹配,这可能显得异常,不过正常旅行的用户也可能出现同样的情况。浏览器指纹只是机器人检测的判断依据之一,请求频率、Cookie 和账号历史记录同样重要。
负责任地应对浏览器指纹识别
- 使用当前版本的主流浏览器,并确保支持网站所需的功能。
- 在一次相关会话期间,始终使用同一套前后一致的浏览器环境和 Cookie 存储。
- 不要在不同请求之间轮换伪造的参数值。相互矛盾的设置可能导致页面无法正常运行,也会让客户端更容易被识别。
- 遇到限速时降低请求频率,并遵守网站条款和 robots.txt 规则。
常见问题
代理能隐藏我的浏览器指纹吗?
代理本身无法做到。代理会改变网站看到的 IP 地址,但浏览器和设备特征通常保持不变。
无痕模式能阻止浏览器指纹识别吗?
不能。无痕模式会使用独立的临时 Cookie 存储区,并且不会在无痕会话结束后保留本地浏览记录,但仍会暴露许多相同的浏览器、显示和渲染属性。
我的浏览器指纹是唯一且永久不变的吗?
不一定。浏览器指纹可能具有足够的辨识度,可识别来自同一客户端的重复访问,但相似设备的指纹也可能重合;浏览器、驱动程序、硬件或设置更新后,指纹也可能发生变化。