frontguard probe

/sitemap.xml · GET · served by probe-backend on 127.0.0.1:18081

JA4 family fingerprints (X-Fg-*)

X-Fg-Sniprobe.blksails.cn
X-Fg-Ja4t13d1011h2_61a7ad8aa9b6_3fcd1a44f3e3
X-Fg-Ja4st130200_1301_a56c5b993250
X-Fg-Ja4hge20cn030000_859c524ed96e_f3c642ca530a_7a038f6cda6f
X-Fg-Ja4t62727_2-4-8-1-3_1460_7
X-Fg-Ja4ts— not set —
X-Fg-Os-ProbeWindows
X-Fg-Os-ScoresWindows=55
X-Fg-Verdict— not set —
X-Fg-Verdict-Version1
X-Fg-Session-IdGk7TLDU7QS8NTAdx

Request context

Hostprobe.blksails.cn
User-AgentMozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
X-Forwarded-For216.73.217.17
X-Forwarded-Proto— not set —
Accept*/*
Accept-Language— not set —
Accept-Encodinggzip, br, zstd, deflate

Browser fingerprint (WeChat Pay SDK fingerprint2.js)

Fingerprint — loading SDK from wx.gtimg.com … —
Computed in
SDK URL https://wx.gtimg.com/wxpay_h5/fingerprint2.min.1.5.1.js

Pure-client-side SHA-style hash over UA, screen, timezone, fonts, canvas, WebGL, plugins, etc. (FingerprintJS-derived; bundled by WeChat Pay for v2 payment risk control). Differs from server-side X-Fg-* — those reflect TCP/TLS/HTTP layers visible to frontguard; this one reflects browser-only attributes only the JS runtime can see.

WebRTC leak / VPN consistency

Server-seen Remote IP (filled by /fg-myip)
IPv4 Address
IPv6 Address
WebRTC Support
RTCPeerConnection — checking … —
RTCDataChannel — checking … —
WebRTC Leak Test
Local IP Leak — probing (≤5s) … —
Remote IP Match — probing (≤5s) … —
WebRTC IPs
Local IP Address
Public IPv4 Address
Public IPv6 Address
Raw ICE candidates

Powered by /probe.js (bundled WebRTC + fingerprint2 drop-in; the WebRTC half is also served standalone at /fg-webrtc.js). Fetches /fg-myip to learn the server-seen Remote IP, then enumerates ICE candidates via public STUN (Cloudflare + Tencent QQ). Local IP Leak = any RFC1918 / link-local address exposed (mDNS .local hashes are the protective default — NOT a leak). Remote IP Match = STUN-reflected public IP vs the IP the server actually saw on the wire; mismatch means the VPN/proxy is split-routing UDP and exposing the user's real ISP IP. Both halves report to /_fg/report for server-side correlation against the access log.

Raw request headers (19)
Accept: */*
Accept-Encoding: gzip, br, zstd, deflate
Cookie: _fg_vid=HKJzlgQPj_1ILlAoWAvksQ
Host: probe.blksails.cn
User-Agent: Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)
X-Fg-Action: allow
X-Fg-Ja4: t13d1011h2_61a7ad8aa9b6_3fcd1a44f3e3
X-Fg-Ja4h: ge20cn030000_859c524ed96e_f3c642ca530a_7a038f6cda6f
X-Fg-Ja4s: t130200_1301_a56c5b993250
X-Fg-Ja4t: 62727_2-4-8-1-3_1460_7
X-Fg-Matched-Rules: ua_no_accept_lang
X-Fg-Os-Probe: Windows
X-Fg-Os-Scores: Windows=55
X-Fg-Remote-Addr: 216.73.217.17
X-Fg-Score: 15
X-Fg-Session-Id: Gk7TLDU7QS8NTAdx
X-Fg-Sni: probe.blksails.cn
X-Fg-Verdict-Version: 1
X-Forwarded-For: 216.73.217.17
Raw JSON
{
  "method": "GET",
  "path": "/sitemap.xml",
  "headers": {
    "Host": "probe.blksails.cn",
    "User-Agent": "Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)",
    "Accept": "*/*",
    "Accept-Encoding": "gzip, br, zstd, deflate",
    "Cookie": "_fg_vid=HKJzlgQPj_1ILlAoWAvksQ",
    "X-Fg-Action": "allow",
    "X-Fg-Ja4": "t13d1011h2_61a7ad8aa9b6_3fcd1a44f3e3",
    "X-Fg-Ja4h": "ge20cn030000_859c524ed96e_f3c642ca530a_7a038f6cda6f",
    "X-Fg-Ja4s": "t130200_1301_a56c5b993250",
    "X-Fg-Ja4t": "62727_2-4-8-1-3_1460_7",
    "X-Fg-Matched-Rules": "ua_no_accept_lang",
    "X-Fg-Os-Probe": "Windows",
    "X-Fg-Os-Scores": "Windows=55",
    "X-Fg-Remote-Addr": "216.73.217.17",
    "X-Fg-Score": "15",
    "X-Fg-Session-Id": "Gk7TLDU7QS8NTAdx",
    "X-Fg-Sni": "probe.blksails.cn",
    "X-Fg-Verdict-Version": "1",
    "X-Forwarded-For": "216.73.217.17"
  }
}

If JA4 / JA4S / JA4H / JA4T / OS-Probe rows are empty, the request did not pass through frontguard, or the server-side capturer could not observe the SYN packet for this connection. JA4T requires the kernel-level capturer to attach to the NIC the public traffic arrives on (loopback hairpins produce empty results).