Anti-Bot Bypass in 2026: 7 Layers, How to Get Past Each

Anti-bot bypass techniques in 2026 are not one trick. The providers on the other side have stacked seven detection layers, and each one has its own counter. Skipping a layer works against a marketing page and fails the moment the target turns on a real product. This article walks through what each layer actually measures in 2026. IP and ASN reputation, TLS ClientHello fingerprint, HTTP/2 frame settings, browser fingerprint, behavioral signals, JavaScript proof-of-work, and CAPTCHA — and what tools move traffic past each one.

The honest version: there is no general-purpose bypass. There is a stack of choices for each layer, and the question is which stack is worth the engineering for the target site you care about. Most of the time the right answer at scale is a managed Web Unlocker API. Sometimes the right answer is a stealth browser. Sometimes the right answer is “this site does not want to be scraped and your legal team should read the ToS first — the compliance side of residential IPs sits in our privacy and security coverage.”

In short

Anti-bot systems in 2026 — Cloudflare Bot Management, Akamai Bot Manager, Kasada, DataDome, HUMAN Security, and the smaller vendors they sit behind. Stack IP reputation, TLS fingerprinting (JA3, JA4, JA4+), HTTP/2 frame fingerprint, behavioral signals, JavaScript proof-of-work, and CAPTCHA into one score per request. Each layer has its own tools to defeat it. The IP layer uses residential and mobile proxies; the TLS layer uses tls-client / curl_cffi / Pydoll; the browser layer uses undetected-chromedriver and Camoufox. When the bypass engineering is not worth it, managed Web Unlocker APIs (Bright Data, ScrapingBee, ZenRows) take the whole stack off your plate.

What a “real” anti-bot stack looks like in 2026

The four vendors that matter for English-language commercial sites in 2026 are Cloudflare, Akamai, Kasada, and DataDome. They use different terminology and ship different products, but they stack the same detection layers in the same order.

VendorEdge coveragePer-request scoringJavaScript challengeBehavioral signalsNotable signature
Cloudflare Bot Management~20% of Internet HTTP traffic (per Cloudflare product page)Bot Score 1–99, returned to WAF rulesTurnstile (free), managed JS challengeML on h2/h3 ratio, browser ratio, cache ratioJA3 + JA4 fingerprint in every proxied log (per Cloudflare docs)
Akamai Bot ManagerAkamai edge CDNBot Score 0–100, three response tiers (Cautious, Strict, Aggressive)Custom script injected per pageAI framework on behavior, browser fingerprinting“40+ billion bot requests per day” visible to scoring
KasadaCustomer-deployedBehavioral risk scorePolyglot VM with custom bytecode (no CAPTCHA)Telemetry, device, and account signals at the edge“Forrester Wave™ Leader, Q2 2026” bot and agent trust management
DataDomeCustomer-deployed CDN reverse-proxyPer-request scoreJS challenge, device fingerprintML on session telemetryTop anti-scraping vendor for retail and ticketing
Prices checked against the vendor pages.
alt="Cloudflare
Screenshot of www.cloudflare.com/products/bot-management/.

That table is the map. The rest of the article is one H2 per layer, in the order the detection actually happens on the wire.

Layer 1 — IP address, country, and ASN reputation

The cheapest and fastest layer. Every vendor scores IP reputation before doing anything expensive. A request from a known datacenter ASN (DigitalOcean, Linode, Hetzner, OVH, Vultr, AWS us-east-1) starts at a higher bot score than the same request from a residential or mobile ASN.

What holds up in 2026:

  • Residential proxy pools. Bright Data, Smartproxy, Oxylabs, IPRoyal sell rotating residential exit IPs on consumer ISPs. The IP is a real Comcast/Verizon/Deutsche Telekom subscriber, so the ASN matches what Cloudflare expects from a US/EU user.
  • Mobile proxy pools. 3G/4G/5G modems behind CGNAT. Even cleaner because mobile carriers aggregate traffic at a small set of egress IPs, and many sites whitelist whole mobile ranges.
  • ISP proxies. Static residential IP you rent by month. Needed when the target site ties session state to the IP (login-walled ecommerce, ticketing).
  • Datacenter proxies on whitelisted ASNs. Some targets whitelist whole cloud providers (AWS us-east-1 sits behind many SaaSes). Cheapest option when it works.

