Tony Wang7 min readHow Websites Prevent Web Scraping in 2026 (and What Still Works)
53.5% of the top 1M sites run an anti-bot wall. How TLS/browser fingerprinting, IP reputation, and Cloudflare detect scrapers — and what still gets through.
Most guides to web scraping talk about how to extract data. This one is about the wall in front of it — because in 2026 that wall is what actually determines whether your scraper works. We ran the numbers: across a scan of the Tranco top 1,000,000 sites, 53.5% of the reachable ones run a managed anti-bot system. Here is how those systems detect scrapers, who builds them, what changed in 2026, and what still gets legitimate collection through.
How common is anti-bot protection?
Of ~818,600 reachable sites in our top-1M scan, 437,857 — 53.5% — sit behind a managed anti-bot wall. The market is extraordinarily concentrated: Cloudflare is in front of 45% of all sites, about 84% of every protected site. Everything else is a long tail.
| Anti-bot vendor | Share of all sites | Notes |
|---|---|---|
| Cloudflare | ~45% | The dominant wall; climbs with obscurity |
| Google reCAPTCHA | 7.5% | Most common CAPTCHA by far |
| hCaptcha | 3.5% | Privacy-positioned CAPTCHA |
| Cloudflare Turnstile | 1.3% | CAPTCHA-replacement widget |
| Imperva (Incapsula) | 0.6% | Mature WAF + bot |
| Akamai Bot Manager | 0.6% | Enterprise; strongest at the traffic head |
| DataDome | 0.1% | Rare but high-skill, ML-driven |
Two findings surprise people. First, protection rises as you go down the ranks — 44.2% of the top 1,000 sites are walled versus 53.6% of the tail — because Cloudflare's free tier defends millions of small sites while enterprise bot-management (Akamai) thins out. Second, homepages undersell it: on a deep-page census, product, listing, and profile pages were walled 48.4% of the time versus 40.5% for homepages, and were far more likely to sit behind a login. The page you actually want is better defended than the front door.
How websites detect scrapers in 2026
Detection is no longer one check — it's a stack of signals scored together. Fixing one while another gives you away is the most common reason a "working" scraper suddenly returns 403s.
| Signal | How it works | What defeats it |
|---|---|---|
| TLS fingerprinting (JA3 → JA4) | Hashes your TLS handshake. A plain HTTP client's handshake doesn't match the browser its User-Agent claims — a "wrong-shape Chrome." JA4 is now used by Cloudflare, Akamai, and AWS WAF. | A TLS-impersonation stack (curl-impersonate, curl-cffi, utls) that replays a real browser handshake — and headers that match the UA. |
| HTTP/2 fingerprinting | Frame settings, header order, and pseudo-header order are scored alongside the TLS layer. | Real-browser automation, or an HTTP/2 client that mirrors a browser's frame settings and header order. |
| IP reputation | Systems classify the IP's network: datacenter/commercial = low trust; residential/mobile/ISP = high trust. Datacenter IPs see 40–60% success on protected sites vs 90%+ for residential. | Residential, mobile, or ISP proxies with sane rotation; avoid burnt datacenter ranges. |
| Browser fingerprinting | Renders a hidden canvas/WebGL scene and hashes it; headless rendering produces a different hash. Fonts, audio, and hardware add entropy. | Real Chromium with GPU acceleration and consistent, non-anomalous fingerprints. |
| Headless & CDP detection | Headless Chrome sets navigator.webdriver, lacks plugins/codecs, and leaks DevTools-Protocol control artifacts. | Stealth patches for the webdriver and headless tells, plus drivers that don't leak CDP — the most-checked layer. |
| Behavioral analysis | Mouse trajectories, scroll rhythm, and inter-request timing feed ML models. Can't be patched at the API layer. | Human-like pacing, randomized delays, and low request rates. |
| robots.txt / UA rules | Named-user-agent disallow rules (GPTBot, CCBot, ClaudeBot), increasingly enforced at the edge. | Respect them where required; present an honest UA and collect only permitted data. |
The load-bearing point: isolated spoofing fails. A residential IP with a mismatched TLS shape, or a stealthed browser with robotic timing, still trips the correlation. Vendors score the whole request, so evasion has to be holistic — which is exactly why so many teams route the hard targets through a managed unblocker instead of maintaining all of it themselves.
Who builds the walls
- Cloudflare Bot Management + Turnstile — by far the most-deployed, edge-based, with JA4 scoring and the familiar "Just a moment" challenge. Also the policy-maker on AI crawlers (below).
- DataDome — application-layer, real-time ML; strong behavioral and fingerprint sensors. Rare in raw counts but high-skill.
- HUMAN (formerly PerimeterX) — advanced behavioral analytics, consolidating anti-bot and anti-fraud; enterprise.
- Akamai Bot Manager — enterprise and edge, strongest at the traffic head, thinning out down the tail.
- Kasada — maximum resistance to headless and emulation via frequently-rotated, obfuscated client-side challenges.
Deployment matters as much as vendor: edge systems (Cloudflare, Akamai) block before your request reaches the origin; application-layer systems (DataDome, HUMAN) see business context and apply logic after.
The 2026 shift: blocking the AI crawlers
The big change this year isn't a new fingerprint — it's who the walls are aimed at. Per Cloudflare Radar, automated requests became the majority of web traffic in 2026 (57.5% vs 42.5% human), and AI crawlers are a large and growing slice of that. Publishers responded:
- 9.33% of the top 1M now fully block at least one major AI crawler in robots.txt — 14.8% of the sites that publish a robots.txt at all. It's concentrated by category: 80.6% of news & media sites block an AI crawler, versus ~11% of e-commerce. GPTBot and CCBot are the most-blocked, essentially tied. (Full breakdown and the open dataset: our AI-crawler blocking index.)
- Cloudflare announced that from September 15, 2026 it will block AI training and agent crawlers by default on monetized sites, splitting bots by purpose (training vs search vs agent) so each is independently controllable, and building on its "pay-per-crawl" marketplace that lets publishers charge crawlers via an HTTP 402 response.
For anyone building on web data, the takeaway is that the permission layer is hardening even where the technical wall is unchanged — AI and agent traffic increasingly needs an explicit, honest access path, not just a working fingerprint.
What still works for legitimate scraping
Anti-bot systems are built to stop abuse, not to make public data uncollectable. For legitimate, rate-respectful collection, these are what actually move success rates in 2026:
- Residential / mobile / ISP proxies — the single biggest lever, moving IP trust from "datacenter" to "residential" (40–60% → 90%+ on protected sites). Rotate sanely.
- TLS impersonation — match a real browser's JA4/HTTP-2 fingerprint with curl-impersonate, curl-cffi, or utls, with headers consistent with the UA you present.
- Real-browser automation with GPU acceleration and stealth patches — needed for the ~15% of sites that genuinely require a browser.
- Human-like pacing — randomized timing and low request rates defeat the behavioral layer that spoofing can't.
- Route hard targets through a managed scraping API / unblocker — which combines all of the above and adapts as vendors change, so a mismatch in one layer doesn't sink the request.
That last option is Crawlora's own approach: it handles the proxies, fingerprints, rendering, and pacing behind one endpoint, and — because billing is pay-on-success — you're charged only when a request actually returns data, not when a wall wins. Before you build any of it yourself, check what you're up against.
Sources
Where this fits
Check any site in seconds, free: the Anti-Bot Checker tells you whether a target blocks bots and how, and the AI-Crawler Access Checker shows what a site allows AI crawlers to do — no signup.
Once you know what a target runs, the practical question is how to collect it. See why your scraper works locally but returns 403 on a server for the single most common version of this problem, how to choose a web scraping API for routing hard targets, and the Anti-Bot Index and AI-Crawler Blocking Index for the full data behind this post.
Frequently asked questions
What percentage of websites use anti-bot protection?
In Crawlora's scan of the Tranco top 1,000,000 sites, 53.5% of the reachable ones run a managed anti-bot wall. Cloudflare alone sits in front of about 45% of all sites — roughly 84% of every protected site — followed distantly by Google reCAPTCHA (7.5%), hCaptcha (3.5%), and enterprise vendors like Akamai and DataDome. Protection is heavier in the long tail (44% of the top 1,000 vs 54% of the tail) and deeper than homepages suggest.
How do websites detect web scrapers?
By scoring several signals together, not one check: TLS/JA4 and HTTP/2 fingerprinting (your handshake doesn't match the browser your User-Agent claims), IP reputation (datacenter IPs are low-trust vs residential), browser and headless fingerprinting (canvas/WebGL, navigator.webdriver, CDP artifacts), and behavioral models (mouse and timing patterns). Because the signals are correlated, spoofing one layer while another mismatches still flags the request.
How do I scrape a website protected by Cloudflare?
For legitimate, rate-respectful collection: use residential or mobile proxies (which move IP trust from datacenter to residential and lift success from ~40–60% to 90%+ on protected sites), impersonate a real browser's TLS/HTTP-2 fingerprint (curl-impersonate, curl-cffi, utls), pace requests to defeat behavioral detection, and use a real browser for the ~15% of sites that require one. Most teams route hard targets through a managed scraping API that combines all of these and adapts as vendors change.