ΠΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΡ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° ΠΏΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ°ΠΌ TLS ClientHello β Π΄ΠΎ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ HTTP-Π·Π°ΠΏΡΠΎΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠ°Π½. ΠΠ°ΠΆΠ΄ΡΠΉ TLS-ΠΊΠ»ΠΈΠ΅Π½Ρ (Π±ΡΠ°ΡΠ·Π΅Ρ, curl, Python requests, Go http) Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠ½ΡΠΉ Β«ΠΎΡΠΏΠ΅ΡΠ°ΡΠΎΠΊΒ», ΠΊΠΎΡΠΎΡΡΠΉ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅Π»Π°ΡΡ Π±Π΅Π· Π·Π°ΠΌΠ΅Π½Ρ TLS-ΡΡΠ΅ΠΊΠ°.
ΠΠ°ΠΊ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ
ΠΡΠΈ TLS-Ρ Π΅Π½Π΄ΡΠ΅ΠΉΠΊΠ΅ ΠΊΠ»ΠΈΠ΅Π½Ρ ΠΎΡΠΏΡΠ°Π²Π»ΡΠ΅Ρ ClientHello Ρ Π½Π°Π±ΠΎΡΠΎΠΌ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ²:
- ΠΠ΅ΡΡΠΈΡ TLS
- Cipher suites (ΠΏΠΎΡΡΠ΄ΠΎΠΊ ΠΈ Π½Π°Π±ΠΎΡ)
- Extensions (SNI, ALPN, supported groups, signature algorithms)
- Compression methods
Π₯Π΅Ρ ΡΡΠΈΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² = fingerprint. ΠΠ΄ΠΈΠ½ ΠΈ ΡΠΎΡ ΠΆΠ΅ Π±ΡΠ°ΡΠ·Π΅Ρ Π½Π° ΡΠ°Π·Π½ΡΡ ΠΌΠ°ΡΠΈΠ½Π°Ρ Π΄Π°ΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΉ ΠΎΡΠΏΠ΅ΡΠ°ΡΠΎΠΊ.
JA3 vs JA4
| JA3 | JA4 | |
|---|---|---|
| Π€ΠΎΡΠΌΠ°Ρ | MD5-Ρ Π΅Ρ ΡΡΡΠΎΠΊΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² | Π§ΠΈΡΠ°Π΅ΠΌΠ°Ρ ΡΡΡΠΎΠΊΠ° t13d1516h2_... |
| Π£ΡΡΠΎΠΉΡΠΈΠ²ΠΎΡΡΡ | ΠΠΎΠΌΠ°Π΅ΡΡΡ ΠΏΡΠΈ ΡΠ°Π½Π΄ΠΎΠΌΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠΎΡΡΠ΄ΠΊΠ° extensions (Chrome 110+) | Π‘ΠΎΡΡΠΈΡΡΠ΅Ρ extensions β ΡΡΡΠΎΠΉΡΠΈΠ² ΠΊ ΡΠ°Π½Π΄ΠΎΠΌΠΈΠ·Π°ΡΠΈΠΈ |
| ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° | Π¨ΠΈΡΠΎΠΊΠ°Ρ (Cloudflare, Suricata, Zeek) | Π Π°ΡΡΡΡ (FoxIO, fingerproxy, Auth0) |
JA4 β ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΡΠΉ ΡΠΎΡΠΌΠ°Ρ Π½Π° 2025+.
Π§ΡΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ
| JA4 fingerprint | ΠΠ»ΠΈΠ΅Π½Ρ |
|---|---|
| Π£Π½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ Π΄Π»Ρ Chrome/Edge | Chromium-based Π±ΡΠ°ΡΠ·Π΅ΡΡ |
| Π£Π½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ Π΄Π»Ρ Firefox | Firefox |
| Π£Π½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ Π΄Π»Ρ Safari | Safari/WebKit |
python-requests/* | Python requests β Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠ½ΡΠΉ Π½Π°Π±ΠΎΡ cipher suites |
go-http-client/* | Go http.Client |
node-fetch/* | Node.js fetch/undici |
Headless Chrome (Puppeteer/Playwright) ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΡ ΠΆΠ΅ JA4, ΡΡΠΎ ΠΈ ΠΎΠ±ΡΡΠ½ΡΠΉ Chrome β ΡΡΠ° ΡΠ΅Ρ Π½ΠΈΠΊΠ° Π½Π΅ ΠΎΡΠ»ΠΈΡΠ°Π΅Ρ headless ΠΎΡ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ Π±ΡΠ°ΡΠ·Π΅ΡΠ°. ΠΠΎ ΠΎΡΡΠ΅ΠΊΠ°Π΅Ρ Π²ΡΠ΅ Π½Π΅-Π±ΡΠ°ΡΠ·Π΅ΡΠ½ΡΠ΅ HTTP-ΠΊΠ»ΠΈΠ΅Π½ΡΡ.
ΠΠ½ΡΡΡΡΠΌΠ΅Π½ΡΡ
fingerproxy (ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΠΌΡΠΉ)
Go reverse proxy (~10 MB), ΡΠ΅ΡΠΌΠΈΠ½ΠΈΡΡΠ΅Ρ TLS, Π²ΡΡΠΈΡΠ»ΡΠ΅Ρ JA3/JA4, Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠΈ, ΠΏΡΠΎΠΊΡΠΈΡΡΠ΅Ρ Π½Π° upstream ΠΏΠΎ HTTP.
Client β fingerproxy (TLS termination + JA4) β nginx (HTTP) β App
# Docker Compose
fingerproxy:
image: ghcr.io/wi1dcard/fingerproxy:latest
ports:
- "443:443"
environment:
- UPSTREAM=nginx:80
volumes:
- ./certs:/certs:roΠΡΠΎΠ΄Π°ΠΊΡΠ½-ready: Subscan.io ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°Π΅Ρ 40M req/day ΡΠ΅ΡΠ΅Π· fingerproxy.
ja4-nginx-module
ΠΠ°ΡΠΈΠ²Π½ΡΠΉ nginx-ΠΌΠΎΠ΄ΡΠ»Ρ ΠΎΡ FoxIO. Π’ΡΠ΅Π±ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΡΠ±ΠΎΡΠΊΡ nginx Ρ ΠΌΠΎΠ΄ΡΠ»Π΅ΠΌ. ΠΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½Π΅Π΅ fingerproxy (Π½Π΅Ρ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ hop), Π½ΠΎ ΡΠ»ΠΎΠΆΠ½Π΅Π΅ Π² Π΄Π΅ΠΏΠ»ΠΎΠ΅.
Cloudflare
ΠΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅Ρ JA3/JA4 ΠΈΠ· ΠΊΠΎΡΠΎΠ±ΠΊΠΈ Π² cf-ja3-fingerprint Π·Π°Π³ΠΎΠ»ΠΎΠ²ΠΊΠ΅. ΠΠ΅ Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎ Π΄Π»Ρ Π Π€ (ΡΠΌ. ΠΠ°ΡΠΈΡΠ° API ΠΎΡ ΡΠΊΡΠ΅ΠΉΠΏΠΈΠ½Π³Π°).
Π€Π°Π·Ρ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ
- ΠΠΎΠ³ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ (2 Π½Π΅Π΄Π΅Π»ΠΈ) β ΡΠΎΠ»ΡΠΊΠΎ Π·Π°ΠΏΠΈΡΡΠ²Π°ΡΡ JA4 Π² access log, ΡΠΎΠ±ΠΈΡΠ°ΡΡ fingerprints ΡΠ΅Π°Π»ΡΠ½ΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΉ
- Allowlist β ΡΡΠΎΡΠΌΠΈΡΠΎΠ²Π°ΡΡ ΡΠΏΠΈΡΠΎΠΊ Π±ΡΠ°ΡΠ·Π΅ΡΠ½ΡΡ fingerprints
- ΠΡΠ³ΠΊΠ°Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° β Π½Π΅ΠΈΠ·Π²Π΅ΡΡΠ½ΡΠ΅ fingerprints β ΠΏΠΎΠ²ΡΡΠ΅Π½Π½ΡΠΉ suspicion score ΠΈΠ»ΠΈ tarpit
- ΠΡΡΡΠΊΠ°Ρ Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠ° β blocklist ΠΈΠ·Π²Π΅ΡΡΠ½ΡΡ scraping-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ
ΠΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ
- ΠΠ΅ ΠΎΡΠ»ΠΈΡΠ°Π΅Ρ headless Chrome ΠΎΡ ΠΎΠ±ΡΡΠ½ΠΎΠ³ΠΎ Chrome
- ΠΡΠΈ ΠΎΠ±Π½ΠΎΠ²Π»Π΅Π½ΠΈΠΈ Π±ΡΠ°ΡΠ·Π΅ΡΠ° fingerprint ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡΡΡ β allowlist Π½ΡΠΆΠ½ΠΎ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡΡ
- ΠΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ hop (fingerproxy) Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ ~1ms Π»Π°ΡΠ΅Π½ΡΠ½ΠΎΡΡΠΈ
- ΠΠ΅ ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π΄Π»Ρ HTTP (Π±Π΅Π· TLS) β ΡΠΎΠ»ΡΠΊΠΎ HTTPS
Π‘ΡΠΎΠΉΠΊΠΎΡΡΡ
ΠΡΡΠΎΠΊΠ°Ρ β ΠΏΠΎΠ΄ΠΌΠ΅Π½ΠΈΡΡ JA4 Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π±Π΅Π·:
- ΠΠ°ΠΌΠ΅Π½Ρ TLS-Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠΈ ΠΊΠ»ΠΈΠ΅Π½ΡΠ° (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ
curl-impersonateΠ²ΠΌΠ΅ΡΡΠΎ curl) - ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ headless Chrome (Π΄ΠΎΡΠΎΠ³ΠΎ ΠΏΠΎ ΡΠ΅ΡΡΡΡΠ°ΠΌ)
- ΠΡΠΎΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ΅ΡΠ΅Π· ΡΠ΅Π°Π»ΡΠ½ΡΠΉ Π±ΡΠ°ΡΠ·Π΅Ρ
ΠΡΠΎ ΠΎΠ΄Π½Π° ΠΈΠ· ΡΠ°ΠΌΡΡ Π½Π°Π΄ΡΠΆΠ½ΡΡ ΡΠ΅Ρ Π½ΠΈΠΊ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π½Π° 2025-2026.
Π‘Π²ΡΠ·Π°Π½Π½ΡΠ΅ Π·Π°ΠΌΠ΅ΡΠΊΠΈ
- ΠΠ°ΡΠΈΡΠ° API ΠΎΡ ΡΠΊΡΠ΅ΠΉΠΏΠΈΠ½Π³Π° β ΠΎΠ±ΡΠ°Ρ ΡΡΡΠ°ΡΠ΅Π³ΠΈΡ
- ΠΠΎΠ²Π΅Π΄Π΅Π½ΡΠ΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· ΡΡΠ°ΡΠΈΠΊΠ° β L7-ΡΠΈΠ³Π½Π°Π»Ρ (JA4 ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π½Π° L4/L5)
- HMAC-ΠΏΠΎΠ΄ΠΏΠΈΡΡ API Π·Π°ΠΏΡΠΎΡΠΎΠ² β L7-ΠΏΠΎΠ΄ΠΏΠΈΡΡ Π·Π°ΠΏΡΠΎΡΠΎΠ²