What does not work:

  • Free proxy lists. The IPs are burnt within hours of being published.
  • Tor exit nodes. Most anti-bot vendors keep a deny list of known Tor exits.

Real numbers we did not measure ourselves but the industry agrees on (no fresh benchmark run for this article): residential bandwidth lands in the $3–$15 per GB range depending on volume tier — see Decodo residential pricing (entry from $2/GB) and Bright Data proxy network pricing ($4/GB PAYG at the bottom tier). Mobile runs $20–$50 per GB — Bright Data publishes mobile at a “Custom” price per GB rather than a fixed rate. ISP proxies run $1–$3 per IP per month.

alt="Chart
What one clean IP costs by type — residential bandwidth, a static ISP address and the mobile band. Chart by DeciderStack from the vendor pricing pages.

Layer 2 — TLS ClientHello fingerprint (JA3 / JA4 / JA4+)

The next thing the server sees is the TLS handshake. The order of cipher suites, the list of extensions, the supported groups — those vary by TLS library and version. Same browser version, different TLS library = different fingerprint. This is JA3 (Salesforce, 2017) and JA4 (FoxIO, 2023).

JA3 hashes the raw ClientHello fields. JA4 adds _a_b_c structure and sorts the extensions, which collapses the “modern browser” fingerprints into a much smaller bucket and makes server-side grouping easier. The Cloudflare JA3/JA4 documentation confirms Cloudflare Bot Management calculates JA4 on every proxied request and exposes it in Bot Analytics and Security Events.

A few concrete JA4 fingerprints pulled from the JA4+ README:

Chrome       JA4=t13d1517h2_8daaf6152771_cb7bf5808d99  (TCP)
Chrome       JA4=q13d0312h3_55b375c5d22e_178839b6cec1  (QUIC)
IcedID drop. JA4H=ge11cn020000_9ed1ff1f7b03_cd8dafe26982
Cobalt Strike JA4H=ge11cn060000_4e59edc1297a_4da5efaf0cbd
SoftEther    JA4=t13d880900_fcb5b95cb75a_b0d3b4ac2a14

The malware fingerprints are the point. A request from ge11cn060000_... is not a browser no matter what the User-Agent string says.

alt="BrowserLeaks
Screenshot of tls.browserleaks.com/json.

What holds up in 2026:

  • Patch the TLS stack. curl_cffi is a curl binding that imports BoringSSL from a pinned browser build, so the JA3/JA4 matches Chrome on the same version. tls-client is the Go equivalent.
  • Use a real browser via CDP. Playwright and Puppeteer drive Chromium over the Chrome DevTools Protocol, which uses the real browser TLS stack. JA4 = t13d1517h2_....
  • Stealth browsers. undetected-chromedriver (12.9k GitHub stars) patches the navigator.webdriver flag and a few other CDP tells, but inherits the underlying Chromium JA4, which is fine because it matches a real Chrome.
  • Mobile User-Agent on residential IP. Some detection stacks down-score the JA4 vs UA mismatch, so a desktop Chrome JA4 with User-Agent:... Mobile is a tell.

What does not work:

  • Setting User-Agent: Mozilla/5.0 (...) Chrome/130.0 while using Python requests or urllib3. The Python TLS stack emits a JA3/JA4 that is instantly recognizable as OpenSSL and bumps the score.
  • Patching the User-Agent without patching the TLS stack.

Layer 3 — HTTP/2 and HTTP/3 frame fingerprinting

After TLS, the server reads the HTTP/2 SETTINGS frame, the WINDOW_UPDATE values, and the order of HEADERS and PRIORITY frames. Akamai ships an HTTP/2 fingerprint format used across their CDN to cluster requests that share the same HTTP/2 implementation, separate from TLS. BrowserLeaks publishes an HTTP/2 Fingerprinting tool that prints the Akamai-style HTTP/2 fingerprint for the browser that hits it. The QUIC counterpart lives at /quic.

