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