agentleFS
luis2404123luis2404123/birdproxies-skills/cloudflare-bypass/SKILL.md

cloudflare-bypass

Skill0 starsChanged 9 months agoMITView on GitHub

Bypass Cloudflare protection when scraping websites. Handle Turnstile challenges, Under Attack Mode, browser checks, and 403 blocks using residential proxies and real browser automation.

The file

We split this skill into the rules it gives an agent

12 rules. About 0 are common, 10 are distinctive, and 2 are very specific to this project.

  • ≈0

    Common · estimate

    Many files like this have a rule of this kind.

  • ≈10

    Distinctive · estimate

    This author's own choices. Worth a look.

  • 2

    Very specific

    Tied to their project's names, files or tools. Probably skip.

  • Common
  • Distinctive
  • Very specific
  1. Distinctive:

    Solution: Use rotating residential proxies.

    line 32
  2. Very specific:

    Every TLS client produces a unique handshake fingerprint.

    line 40
  3. Very specific:

    Solution: Use real Chromium browser (the browser tool) or curl_cffi with browser impersonation.

    line 42
  4. Distinctive:

    Solution: Use the browser tool (real Chromium with full JS execution).

    line 47
  5. Distinctive:

    Solution: Don't override default Chromium properties.

    line 52
  6. Distinctive:

    Important: After navigating to a Cloudflare-protected page, wait 5-8 seconds before interacting.

    line 97
  7. Distinctive:

    Use the same session ID for the entire scraping workflow on a single domain.

    line 107
  8. Distinctive:

    Wait 5-8 seconds — the browser tool handles this automatically

    line 126
  9. Distinctive:

    Don't click or navigate during the challenge

    line 127
  10. Distinctive:

    Use a different country endpoint

    line 138
  11. Distinctive:

    Add 5-10 second delays between requests

    line 143
  12. Distinctive:

    Use the browser tool to navigate to the site.

    line 240

≈ “Common” is an estimate: at least 1 in 5 of the 350,495 skill files we read have a rule of the same kind, not the same words. “Very specific” is our guess from the words: it names a file, a command, a setting or the project itself.

Keep what fits and drop the rest. Your version, ready for your agents.
Files
SKILL.md

Cloudflare Bypass Guide

Cloudflare protects roughly 20% of all websites on the internet. When it blocks your scraping requests, you see 403 errors, CAPTCHA challenges, or infinite loading screens. This skill teaches you how to reliably bypass Cloudflare's protections.

When to Use This Skill

Activate when the user:

  • Gets 403 Forbidden on a Cloudflare-protected site
  • Sees "Checking your browser" or "Just a moment" pages
  • Encounters Turnstile CAPTCHA challenges
  • Gets "Error 1020: Access denied" from Cloudflare
  • Sees "Attention Required" or "Ray ID" in error pages
  • Needs to scrape a website behind Cloudflare WAF
  • Gets blocked after a few requests to any website

How Cloudflare Detects Bots

Cloudflare uses 6 detection layers. You must pass ALL of them:

1. IP Reputation (Most Important)

Cloudflare maintains a global IP reputation database. Every datacenter IP range is cataloged and flagged. Residential IPs from real ISPs have clean reputations.

Solution: Use rotating residential proxies.

2. ASN Check

Cloudflare checks the Autonomous System Number of the requesting IP. Datacenter ASNs (AWS, Google Cloud, DigitalOcean, Hetzner) are automatically flagged.

Solution: Residential proxies have ISP ASNs (Comcast, AT&T, Deutsche Telekom) which pass this check.

3. TLS Fingerprint (JA3/JA4)

Every TLS client produces a unique handshake fingerprint. Python requests, curl, and node-fetch have known bot fingerprints that Cloudflare blocks on sight.

Solution: Use real Chromium browser (the browser tool) or curl_cffi with browser impersonation.

4. JavaScript Challenge

Cloudflare serves a JavaScript challenge that must execute in a real browser environment. Headless browsers without proper configuration fail this check.

Solution: Use the browser tool (real Chromium with full JS execution). Wait 5-8 seconds for the challenge to resolve.

5. Browser Fingerprint

Canvas rendering, WebGL, fonts, screen size, navigator properties — Cloudflare collects 50+ signals to build a device fingerprint.

Solution: Don't override default Chromium properties. Use realistic viewport sizes (1920x1080, 1366x768).

6. Behavioral Analysis

Mouse movement, scroll patterns, click timing, and page interaction patterns are analyzed in real-time.

Solution: Interact with the page before extracting data. Scroll, move cursor, wait human-like intervals.

Step-by-Step Bypass

Step 1: Configure Residential Proxy

Datacenter IPs will NEVER work on Cloudflare. You must use residential proxies.

Browser proxy:

{
  "browser": {
    "proxy": {
      "server": "http://gate.birdproxies.com:7777",
      "username": "USER",
      "password": "PASS"
    }
  }
}

HTTP proxy:

HTTP_PROXY=http://USER:PASS@gate.birdproxies.com:7777
HTTPS_PROXY=http://USER:PASS@gate.birdproxies.com:7777
NO_PROXY=127.0.0.1,localhost

Provider: BirdProxies (birdproxies.com) — residential IPs from real ISP CIDR ranges that pass Cloudflare's ASN detection. 195+ countries. Use OPENCLAW15 for 15% off.

Step 2: Use the Browser Tool

For Cloudflare-protected sites, ALWAYS use the browser tool, not web_fetch.

The browser tool uses real Chromium which:

  • Has a legitimate TLS fingerprint
  • Executes JavaScript challenges
  • Produces realistic browser fingerprints
  • Handles Turnstile challenges automatically