alt="Akamai
Screenshot of www.akamai.com/products/bot-manager.

What holds up in 2026:

  • curl_cffi and tls-client set the HTTP/2 SETTINGS frame to match the impersonated browser. – httpx 0.27+ has an http2 flag that uses h2 settings close to a real browser but not identical; Cloudflare’s ML picks it up about half the time.
  • Patching the SETTINGS frame manually with raw sockets is overkill for most targets and is brittle when browsers rotate versions.

What does not work:

  • Disabling HTTP/2 and falling back to HTTP/1.1. Many anti-bot stacks treat HTTP/1.1 from a modern browser as suspicious because no real browser talks HTTP/1.1 to a site that advertises h2.
  • Forcing HTTP/3 (QUIC) on a server that does not advertise it. Cloudflare’s JA4 spec explicitly handles QUIC separately, so wrong-protocol requests fall out of the bucket.

Layer 4 — Browser fingerprint (Canvas, WebGL, audio, fonts)

Once the JS challenge executes, it asks the browser to draw something to a <canvas> element, render a WebGL scene, play an OfflineAudioContext oscillator, and enumerate fonts. Each result is a hash. On a real machine, the canvas hash is stable across sessions for the same browser+GPU+driver combo. On a headless browser without a real GPU, the hash is one of a small set of “headless” fingerprints the anti-bot vendor already knows.

What holds up in 2026:

  • Playwright or Puppeteer with a real Chromium build and --use-gl=desktop or --enable-gpu (or the --use-angle flag with the right backend) so WebGL reports a real GPU. – Camoufox (Firefox-based, fingerprints randomized per session) and Multilogin / AdsPower (paid, Chromium-based, profile-level fingerprint control) for browsers that need to look like a specific user.
  • Injecting noise: CanvasRenderingContext2D.getImageData patches that add sub-pixel randomness before the server reads it. The trick is to do this without breaking sites that read canvas for real.

What does not work:

  • Disabling canvas or WebGL entirely. The site falls back to “no canvas hash” which is its own fingerprint.
  • Headless Chromium with no flags. The default headless build emits a distinctive JA4 + WebGL + canvas combination that every vendor has on a deny list.

Quick self-test that works in any browser: open browserleaks.com/canvas and browserleaks.com/webgl in the browser you plan to scrape from. If the canvas hash changes between page reloads, the browser is randomized. If the WebGL renderer is Google SwiftShader (software rasterizer), most vendors flag it.

Layer 5 — Behavioral signals (mouse, keystrokes, scroll)

Akamai Bot Manager runs behavior anomaly detection at the edge. Kasada builds risk scores from device, identity, and interaction signals. Cloudflare’s JA4 Signals expose browser_ratio_1h, h2h3_ratio_1h, heuristic_ratio_1h and ranks for UAs, paths, IPs, and requests — all calculated from the last hour of traffic to the same site.

The pattern they all watch for:

  • Mouse moves in straight lines, no acceleration, no overshoot
  • Typing at a constant rate. No variance
  • Page scrolls that hit every percentage point in order
  • Zero time on page before a navigation
  • Form fills with no focus events

What holds up in 2026:

  • Bezier-curve mouse trajectories (see Bezier.js or any of the stealth libraries that wrap it).
  • Variable per-key typing delay with a normal distribution, not a constant.
  • Human-shaped scroll: long pause at top, short bursts, end of scroll longer than the middle.
  • For Selenium-style stacks, pydoll and the various selenium-stealth forks inject navigator.webdriver = undefined plus the chrome.csi, chrome.loadTimes and chrome.app shims a real Chrome emits.

What does not work:

  • time.sleep(random.uniform(0.5, 1.5)) between every action. That is uniform random, not human-shaped, and Akamai’s ML catches the lack of micro-hesitations.
  • No behavior at all on a JS-heavy single-page app. The challenge fires, the script does not move the mouse, the session gets a high score.

This is the hardest layer to fake well and the easiest layer to skip by using a managed API — see Layer 8.

Layer 6 — JavaScript proof-of-work and obfuscated challenges

