Skip to content

什么是浏览器指纹,怎么防止被追踪?

INFO

FingerprintJS指纹

浏览器指纹是指通过收集浏览器和设备的一系列信息(如浏览器版本、操作系统、屏幕分辨率、已安装字体、时区、插件、Canvas/WebGL 输出等)拼接成一个 几乎唯一的标识,用于识别或追踪同一个设备/浏览器,而不需要 cookie。

指纹不是单一数据点,而是多个属性的组合。常见指纹项包括:

  • 用户代理(User-Agent)
  • 屏幕分辨率 / 色深
  • 时区、语言/区域设置
  • 已安装字体与字体渲染差异
  • 已启用的插件 / MIME 类型
  • Canvas / WebGL 渲染输出(绘图指纹)
  • 字体测量、文本抗锯齿差异
  • 音频指纹(通过 audio context)
  • 可用硬件并行度 / 核心数
  • 首选表格格式、localStorage / sessionStorage 支持
  • 是否启用了 Do Not Track、cookies 是否可用
  • WebRTC 本地 IP(可能泄露本地地址)

把这些属性拼在一起,许多网站可以把同一浏览器标为“同一份指纹”。

浏览器指纹的特点

  • 即使清除 cookie、使用私密窗口,指纹仍可把你“认出来”。
  • 用于跨站追踪、广告定向、反作弊/风控、关联账户等。
  • 隐私防护难度高:很多属性是浏览器或硬件层面的,被动泄露。

INFO

JA3/JA4指纹

JA3 指纹 是一种用于识别 TLS 客户端特征 的技术。
它通过分析 TLS 握手阶段中客户端发送的 Client Hello 报文中的字段,生成一个 可唯一标识客户端实现的哈希指纹

换句话说:
每种浏览器、应用、恶意程序在建立 HTTPS 连接时的 TLS 参数组合不同,
这些差异能形成一种“网络层指纹”。


JA3 的组成原理

JA3 从以下 5 个字段中提取数据:

  1. SSL Version
  2. Cipher Suites(加密套件列表)
  3. Extensions(TLS 扩展)
  4. Elliptic Curves(支持的椭圆曲线)
  5. Elliptic Curve Formats(曲线格式)

然后将这些字段连接成一个字符串,例如:771,4865-4866-4867,0-11-10-35-16,23-24,0 最后对这个字符串做 MD5 哈希,生成最终的 JA3 指纹:e7d705a3286e19ea42f587b344ee6865

JA4 是 JA3 的改进版本(由 Fox-IT / Salesforce 提出,2023 年开始流行)。
它解决了 JA3 存在的一些问题,比如:

  • JA3 对顺序变化敏感(例如 Cipher Suites 顺序不同会导致指纹完全不同);
  • JA3 仅针对 客户端(Client Hello)
  • 无法很好地区分 轻微修改的实现

IP Purity Detection