← Back to blog
FINGERPRINT nodetonet.com

TCP fingerprint spoofing — JA3, JA4 and why User-Agent alone is not enough

N Nodetonet Team
April 17, 2026 9 min read

Every developer eventually learns to rotate the User-Agent header. Fewer learn that User-Agent is the easiest field to lie about — and therefore the least trusted on the receiving end. Modern bot detection runs a layer lower: it fingerprints the TLS ClientHello, the TCP options, and the exact byte ordering your stack puts on the wire. Most of that is set by your OS and your TLS library, not your code, so it is much harder to fake.

TL;DR: A proxy changes your exit IP, but it does not change your TLS fingerprint. If your scraper runs Python on Linux, every connection carries a Python JA3 and a Linux TCP fingerprint — regardless of which carrier IP it exits from. Nodetonet's TCP fingerprint spoofing rewrites that at the edge so the target sees a real browser instead of automation tooling.

The fingerprints that matter

Three families dominate, and all are computed before a single HTTP byte is exchanged:

None of these change when you route through a standard proxy. If your tool is Python on Linux, every connection it makes carries a Python JA3 and a Linux TCP fingerprint — regardless of which exit IP it appears from. To the target, "Chrome User-Agent on a mobile carrier IP but Python's JA3" is a four-alarm fire. The IP reputation buys you nothing if the TLS hello gives you away immediately.

To verify what a target actually sees from your current connection, use our free What is my IP tool — it surfaces IP, ASN and carrier info in one click. For a reference on how CGNAT carrier IPs earn their trust level, see the carrier-grade NAT glossary entry.

What the fingerprint comparison looks like in practice

Stack JA3 / JA4 result TCP signature Bot-detection verdict
Python requests (urllib3 + OpenSSL) Well-known automation hash Linux default window / MSS Flagged immediately on hardened targets
Node.js fetch / axios Node TLS hash — distinct from browsers Linux or Windows defaults Flagged on most CDN bot products
Headless Chromium (Puppeteer / Playwright) Matches real Chrome — passes JA3/JA4 Matches OS Chrome runs on Passes unless behavioural signals betray it
Any tool + Nodetonet fingerprint spoofing Rewritten to chosen browser profile Rewritten to match chosen OS Indistinguishable from that browser at TLS/TCP level

What Nodetonet rewrites for you

On any proxy you can toggle TCP fingerprint spoofing in the advanced settings panel. When enabled, the edge node tears down the incoming connection at the application boundary and re-establishes the outbound connection with a fresh ClientHello that matches the chosen profile. Available profiles include:

The rewrite covers JA3, JA4, ALPN order, the GREASE values real browsers inject, the exact extension permutation Chrome ships this quarter, and the TCP window scaling and MSS that the underlying OS would set. From the target's perspective, the connection is indistinguishable from the selected browser running on that platform.

This is most valuable when your exit IP is already trustworthy — for example a mobile proxy on a real carrier network — and the only remaining signal that exposes automation is the TLS layer itself. It pairs naturally with rotating proxy pools: fresh IPs across a pool plus a consistent, browser-matching TLS fingerprint removes two of the three primary detection vectors simultaneously. The third — behavioural signals in the browser — requires a fully browser-based client like Playwright and is outside the scope of network-layer spoofing.

Fingerprint spoofing also complements SOCKS5 proxies for HTTP/HTTPS traffic, though note the limitation described in the next section.

What it cannot do

Spoofing is necessary but not sufficient on its own. The same target that inspects your ClientHello is almost certainly also checking:

Treat TCP fingerprint spoofing as the floor, not the ceiling. It plugs the TLS-layer leak that nothing else plugs, but it will not turn a headless scraper into a real user on its own. Use it as one layer of a defence-in-depth approach: real carrier IP + clean TLS fingerprint + human-like request pacing + sticky sessions for stateful flows.

When to turn it on — and when to leave it off

The rewrite adds roughly 20–40 ms of one-time handshake overhead per new TCP connection, because the edge must perform a fresh outbound TLS negotiation. For long-lived connections this is invisible. For high-frequency, short-burst patterns (many requests per second, each on a fresh socket) the overhead accumulates. If your target does not fingerprint TLS — most plain APIs and internal tooling do not — leave it off and save the latency.