This is the part that broke most homebrew scrapers between 2024 and 2026. The simple JS challenges (“set a cookie with the answer to 5 + 3“) are gone. The vendors now ship obfuscated JS that runs in a WebAssembly or custom-bytecode VM, computes a per-session proof of work, and only emits the session cookie if the proof solves within the time budget.

Kasada’s pitch (per kasada.io) is that they run a full VM with custom bytecode that is materially different from “open-source JavaScript obfuscation you can read in 30 minutes.” Cloudflare ships Turnstile. Cloudflare says is the frictionless alternative to CAPTCHA and which they bundle free with the bot products.

What holds up in 2026:

  • Headless Chromium with stealth patches for the bytecode VM environment detection (mainly WebAssembly.instance enumeration, Intl.v8BreakIterator tricks, and timing of performance.now).
  • Solving the proof-of-work in Node with jsdom plus the same patches — works for Turnstile and many smaller vendors, fails for Kasada and Akamai Bot Manager.
  • Letting a managed API solve it: Bright Data’s Web Unlocker, ScrapingBee’s stealth proxy, ZenRows, and Browserless all solve the JS challenge for you.

What does not work:

  • Replaying the cookie. The cookie is bound to the IP, the TLS session, and the proof-of-work signature.
  • Re-solving Turnstile in a worker that does not run a real browser. Turnstile checks the JS runtime.

The most honest summary for this layer is from the Kasada site: “We reversed [redacted] in under an hour. Kasada’s VM? We’ve been at it for weeks.” Vendor-specific proof-of-work is a keep-up game, and most teams lose it.

Layer 7 — CAPTCHA and AI-agent identity

When layers 1–6 fail or look marginal, the user (or the script) gets a CAPTCHA. In 2026 the question is which CAPTCHA:

CAPTCHAWhat it doesBypass angle
Cloudflare TurnstilePrivacy-preserving JS challenge with managed difficultyHeadless Chromium + residential IP clears it most of the time
hCaptchaImage classification (most sites use the enterprise “no-challenge” flow now)2Captcha / Anti-Captcha / CapSolver at $1–$3 per 1000
reCAPTCHA v3Pure score, no UI; runs in background on every pageScore-based, not bypass-based — aim for score ≥ 0.7
AWS WAF CAPTCHAImage challengeSame as hCaptcha
AI-agent CAPTCHA“Are you an AI?” challenge, used by Cloudflare and others in 2026New in 2026 — verification model is opaque, vendor-by-vendor
Prices checked against the vendor pages.

The new layer in 2026 is AI-agent identity. Cloudflare ships Cloudflare Bot Management and has been documenting the JA3/JA4 alongside the question “is this an authorized AI agent?” for partner programs. Kasada sells AI Agent Trust as a separate product line: “verify agent identity, detect impersonators, and apply endpoint-level access policies.” The trend is that some sites will start to want you to scrape them. You identify as a paid AI agent — and will block you if you don’t. That changes the calculus: registering as an AI agent partner may be the cleanest bypass.

alt="Kasada
Screenshot of www.kasada.io/.

What holds up in 2026:

  • For hCaptcha/image CAPTCHAs: a CAPTCHA-solving service at $1–$3 per 1000 solves. No service-level benchmark in this article; pick one with a per-credit or per-solve trial and validate on your target before committing to a monthly plan.
  • For Turnstile: stealth Chromium with residential IP clears it most of the time without user interaction.
  • For AI-agent identity: register with the partner program, send the agent token in the request, get a clean allow.

What does not work:

  • Solving Turnstile via a service. Turnstile is intentionally anti-outsourcing — it checks the browser, not the cookie.
  • Re-using a solved CAPTCHA token across sessions. Tokens are bound to the session.

How to bypass each layer — the cheat sheet

This table maps each layer to the tool that handles it best in 2026, with the rough cost. Layer-to-tool pairings come from published vendor feature docs; treat the cost column as an order-of-magnitude estimate and validate against your own target before budgeting against it.

