
You pointed requests or Playwright at a target and got Error 1020: Access denied. The HTML never arrived. In 2026, Cloudflare sits in front of a large share of retail, SaaS, and media sites — so every scraping team hits 1020 eventually.
This guide is a fix order that works in production: diagnose the layer, apply the smallest change that clears the block, then scale.
What Cloudflare 1020 actually means
Error 1020 is not a generic HTTP status — it is Cloudflare-specific. The edge proxy decided your request should not proceed. Typical triggers:
- IP reputation — datacenter ASN, burned residential, or geo mismatch
- TLS / JA3 fingerprint — Python
requestsdoes not look like Chrome - Missing post-challenge state — you need cookies from a JS interstitial
- Behavior — burst concurrency, identical headers, no referrers
[!TIP] Pro Tip: Log the response body on 1020. Cloudflare often embeds a Ray ID and challenge type — save it when opening a support ticket with the site owner.
Step 1: Confirm it is Cloudflare (not origin 403)
Check headers for cf-ray, server: cloudflare, or HTML containing cdn-cgi/challenge. If present, tuning origin headers will not help — you are blocked at the edge.
For a quick sanity check, route one request through Aethyn Premium residential at proxy.aethyn.io:2099 and compare pass rate. If 1020 disappears, reputation was the primary issue. If it persists, move to TLS and JS layers.
Step 2: Fix IP reputation first
| Signal | Fix |
|---|---|
| Datacenter IP | Switch to Premium residential |
| Commodity residential blocked | Step up to Elite residential |
| Same subnet hammered | Rotate per session; lower concurrency |
| Wrong country | Match proxy geo to the site's market (country-us in username) |
See our solution guide for scraping behind Cloudflare for a Playwright + Elite workflow.
Step 3: Upgrade transport — browser-grade TLS
Cloudflare Bot Management compares your TLS fingerprint (JA3/JA4) to known browsers. Plain urllib and requests fail this check on strict sites.
Fix: drive the page with Playwright over Aethyn proxies. The browser supplies legitimate TLS, HTTP/2 settings, and JS execution for interstitials.
Read the deep dive: TLS fingerprinting for scrapers.
Step 4: Handle JS challenges and cookies
On Managed Challenge or Interactive Challenge pages:
- Launch Playwright with proxy at browser context level
- Wait for
networkidleor a known selector - Export cookies to your HTTP client if you must drop to
requestsafterward - Keep sticky sessions — rotating mid-challenge resets suspicion
Do not screenshot-solve CAPTCHAs on sites you are not authorized to test.
Step 5: Pace like a human
Even perfect IPs fail if you send 200 parallel requests per second.
- Cap concurrency (start at 3–5 workers per domain)
- Randomize inter-request delay (200–800 ms jitter)
- Rotate User-Agent only when you rotate IP — mismatched pairs score badly
- Cache aggressively — fewer requests means fewer chances to trigger 1020
Premium vs Elite for Cloudflare targets
| Target difficulty | Pool |
|---|---|
| Blogs, directories, light CF | Premium residential |
| Retail, fintech, Bot Management | Elite residential |
| Account login + checkout | Elite + sticky session + anti-detect browser |
Aethyn Premium starts at €2.00/GB; Elite adds stricter sourcing and city/ISP targeting for hard exits.
When to stop fighting 1020
If the data is available via an official API, partner feed, or licensed dataset — use that first. Proxies are for public web collection, not for circumventing access controls on systems you should not touch.
Common questions about this article
What does Cloudflare error 1020 mean?
Can residential proxies fix Cloudflare 1020?
Is bypassing Cloudflare legal?
Guides, integrations & docs
Continue reading

TLS Fingerprinting (JA3/JA4) Explained for Web Scrapers (2026)
Anti-bot systems fingerprint your TLS handshake — not just your IP. Learn what JA3 and JA4 measure and how to pass checks with browsers and Elite residential proxies.

How to Avoid IP Bans Using Rotating Residential Proxies
IP bans are the enemy of automation. Learn the science of rotation and how to mimic human behavior to stay invisible on any website.

Country-Level Targeting Isn't Enough: City and ISP Proxies Explained
Country targeting fails silently. The page renders, the price parses, the row lands in your warehouse — describing a market nobody sells into. Here's when you need city or ISP granularity, when you don't, and how to prove the exit landed where you asked.
Premium or Elite residential proxies
Join developers scaling scraping and automation with Aethyn Premium and Elite pools from €2.00/GB.