TLS 指纹查询(JA3 / JA4)

TLS ClientHello 指纹(JA3 / JA4)是你浏览器在 TLS 握手时暴露的唯一身份特征。 Cloudflare / Akamai / ChatGPT 都用它识别异常客户端 / 自动化脚本, 不匹配主流浏览器指纹 = 触发 5 秒盾或 Cloudflare 验证。

通过 tls.peet.ws 服务读取(已知公开 TLS fingerprint API)

什么是 JA3 / JA4

JA3:2017 年 Salesforce 提出。基于 ClientHello 包的「TLS Version + 加密套件 + 扩展 + Curves + Curve Points」生成一个 MD5 hash。同一浏览器版本的 JA3 通常一致,可用于识别"是不是 Chrome 120"。

JA4:2024 年 FoxIO 提出的新一代。改进了 JA3 在 TLS 1.3 时代的局限(扩展乱序问题),输出更稳定的指纹。

为什么这影响代理

  • Cloudflare:对每个 ClientHello 计算 JA3 / JA4,比对自有规则库,异常指纹直接触发 5 秒盾 / 拒绝
  • OpenAI / Anthropic:同 Cloudflare,Cloudflare 是它们的 CDN
  • Reality 协议:用 uTLS 库伪装成 Chrome 的 ClientHello,JA3 与 Chrome 一致,所以反向探测失败
  • Python requests / curl:JA3 与 Chrome 不同,Cloudflare 一眼识别,所以 requests 抓不了 Cloudflare 站点

如何「修」TLS 指纹

  • 用真浏览器:Chrome / Firefox / Safari 各有标准指纹,Cloudflare 接受
  • 自动化用 curl_cffi / tls-client:Python 库,模拟 Chrome JA3
  • Go 用 uTLS:VLESS Reality 内核就是 uTLS
  • 不要用 OkHttp / Java URLConnection / Python requests 直接访问 Cloudflare 保护站

对你日常使用的影响

普通用户在 Chrome / Edge / Safari 中使用是不会触发 TLS 指纹风控的(浏览器本身指纹是干净的)。会触发的场景:

  • 用 Chrome 装了奇怪扩展改了 TLS
  • 用反指纹浏览器(AdsPower 等)指纹配置异常
  • 用 Linux 老版 OpenSSL 内嵌的浏览器
  • 用部分国产浏览器(可能修改了 TLS 栈)