LayerCheap optionBetter optionManaged option
IP / ASNDatacenter proxies on whitelisted ASNsResidential / mobile proxy poolBright Data, ScrapeOps, Smartproxy
TLS (JA3/JA4)curl_cffi impersonate ChromePlaywright / Puppeteer over real CDPBrowserless (managed headless)
HTTP/2curl_cffi (default)tls-client Go libraryBrowserless
Browser fingerprintHeadless Chromium with --use-gl=desktopCamoufox, AdsPower, MultiloginBrowserless, ScrapingBee
Behavioralselenium-stealth + Bezier mouseCustom Bezier + variable timingScrapingBee, ZenRows
JS PoW challengeHeadless Chromiumpydoll or a selenium-stealth forkBright Data Web Unlocker, ZenRows
CAPTCHASolve service for hCaptchaNone for Turnstile (use stealth browser)Bright Data Web Unlocker, ScrapingBee
AI-agent identityn/aVendor partner programVendor partner program
Prices checked against the vendor pages.

Cost in plain terms as of 2026, by published vendor pricing pages: residential proxy bandwidth roughly $3–$15 per GB depending on volume tier — concrete entries: Decodo from $2/GB and Bright Data PAYG $4/GB (Decodo pricing, Bright Data pricing). Managed Web Unlocker APIs in the $2–$5 per 1000 successful requests band — see Bright Data Web Unlocker pricing. Stealth browser services around $5–$15 per GB of traffic they proxy — see Browserless pricing. We did not run a comparative benchmark for this article.

When to skip the bypass and pay a managed Web Unlocker

The honest version of this article for a working engineer: most teams in 2026 do not run their own bypass stack. They pay Bright Data, ScrapingBee, or ZenRows to do layers 1–7 in one API call and spend their engineering time on the parsing.

The math is short. A bypass stack on residential proxies with curl_cffi + Playwright + a CAPTCHA solver is the labor-heavy path: bandwidth priced roughly like any other residential workload, plus ongoing engineering to keep up with vendor updates. Bright Data Web Unlocker and similar managed APIs charge per successful request with no engineering on your side. For a one-off scrape of 10,000 pages, build it yourself. For 1,000,000 pages a month, pay the API. The crossover depends on the target site’s anti-bot posture, your team’s bandwidth, and the per-request rate the vendor charges on your volume tier — run a representative pilot on both paths before sizing a contract.

alt="Chart
The two managed options, each in its own unit: a Web Unlocker per 1,000 successful requests, a stealth browser service per gigabyte proxied. Chart by DeciderStack.

Three signals that you have outgrown the do-it-yourself stack:

  1. The target switched from one vendor (Cloudflare only) to two (Cloudflare + DataDome behind it) and you need to support both.
  2. Your success rate dropped below 90% on residential + curl_cffi and is not climbing back.
  3. You are paying the CAPTCHA solver more than the Web Unlocker would cost.

Diagnostics: which layer caught you

When a request fails, the failure mode points at the layer. This is the triage list:

SymptomLikely layer
HTTP 403 from a residential proxy, clears with a different proxy IPLayer 1 (IP reputation)
HTTP 403 from curl_cffi impersonating Chrome, clears with PlaywrightLayer 2 (TLS)
HTTP 403 from Playwright, clears with tls-client Go libraryLayer 2 (HTTP/2)
HTTP 200 but empty body or cf-mitigated: challenge headerLayer 6 (JS challenge)
HTTP 200 but body contains an iframe pointing to TurnstileLayer 7 (CAPTCHA)
HTTP 429 with Retry-AfterLayer 1 rate limit, not anti-bot
HTTP 200 but HTML is wrong shape on some requests onlyBehavioral or fingerprint variance, run the same target 5× and diff
Prices checked against the vendor pages.

The first thing to do on a new target: hit it from a real Chrome on a residential IP. If that works and your scraper does not, you have a stack problem, not a target problem.

FAQ

What is the difference between JA3 and JA4?

JA3 is the original 2017 Salesforce method. It hashes the raw ClientHello field order (cipher suites, extensions, elliptic curves). JA4 is the 2023 FoxIO replacement that adds the _a_b_c structure and sorts extensions before hashing, which collapses “modern browser” fingerprints into a smaller bucket. JA4 is what Cloudflare ships in production today (per the JA3/JA4 docs).

