免費工具

JA4 指紋解析工具

貼上 JA4 或 JA4_r,查看用戶端在 TLS 交握中提供了甚麼。

一次交握,三個部分

t13d1516h2_8daaf6152771_e5627efa2ab1

  • tTCP
  • 13TLS 1.3
  • d伺服器名稱
  • 15加密套件
  • 16擴充功能
  • h2HTTP/2
  • 加密套件雜湊
  • 擴充功能雜湊

解析指紋

範例

在瀏覽器本機執行,貼上的內容不會傳送到任何地方。

格式

三個部分,一次交握

  1. t13d1516h2

    可讀:協定、版本、SNI、加密套件數、擴充功能數、首個 ALPN 值。

  2. 8daaf6152771

    加密套件排序後進行 SHA-256,截取 12 個字元。

  3. e5627efa2ab1

    擴充功能排序(不含 SNI 及 ALPN),再按原有次序附上簽章演算法,以相同方式雜湊。

JA3 與 JA4

JA4 為何取代 JA3

項目JA3JA4
雜湊對所有欄位進行一次 MD5可讀前綴加兩個簡短 SHA-256 雜湊
擴充功能次序按傳送次序雜湊,Chrome 打亂次序後每次連線都會得到新的 JA3先行排序,次序不影響結果
毋須查表即可閱讀否協定、版本、SNI、計數、ALPN
QUIC沒有標記以 q 開頭
授權BSD 3-ClauseBSD 3-Clause(僅限 JA4)

來源

取得請求的 JA4

只有終止 TLS 的一方才能看到 ClientHello,頁面中的指令碼永遠看不到。

  • Cloudflare

    Bot Management 在規則中提供 cf.bot_management.ja4,在 Workers 中提供 request.cf.botManagement.ja4。

  • AWS WAF

    規則可比對 JA4 指紋,WAF 記錄亦會保存它。

  • 自建代理伺服器

    任何終止 TLS 的元件都能計算 JA4,並透過 X-JA4 等標頭傳遞。

  • Wireshark

    FoxIO 的外掛程式為封包擷取加入 JA4 欄位。

Agentscan

每項判定旁均附 JA4

在每次 Agentscan 檢查中附上 JA4。它會與判定、位址及網絡一併儲存,記錄可顯示每個請求背後的 TLS 用戶端。

  • 在 Cloudflare Bot Management 之後,我們的 Worker 會自動讀取並傳送。
  • 在其他環境,請將它放入 ja4 欄位或 X-JA4 標頭。
  • 沒有邊緣節點便沒有 JA4:記錄會如實說明,而不會猜測一個。
附 JA4 的 Agentscan 檢查
curl -X POST https://ipscanner.io/v1/agentscan/check \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "ip": "203.0.113.7",
    "user_agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/129.0.0.0 Safari/537.36",
    "ja4": "t13d1516h2_8daaf6152771_e5627efa2ab1"
  }'

常見問題

JA4 指紋問答

甚麼是 JA4 指紋?

一個描述 TLS ClientHello 的短字串:用戶端提供的協定及版本、是否傳送伺服器名稱、列出多少加密套件及擴充功能、首個 ALPN 值,其後是這些清單的兩個雜湊。FoxIO 於 2023 年發布,作為 JA3 的後繼方案。

t13d1516h2 是甚麼意思?

基於 TCP 的 TLS、1.3 版本、SNI 中帶有網域名稱、15 個加密套件、16 個擴充功能,首個 ALPN 值為 HTTP/2。每個 JA4 均以這樣的部分開頭,這亦是唯一毋須查表便能讀懂的部分。

JA4 與 JA3 有何不同?

JA3 是按傳送次序對交握欄位進行的一次 MD5。Chrome 自 2023 年起打亂擴充功能次序,令同一瀏覽器每次連線都得到新的 JA3。JA4 先將清單排序,因此保持穩定,並保留可讀前綴。

JA4 可以偽造嗎?

可以。curl-impersonate、uTLS 等工具能複製瀏覽器的 ClientHello,因此單憑瀏覽器 JA4 不能證明對方是瀏覽器。它在與其他訊號矛盾時最為有用,例如 Chrome 的 User-Agent 卻帶著 Python 的交握。

JA4 中的雜湊可以還原嗎?

不可以。b 及 c 部分是截短為 12 個字元的 SHA-256 雜湊。如要查看背後的加密套件及擴充功能,請記錄 JA4_r,它以明文保留這些清單。

從哪裏取得請求的 JA4?

從終止 TLS 的環節取得:CDN、負載平衡器或反向代理伺服器。頁面中的 JavaScript 無法讀取,因為交握在任何指令碼執行前已經結束。

JA4 可以免費使用嗎?

JA4(TLS 用戶端指紋)採用 BSD 3-Clause 授權。其他 JA4+ 方法(JA4S、JA4H、JA4X、JA4T 等)採用 FoxIO License 1.1,對商業用途設有條件,將它們整合至產品前請先閱讀該授權。