Back to blog
Web Scraping·September 12, 2026·9 min read

How to Bypass Aggressive Anti-Bot Protection in 2026

Modern anti-bot protection stacks five distinct detection layers, not one. Here's how Cloudflare, Akamai, Kasada, and PerimeterX each weigh those layers differently, and what actually holds up against each.

M

Mahendra Sreekumar

Anakin Team

Five-layer anti-bot detection gauntlet a request must clear: network, TLS, fingerprint, behavioral, and challenge layers

Most teams find out their anti-bot problem is "aggressive" the same way: a scraper that worked fine for months suddenly returns CAPTCHA pages, then 403s, then nothing at all - and none of the fixes that worked last time make a dent.

That's usually a sign the target site didn't add one new defense. It stacked another layer on top of the ones already there. DataDome's most recent AI Traffic Report found that most organizations are effectively flying blind on this - unable to tell legitimate AI agent traffic from scraping bots, even as that traffic has exploded. In DataDome's own numbers, LLM crawler traffic alone went from 2.6% of verified bot traffic in January 2025 to over 10% by August (DataDome 2025). Sites are responding by turning up every dial they have.

Here's what's actually happening underneath aggressive anti-bot protection, and how to bypass it without guessing.

Anti-bot protection isn't one wall - it's five

The reason a single fix (new proxy, spoofed user-agent, a CAPTCHA solver) stops working after a while is that modern anti-bot systems don't rely on any single signal. They stack layers, and passing one layer proves nothing if the next one catches you:

  • Network layer - your IP's reputation, ASN, and connection metadata
  • TLS layer - whether your TLS handshake actually matches the browser you claim to be
  • Browser fingerprint layer - canvas, WebGL, fonts, and dozens of other properties that should be internally consistent
  • Behavioral layer - mouse movement, scroll patterns, timing between actions
  • Challenge layer - CAPTCHAs, JavaScript proof-of-work, managed challenges

A request has to clear all five, not just the one that happened to trip the alarm last time. That's why "aggressive" protection feels different from ordinary rate limiting: rate limiting is one gate, and this is a gauntlet.

How the major vendors actually detect you

Not every anti-bot vendor weighs these five layers the same way, which is why a technique that works against one completely fails against another.

Cloudflare sits in front of a large share of the web and leans heavily on the TLS and network layers. It correlates your TLS handshake with your claimed browser - if you say you're Safari but your cipher suite order matches Chrome, that mismatch alone is enough to flag you, before behavior even enters the picture (Scrapfly, Cloudflare bypass 2026).

Akamai Bot Manager goes deeper into network-layer signals - IP reputation, ASN history, request timing - on top of its own fingerprinting and behavioral checks. Bot Manager scores how much it trusts a client before the request even reaches the origin server, in roughly the time it takes to complete a TLS handshake and read a cookie (Scrappey, how Akamai detects bots 2026). It's widely considered one of the hardest systems to bypass consistently, precisely because it validates past the TLS handshake into request-pattern history most bypass tools don't account for.

Kasada skips CAPTCHAs entirely. Instead, a Kasada-protected page ships an obfuscated JavaScript bundle that forces the client to solve a cryptographic proof-of-work puzzle - real, measurable CPU work - before access is granted, and a puzzle solved suspiciously fast (the way a script would solve it) gets flagged just as hard as one that's never solved at all (Scrapfly, Kasada bypass guide 2026). Layered with TLS fingerprinting and headless-browser probing, it's a fundamentally different mechanism than a puzzle a solver can pass.

PerimeterX (now part of HUMAN Security) leans hardest on the behavioral layer. It trains a machine-learning model per protected site, using that specific site's own historical traffic as the baseline, and keeps updating it - a setup that clears every check today can get flagged next month purely because the model moved, not because anything about the request changed (Scrapfly, PerimeterX bypass guide 2026). There's no universal PerimeterX bypass, because there's no universal PerimeterX model.

The practical takeaway: "bypass anti-bot protection" isn't one problem with one answer. It's five different problems that happen to show up behind the same block page.

Radar charts comparing how Cloudflare, Akamai, Kasada, and PerimeterX each weight the five anti-bot detection layers differently

What actually works at each layer

Network and TLS layer. This is where most DIY attempts fail first, because it happens before a single line of your scraping logic runs. Rotating IPs helps with reputation, but rotating IPs while your TLS fingerprint stays static (a common outcome of most standard HTTP libraries) just gets the new IP flagged just as fast. The fix has to happen at the connection level, not the request level.

Browser fingerprint layer. Spoofing one property (just the user-agent, just the canvas hash) rarely holds up, because sites check for internal consistency across dozens of signals at once. A real browser's fingerprint, locale, and timezone signals all line up with each other and with its IP's geography; a spoofed one usually has at least one mismatch somewhere. (For the full breakdown of specific fingerprinting techniques and defenses, see our deep dive on reducing browser fingerprint detection.)

Behavioral layer. This is the layer that punishes speed. A scraper that loads a page and immediately extracts data in 200ms has no mouse movement, no scroll, no natural pacing - and behavioral models are built exactly to catch that shape of request.

Challenge layer. Managed challenges, Turnstile-style widgets, and proof-of-work checks are the layer most teams notice first, because it's the one that's visible. It's also usually the last line of defense, not the first - by the time a request hits a challenge, it's often already been flagged by one of the layers above and is being given one more chance to prove itself human. (For error-code-specific Cloudflare fixes - 1020s, 403s, and Turnstile - see how to fix Cloudflare blocking your automation system.)