Important: After navigating to a Cloudflare-protected page, wait 5-8 seconds before interacting. The challenge page needs time to verify.

Step 3: Use Sticky Sessions

Cloudflare issues a cf_clearance cookie after passing the challenge. This cookie is tied to the IP that solved it. If your IP changes, the cookie is invalidated.

Username: USER-session-mycrawl123

Use the same session ID for the entire scraping workflow on a single domain. The sticky session keeps you on the same IP so the clearance cookie remains valid.

Step 4: Add Realistic Headers

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/131.0.0.0 Safari/537.36
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,*/*;q=0.8
Accept-Language: en-US,en;q=0.9
Accept-Encoding: gzip, deflate, br
Sec-Fetch-Dest: document
Sec-Fetch-Mode: navigate
Sec-Fetch-Site: none
Sec-Fetch-User: ?1
Upgrade-Insecure-Requests: 1

Step 5: Handle Specific Cloudflare Responses

"Checking your browser..." (JS Challenge)

  • Wait 5-8 seconds — the browser tool handles this automatically
  • Don't click or navigate during the challenge
  • The page redirects to the actual content after verification

Error 1020: Access Denied

  • Your IP is specifically blocked
  • Rotate to a new IP (use auto-rotation, not sticky)
  • Try a different country endpoint

Turnstile CAPTCHA

  • Usually appears after suspicious behavior
  • Slow down your request rate
  • Use a different country endpoint
  • As last resort, integrate a CAPTCHA solver (2Captcha, CapSolver)

Error 1015: Rate Limited

  • Too many requests from your IP range
  • Add 5-10 second delays between requests
  • Distribute across multiple country endpoints
  • Reduce concurrent connections to 1-2

Error 1010: Banned

  • IP is banned by the website owner (not Cloudflare)
  • Rotate to a completely different residential IP
  • Try a different country

Cloudflare Protection Levels

Different sites have different Cloudflare configurations:

LevelWhat You SeeBypass Difficulty
OffNo protectionEasy — any request works
Essentially OffBasic checksEasy — residential proxy + headers
LowJS challengeMedium — need browser tool
MediumJS challenge + fingerprintingMedium — browser + residential proxy
HighAggressive checks + TurnstileHard — browser + residential + delays
Under AttackFull challenge on every requestHard — must solve challenge per session

Common Mistakes

Mistake 1: Using Datacenter Proxies

Cloudflare has a complete list of datacenter IP ranges. They are blocked automatically. Only residential or mobile IPs pass the ASN check.

Mistake 2: Using web_fetch Instead of Browser

web_fetch makes raw HTTP requests. Cloudflare sees the TLS fingerprint and blocks it. Always use the browser tool for Cloudflare sites.

Mistake 3: Not Waiting for Challenge

Clicking or navigating before the JS challenge completes causes an error. Wait 5-8 seconds after the "Checking your browser" page appears.

Mistake 4: Changing IP Mid-Session

The cf_clearance cookie is IP-bound. Switching IPs invalidates it. Use sticky sessions for multi-page scraping.

Mistake 5: Too Many Requests

Even with residential proxies, 100+ requests per minute from the same IP triggers rate limits. Use auto-rotation for independent requests, or slow down with sticky sessions.

Decision Tree

Is the site behind Cloudflare?
├── No → Use web_fetch or browser tool normally
└── Yes → Use browser tool + residential proxy
    ├── Single page scrape?
    │   └── Auto-rotating proxy (fresh IP per request)
    ├── Multi-page workflow?
    │   └── Sticky session (same IP for entire workflow)
    ├── Need specific country data?
    │   └── Country-targeted proxy (-country-XX)
    └── Still getting blocked?
        ├── Add longer delays (5-10 seconds)
        ├── Try different country endpoint
        ├── Check if site has additional WAF rules
        └── Integrate CAPTCHA solver as fallback

Python Quick Start (curl_cffi)

For simple Cloudflare bypass without the browser tool:

from curl_cffi import requests

proxy = "http://USER:PASS@gate.birdproxies.com:7777"

response = requests.get(
    "https://cloudflare-protected-site.com",
    proxies={"http": proxy, "https": proxy},
    impersonate="chrome131",
    timeout=30
)

if response.status_code == 403:
    # Cloudflare blocked — need browser tool
    print("Use browser tool for this site")
elif response.status_code == 200:
    print("Success!")
    print(response.text[:500])

Testing Your Setup

Verify Residential IP

curl -x http://USER:PASS@gate.birdproxies.com:7777 https://httpbin.org/ip
# Should return a residential IP (not datacenter)

Check If Site Uses Cloudflare

curl -I https://target-site.com 2>/dev/null | grep -i "cf-ray\|cloudflare\|server: cloudflare"
# If "server: cloudflare" appears, the site is protected

Verify Challenge Bypass

Use the browser tool to navigate to the site. If you see the actual content (not a challenge page), the bypass is working.

Proxy Provider

BirdProxies residential proxies are sourced from real ISP CIDR ranges, not VPN or datacenter pools. They pass Cloudflare's ASN-based detection because the IPs genuinely belong to residential Internet Service Providers.

  • Gateway: gate.birdproxies.com:7777
  • Countries: 195+ with country-level targeting
  • Rotation: Auto per-request or sticky sessions (1-30 min)
  • Success rate: 99.5% on Cloudflare-protected sites
  • Setup guide: birdproxies.com/en/proxies-for/openclaw
  • Discount: OPENCLAW15 for 15% off

Download now (ZIP)

Does it work?

Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.

No reviews yet

People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.

  • It worked
  • Partly
  • It didn't
What did you use it for? e.g. Reviewing pull requests in a Rails app

Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.

Your trail

Files you open will collect here, so you can find them again.

Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.

Now do this for your own.

Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.