← The blog
Technical

How anti-bot systems work

08/29/2026 · 9 min read · by WyndPath
How anti-bot systems work

When a scraper returns a 403 error or a "Just a moment…" page instead of the content you expected, it's never by chance. An anti-bot system observed the request, compared it to what it expects from a real browser, and spotted an inconsistency. These systems don't ask a single question, they stack several. Here are the layers they go through, in the order they come into play.

The five layers of an anti-bot check
In the order they come into play. A single inconsistency is enough to block you.
1 Network IP reputation: datacenter, residential or mobile, and pace 2 TLS Handshake fingerprint (JA3 then JA4) 3 Browser Canvas, WebGL, fonts, properties, signal consistency 4 Behavior Mouse, scroll, pace: human irregularity 5 Challenge Invisible score, proof-of-work, CAPTCHA as a last resort

Layer 1: the network, before the request even lands

It all starts with the IP address. Before it looks at what you're asking for, a server looks at where you're coming from. Not all IPs are equal, and an implicit trust hierarchy has taken hold.

Mobile, then residential, then datacenter: that's the order of trust an IP is judged by.

A mobile IP (a cellular carrier's network) inspires the most trust, because thousands of subscribers share the same address, which makes blocking risky. A residential IP (a home internet box) is considered credible, because a real human uses it. A datacenter IP (a server rented from a hosting provider) is immediately suspicious: very few real visitors browse from a data center. The server identifies the origin through the network number (ASN) and reverse DNS. On top of that comes rate limiting: too many requests from the same address, at too regular a pace, and access shuts down.

Layer 2: the TLS handshake

This is the least understood layer, and often the most decisive. Before any data is exchanged over HTTPS, the client and the server negotiate encryption. The client's very first message, called the ClientHello, is sent in the clear and describes its capabilities: supported versions, cipher suites, extensions, in a precise order. And that order and content vary depending on the software library used.

You can therefore compute a fingerprint of this handshake, known as JA3 and later JA4. The problem for a naive scraper is easy to state:

A client that claims to be Chrome in its headers, but shakes hands like a Python script, contradicts itself.

No header tweak hides this contradiction, because it plays out at a lower level than HTTP. We break down this mechanism in a dedicated article on TLS fingerprinting.

Layer 3: the browser fingerprint

Once the connection is established and a page has loaded, a JavaScript script gets to work. It queries dozens of browser properties to build a stable identifier, without needing a cookie.

The system's strength doesn't come from any single signal, but from their consistency. A browser that claims to be Chrome on Windows but whose graphics rendering looks like that of a headless Linux server, that's a story that doesn't hold up.

Layer 4: behavior

The most advanced engines don't just take a snapshot of the client, they watch it act. Mouse movements, scroll speed, click rhythm, request pace: everything is analyzed in real time.

A human is irregular by nature. Their mouse follows curves, hesitates, speeds up then slows down. A bot, on the other hand, tends toward mechanical perfection: straight-line trajectories, intervals perfect to the millisecond, or quite simply no movement at all. That very regularity is what gives it away.

Layer 5: the challenge

When doubt remains, the system imposes a test. They don't all look alike:

For scale. Cloudflare estimated in 2021 that humanity spent roughly 500 combined years per day solving CAPTCHAs. That calculation is what drove the arrival of puzzle-free challenges.

The major vendors, and their signatures

A handful of players dominate this market, each with its own approach. They leave recognizable traces, often in the form of cookies.

Why a simple proxy is never enough

This is the most common mistake. A proxy changes only one thing: the IP address. It fixes layer 1, and leaves all the others untouched. A scraper that goes through a nice residential IP but shakes hands in Python, without running the JavaScript and without any credible behavior, gets spotted at the second layer.

To cleanly access public data, every layer has to tell the same story: a real browser engine capable of running the JavaScript and the challenges, an IP consistent with the profile, and a perfect match between the TLS handshake, the headers, the browser properties and the behavior. That orchestration work is exactly what WyndPath takes on, while respecting the rules published by sites and rate limiting.

Sources · Scrapfly, JA3/JA4 guides, fingerprinting and anti-bot bypass (2024-2026) · Cloudflare documentation (cookies, Turnstile) · DataDome (behavioral classification) · reCAPTCHA and hCaptcha (official documentation) · Cloudflare, CAPTCHA estimate (2021).

Collect this data without getting blocked

WyndPath handles proxies, JavaScript rendering and anti-bot bypass in a single API call. Pay-per-success.

Start for free →
Read also · Data
What share of web traffic is generated by bots?
Read also · Technical
TLS fingerprinting (JA3/JA4): why a scraper gets flagged