Where DIY bypass work stops scaling

Solving any one of these layers for one site, one time, is a solvable weekend project. The problem is that none of it stays solved. Vendors update their detection models on their own schedule, not yours, and a fingerprinting technique that worked last quarter can silently stop working with no error message telling you why your success rate dropped.

That's the actual argument for managed infrastructure over a growing pile of point-fixes: it's not that a residential proxy or a stealth browser patch is hard to build once, it's that maintaining all five layers, across every site you touch, forever, is a full-time job that isn't your product.

Line chart showing a DIY anti-bot fix silently decaying over time versus a flat, continuously maintained line

Anakin's URL Scraper handles this at the infrastructure layer directly - proxy routing across 207 countries, and a stealth browser with aligned fingerprint, locale, and timezone signals, so the geography your proxy claims and the browser properties you present actually agree with each other. Flip `useBrowser: true` when a site needs full rendering, or set a specific `country` when geography is the mismatch - without hand-rolling TLS fingerprint alignment or a fresh proxy pool for every target.

There's a second way to sidestep this entirely, worth knowing about even though it only covers specific sites: if the target is already one of the 962 sites in Wire's catalog, you can call a pre-built action - `walmart.search_products`, for instance - instead of sending a browser-shaped request at all. Wire resolves that call against the site's own structured endpoints server-side, so there's no five-layer gauntlet to clear on your end in the first place, and Anakin keeps the action working as the site changes. It's not a general-purpose answer (only catalogued sites qualify, and you can request a build for one that isn't yet), but for the sites it covers, it's the version of this problem that never shows up.

962 Wire-catalogued sites and 5,247 pre-built actions skip the five-layer anti-bot gauntlet entirely

Here's what the direct-request route looks like in practice, for the far more common case: a page that isn't behind a structured catalog action at all, where hitting the URL yourself is the only option. Amazon product pages normally return a "verify you're human" page to naive requests - it's one of the more consistently defended e-commerce properties on the web. Routing the same request through a browser-rendered call with proxy geography set correctly gets the actual page back in one call:

curl -X POST https://api.anakin.io/v1/url-scraper \
  -H "X-API-Key: ak-..." -H "Content-Type: application/json" \
  -d '{"url":"https://www.amazon.com/dp/B09V3KXJPB","useBrowser":true,"country":"us","formats":["markdown"]}'

That returns the product title, price, rating, and availability directly - no proxy pool to babysit, no manual retry logic. Worth being precise about what's happening here: this routes around the challenge by presenting a consistent, correctly-geo-matched browser fingerprint - it isn't solving a CAPTCHA that got shown, it's not tripping the checks that would show one in the first place.

What this looks like at real customer scale

The clearest version of this story isn't a synthetic test - it's what happens when a real workload moves off a tool that's hitting these walls. One Anakin customer came over after a batch of pages started failing on their previous scraper. Anakin recovered all 43 of the domains that had been failing, and nine of them - re-run live, with the actual page size and wall-clock time measured - are public:

43 previously failing domains recovered for one real customer, with live page size and load time for 9 named domains
DomainPage sizeTime
costco.com2.4 MB32.3s
boards.ie2.2 MB16.0s
nordstrom.com879 KB45.0s
baidu.com707 KB13.0s
trip.com399 KB1.8s
bestbuy.ca394 KB46.6s
trendyol.com345 KB2.2s
maidenform.com170 KB17.9s
homedepot.com103 KB2.1s

Costco, Nordstrom, Home Depot, and Best Buy Canada are exactly the kind of large retail properties that run heavy anti-bot stacks by default - which is why they're useful evidence here rather than an arbitrary sample. (Full breakdown on the Anakin vs. Firecrawl comparison page.)

None of this is an argument that any single tool solves every site forever - the whole point of the five-layer breakdown above is that the target keeps moving. It's an argument for treating anti-bot handling as infrastructure that gets maintained continuously, rather than a script that gets written once and left alone.

FAQ

What's the hardest anti-bot system to bypass?

Akamai Bot Manager and PerimeterX (HUMAN Security) are generally considered the most difficult to bypass consistently - Akamai because of how deep its network-layer validation goes, and PerimeterX because it trains a unique behavioral model per site, so no single technique works everywhere.

Can Cloudflare detect Playwright or Puppeteer?

Yes, by default. Standard Playwright and Puppeteer instances carry detectable properties (a mismatched TLS fingerprint, `webdriver` flags, and other automation tells) that Cloudflare checks for at the network and browser layers before behavior is even evaluated.

Do I need different bypass techniques for different anti-bot vendors?

Yes. Because Cloudflare, Akamai, Kasada, and PerimeterX weight the five detection layers differently, a technique tuned for one (like a proof-of-work solver for Kasada) does nothing against another (like PerimeterX's per-site behavioral model).

Is rotating proxies enough to avoid detection?

No, on its own. IP reputation is one of five layers. A rotated IP with a static, mismatched TLS or browser fingerprint gets flagged almost as fast as no rotation at all.

The layers don't go away - the maintenance does

None of the five layers above are going anywhere, and none of them are getting easier to solve on your own. That's the actual case for treating this as infrastructure instead of a technique you learn once: Anakin's URL Scraper keeps TLS, fingerprint, and proxy geography aligned on every request by default, and Wire skips the problem entirely for the 962 catalogued sites where a structured action already exists.

If you're dealing with a scraper that's started failing against a specific vendor, start with a request against Anakin's URL Scraper - set `useBrowser: true` and a matching `country`, and see if the wall you're hitting is one of the ones this already solves.