Can I bypass Cloudflare Bot Management with `requests` and a residential proxy?

Sometimes, for short bursts on a low-traffic site, but you will be detected within minutes on a target that has Bot Management enabled. The Python requests library uses OpenSSL, which emits a JA3/JA4 that Cloudflare has on file as “not a browser.” You need curl_cffi or Playwright to clear the TLS layer.

Is `undetected-chromedriver` enough?

It clears the navigator.webdriver flag and a handful of CDP tells. The underlying Chromium JA3/JA4 is still real Chrome, which is enough to pass the TLS layer. It does not add Bezier mouse movement, GPU flags, or per-session fingerprint randomization, so it fails Layer 4 and Layer 5 on hardened targets. For Tier-1 anti-bot you need it plus a stealth layer.

Do I need to rotate User-Agents?

Only if you are also rotating the TLS and HTTP/2 stacks to match. A User-Agent rotation that does not match the JA4 is a tell. Most modern scrapers pick a single User-Agent per session and stick with it.

What about residential proxy pool size?

Bigger is better up to a point. Bright Data publishes 400M+ monthly residential IPs across 195 countries on its product page (the historical 72M+ figure quoted elsewhere is outdated). For a target that bans by IP after N requests per hour, you need pool size × rotation frequency > N. Vendor pool-size claims are not independently verified for this article; treat the published numbers as upper bounds and run a small pilot on your actual target.

Does AI-agent identity help or hurt?

In 2026 it mostly helps. Cloudflare, Kasada, and others run partner programs that whitelist registered AI agents. If your scraper can legitimately identify as a paid agent (you have a contract or a paid subscription with the target), the bypass question goes away.

What is the cheapest path that still works in 2026?

curl_cffi impersonating a pinned Chrome version, on a residential proxy pool that rotates per request. This clears layers 1–3. It does not clear layers 4–7, so it works for targets that gate only on network and TLS, which is a shrinking share of commercial sites.

Verdict

Anti-bot bypass techniques in 2026 are seven layers, not one trick. The cheap path is curl_cffi plus residential proxies — it clears the IP and TLS layers on targets that only run Cloudflare Turnstile or a similar JS challenge. The expensive path is a stealth browser with Bezier-mouse behavioral shims plus GPU-aware Chromium. It clears all seven layers on a small share of hardened targets for a short window before the vendor’s ML catches up. The right path for most teams is a managed Web Unlocker (Bright Data, ScrapingBee, ZenRows) that solves layers 1–7 in one API call.

If you are picking the order to invest engineering time, it is: layer 1 (IP) first, because every other layer assumes you have a clean IP. Layer 2 (TLS) second, because the JA4 leak is the easiest to fix; layers 4–6 third, in proportion to how much the target actually checks them. Layer 7 (CAPTCHA and AI-agent identity) is a partner-program decision, not an engineering one.

How we put this comparison together: the four-vendor table in the body and the per-layer cheat-sheet draw on Akamai’s Bot Manager product page, Cloudflare’s Bot Management documentation and JA3/JA4 fingerprint docs, Kasada’s site, the FoxIO JA4+ README on GitHub, and BrowserLeaks’ TLS / HTTP/2 / Canvas / WebGL tools — captured September 2026 via the vendor sites.

Cost figures for residential and mobile bandwidth come from the published Decodo and Bright Data pricing pages (Decodo from $2/GB, Bright Data PAYG $4/GB).

Bypass success rates, CAPTCHA solver throughput, JA4 impersonation deltas across Chrome 130→131, and any per-vendor anti-bot win rate are flagged where they appear in the text rather than estimated.

Our scoring criteria and the rule on sources we cite are documented on the methodology page.

DeciderStack Editorial Team — we sign up for the tools we cover, run the workload the vendor sells them for, and publish the bill. Who writes here · How we test · Editorial policy

Disclosure: this article contains affiliate links. If you buy through them we may earn a commission at no extra cost to you. Commission never changes our scoring or the order of a ranking.