Targets that historically fingerprint aggressively: e-commerce platforms, travel aggregators, social networks, and anything fronted by Cloudflare Bot Management, Akamai Bot Manager or PerimeterX. For those, enable it by default. You can also run a quick diagnostic by first sending a request without spoofing and checking whether the proxy checker or the target's response changes when you enable it — that tells you instantly whether the site is actively inspecting TLS.

Where fingerprint spoofing fits in the wider anti-detection stack

A robust anti-detection setup typically combines several independent layers. Here is how TCP fingerprint spoofing fits alongside other Nodetonet features:

None of these layers replaces the others. Used together, they address IP reputation, geographic plausibility, TLS identity, session consistency and access control in one platform.

Related reading

Frequently asked questions

What is TCP fingerprint spoofing and why does it matter for proxies?
TCP fingerprint spoofing rewrites the TLS ClientHello (JA3/JA4 hash) and TCP-level parameters so that the connection looks like it originates from a chosen browser and OS rather than from automation tooling. It matters because a standard proxy only changes your exit IP — the TLS layer still exposes your real stack, and modern anti-bot systems inspect that layer before processing a single HTTP byte.
What is the difference between JA3 and JA4?
JA3 hashes the TLS ClientHello fields (version, cipher suites, extensions, elliptic curves) into a single MD5 string. JA4 is its successor: more structured, uses a different encoding that is harder to collide deliberately, and is now the default signal surfaced by major CDN bot products including Cloudflare and Akamai. Nodetonet rewrites both.
Does fingerprint spoofing work with SOCKS5 proxies?
Nodetonet applies TLS fingerprint rewriting for HTTP and HTTPS connections. For SOCKS5, the protocol carries your original TCP stream transparently by design, so the rewrite cannot reach inside the encrypted stream. If fingerprint spoofing is critical for your use case, use the HTTP or HTTPS proxy protocol so the edge can intercept and rewrite the ClientHello.
How much latency does enabling TCP fingerprint spoofing add?
The edge performs an additional outbound TLS handshake for each new TCP connection, which typically adds 20–40 ms of one-time overhead. For long-lived connections this is negligible. For patterns that open many short-lived sockets per second, the overhead accumulates. Leave it off for APIs that do not inspect TLS fingerprints to preserve latency.
Which browser profiles are available for fingerprint spoofing?
Current profiles include Chrome 121 on Windows 11, Chrome 120 on Android 14, Safari 17 on macOS Sonoma, Safari Mobile on iOS 17, and Firefox 123 on Linux. Each profile covers JA3, JA4, ALPN order, GREASE values, extension permutation, and the TCP window / MSS that the matching OS would produce.
Does TCP fingerprint spoofing prevent all bot detection?
No. It removes the TLS-layer signal that identifies your automation stack, but bot detection systems also inspect HTTP/2 frame order, request header order and casing, and behavioural signals (mouse movement, scroll velocity). For full coverage you need a clean carrier IP, a browser-matching TLS fingerprint, browser-emulating request headers, and — for JavaScript-heavy targets — a real browser like Playwright. See our mobile proxies and rotating proxies guide for the broader picture.
Is TCP fingerprint spoofing available on all proxy types in Nodetonet?
Yes, the setting is available in the advanced configuration for any proxy you manage in the panel — mobile, rotating or upstream. You can enable or disable it per proxy without changing your endpoint credentials or restarting the connection.
What targets should I prioritise for enabling fingerprint spoofing?
Enable it by default for e-commerce platforms (Amazon, eBay), travel aggregators (Booking, Skyscanner), social networks (Instagram, TikTok), and any site fronted by Cloudflare Bot Management, Akamai Bot Manager or PerimeterX. For plain APIs and internal tooling that do not inspect TLS, leave it off to save the handshake overhead.
N

Nodetonet Team

Building Nodetonet — a prepaid proxy + tunneling platform that replaces ngrok, Cloudflared and a residential proxy provider with a single panel.