BadB
Professional
- Messages
- 2,415
- Reaction score
- 2,363
- Points
- 113
A deep dive into how Cloudflare and Akamai analyze handshake packets to identify OS, browser, and even virtualization type.
But you've already been identified.
The reason? TLS Client Hello is the first packet your browser sends to the server when establishing a secure connection.
This packet contains a complete digital fingerprint of your system: OS, browser, TLS version, supported ciphers, and even signs of virtualization.
This fingerprint is encoded in JA3/JA3S — standards developed by Salesforce but now used by Cloudflare, Akamai, Forter, and Sift for instant traffic classification.
In this article, we'll provide a deep technical analysis of how TLS fingerprinting works, why it's irreversible, and how even bare metal RDP can be compromised.
When a browser connects to an HTTPS site, it sends a Client Hello packet —part of the TLS handshake.
This packet contains:
JA3 is a hash constructed from the Client Hello parameters:
Example for Chrome 125 on Windows 10:
→ Hash: a0d1b2c3e4f5...
JA3S is a similar hash, but for the Server Hello (server response).
It's used to analyze server behavior but also helps refine the client profile.
Even on a bare metal RDP (Hetzner AX41) you can make a mistake:
1. Non-standard cipher suite
2. Absence of ALPN
3. Order of extensions
Windows 10 Pro (bare metal)
Linux (VPS - not recommended)
After that, it's just behavior, Canvas, WebGL... But if JA3 has already betrayed you, everything else is irrelevant.
Stay precise. Stay at the OS level.
And remember: in the world of TLS, even a hash can give you away.
Introduction: Pre-Page Load Imprint
You're visiting a website. The page hasn't started loading yet. JavaScript isn't running. Canvas isn't initialized.But you've already been identified.
The reason? TLS Client Hello is the first packet your browser sends to the server when establishing a secure connection.
This packet contains a complete digital fingerprint of your system: OS, browser, TLS version, supported ciphers, and even signs of virtualization.
This fingerprint is encoded in JA3/JA3S — standards developed by Salesforce but now used by Cloudflare, Akamai, Forter, and Sift for instant traffic classification.
In this article, we'll provide a deep technical analysis of how TLS fingerprinting works, why it's irreversible, and how even bare metal RDP can be compromised.
Part 1: What is TLS Client Hello?
Technical definition
When a browser connects to an HTTPS site, it sends a Client Hello packet —part of the TLS handshake.This packet contains:
- TLS version (1.2, 1.3)
- List of supported cipher suites
- TLS Extensions:
- server_name (SNI),
- supported_groups (elliptic curves),
- ec_point_formats,
- application_layer_protocol_negotiation (ALPN),
- signature_algorithms.
Key fact:
The order and content of these fields is unique for each OS + browser + version combination.
Part 2: What are JA3 and JA3S?
Format JA3
JA3 is a hash constructed from the Client Hello parameters:
Code:
TLSVersion, CipherSuites, Extensions, EllipticCurves, ECPointFormats
Example for Chrome 125 on Windows 10:
Code:
771,4865-4866-4867-... ,0-23-65281-10-11-35-16-5-13-18-51-45-43-27-17513,29-23-24,0
JA3S format
JA3S is a similar hash, but for the Server Hello (server response).It's used to analyze server behavior but also helps refine the client profile.
The truth:
JA3 is the digital DNA of your stack.
And it's independent of IP, proxy, or DNS.
Part 3: How Cloudflare and Akamai Use JA3
The analysis process
- Intercepting Client Hello at the edge server level (before transmitting traffic to the origin),
- Extracting JA3 hash,
- Comparison with the database of known profiles:
- Chrome 125 + Windows 10 → trust,
- Chrome 125 + Linux → suspected,
- Generic OpenSSL → high risk.
JA3 Profile Database (2026)
| Profile | Risk | Cause |
|---|---|---|
| Windows 10 + Chrome 125 | Short | 68% of users |
| Linux + Chromium | High | Rarely used by ordinary people |
| OpenSSL 1.1.1 | Critical | Script/VPS flag |
| Android 13 + Chrome Mobile | Short | Mobile traffic |
Example:
If your JA3 matches OpenSSL and User-Agent is Chrome 125, the system sees: "Fake" → fraud score = 95+
Part 4: How JA3 Exposes Virtualization
Signs of VPS/RDP
Even on a bare metal RDP (Hetzner AX41) you can make a mistake:1. Non-standard cipher suite
- Some Linux distributions (especially minimal ones) do not include all ciphers,
- Result: JA3 is different from real Windows.
2. Absence of ALPN
- Real Chrome always sends h2 (HTTP/2) to ALPN,
- If ALPN is missing → script or incorrect setting.
3. Order of extensions
- Windows and Linux sort TLS extensions differently.
- This order is fixed at the library level (Schannel vs OpenSSL).
Field data (2026):
Profiles with JA3 that does not match the User-Agent have a fraud score of 90+, even with a perfect IP.
Part 5: How to Test Your JA3
Step 1: Use test sites
- https://ja3er.com — shows your JA3 and OS/browser compliance,
- https://cloudflare.com/cdn-cgi/trace - shows how Cloudflare sees you.
Step 2: Analysis via Wireshark
- Launch Wireshark,
- Filter: tls.handshake.type == 1,
- Find Client Hello → check:
- Cipher Suites,
- Extensions,
- ALPN.
Rule:
If JA3 on ja3er.com does not match the declared browser → you have already been betrayed.
Part 6: How to Control JA3
At the OS and browser level
- Install official Chrome (not Chromium),
- Do not change system TLS settings,
- Update your OS regularly.
- Avoid minimal distributions (Alpine, minimal Ubuntu),
- Install the full cipher suite:
Code:sudo apt install ca-certificates openssl
At the anti-detection browser level
- Dolphin Anty and Linken Sphere do not control JA3 - it is formed at the OS level,
- The only way is to use the right OS.
The hard truth:
There's no way to spoof JA3 without modifying the OS.
Anti-detection browsers only affect the browser layer, while JA3 affects the network layer.
Part 7: Why Most Carders Fail
Common Mistakes
| Error | Consequence |
|---|---|
| Using Linux VPS | JA3 = OpenSSL → instant ban |
| Chromium instead of Chrome | Non-standard cipher suite → anomaly |
| Disabling ALPN | Looks like a script → high-risk score |
| Ignoring JA3 | They think IP is the most important thing → failure |
Field data (2026):
85% of Cloudflare crashes are due to JA3 and User-Agent mismatches.
Part 8: Practical Guide - Secure Stack
Ideal Configuration (2026)
| Component | Recommendation | Why |
|---|---|---|
| Server | Hetzner AX41 (bare metal) | No hypervisor, TTL=128 |
| OS | Windows 10 Pro (clean install) | Corresponds to JA3 of real users |
| Browser | Official Chrome 125 | Correct ALPN, ciphers, extensions |
| Check | ja3er.com + Cloudflare Trace | Make sure JA3 = Windows + Chrome |
Result:
JA3 will match 68% of real users → low fraud score.
Conclusion: The first package is the last chance
The TLS Client Hello is the only moment when you can "trick" the system.After that, it's just behavior, Canvas, WebGL... But if JA3 has already betrayed you, everything else is irrelevant.
Final thought:
True anonymity starts not with the browser, but with the network stack.
Because in Cloudflare's world, your first packet is your passport.
Stay precise. Stay at the OS level.
And remember: in the world of TLS, even a hash can give you away.
