Not in the top 1,000 by GitHub stars

Esonhugh/pydoll-cf-waf-bypasser-skills

a antibot waf bypasser based on pydoll framework good at Cloudflare, 基于 pydoll 编写 cf 或其他家验证 waf 绕过人机检查的 skills. 现已加入 https://github.com/Esonhugh/Marketplace Marketplace 豪华午餐

History

Review weekly changes to SKILL.md before updating. Dates mark the weeks in which we observed each version; checks apply to the recorded commits.

View weekly changes

plugins/pydoll-antibot-bypasser/skills/pydoll-antibot-bypasser/SKILL.md

Week of Oct 26, 2026 · Line counts unavailable

Before Not checked yet → After Network or broad shell

First observation → 1f2dcfd8b7a3

No earlier version was observed for comparison.

Compare on GitHub

View on GitHubAdd to my skills

Verified commit 1f2dcfd8b7a3550183048c7e89edbc984130ac49

git clone --filter=blob:none --no-checkout https://github.com/Esonhugh/pydoll-cf-waf-bypasser-skills.git .hotskills/esonhugh-pydoll-cf-waf-bypasser-skills && git -C .hotskills/esonhugh-pydoll-cf-waf-bypasser-skills checkout --detach 1f2dcfd8b7a3550183048c7e89edbc984130ac49 # Copy each selected skill directory from .hotskills/esonhugh-pydoll-cf-waf-bypasser-skills into .claude/skills/<skill-name>/
249GitHub stars
16stars in 7 days
1skill in this repository
0commits in 30 days

Heat

4.1
  • Star growth, last 7 daysNot available
  • Star growth, last 24 hoursNot available
  • Rank movement, last 7 daysNot available
  • Commits, last 30 daysNot available
  • Accounts asking about it through MCP, last 7 daysNot available
  • Hot votes this weekNot available

Heat never changes the order by stars, and sponsorship never touches it. How heat works

Stars over time

Oct 25, 2026Nov 6, 2026249

30-day change not yet available: not enough history.

Individual skills in this repository

How it works

pydoll-antibot-bypasser

When your agent uses it

Stealth browser automation using pydoll library, specialized in bypassing Cloudflare WAF, Turnstile CAPTCHA, and other bot detection systems. **You MUST invoke this skill in ANY of these situations:** (1) The user explicitly asks to bypass WAF, anti-bot, CAPTCHA, or human verification (Cloudflare, DataDome, PerimeterX, Akamai, etc.). (2) You encounter Cloudflare protection while scraping or fetching a URL — signs include HTTP 403/503 responses, pages containing "Checking your browser", "Just a moment...", "Attention Required", "cf-browser-verification", "cf-chl-bypass", "_cf_chl_opt", Turnstile widget HTML, or any response body mentioning "cloudflare" with a challenge/block page. (3) A WebFetch or curl fails with what appears to be bot detection or WAF blocking. (4) The user wants to crawl, scrape, or automate interaction with a website known to use anti-bot protection. When in doubt about whether a site is WAF-protected, invoke this skill — it is better to invoke and not need it than to miss a bypass opportunity. Also suitable for: stealth browser operations, Shadow DOM handling, human-like behavior simulation, and concurrent web automation.

What it loads into context

Frontmatter

305 tokens

Always available to the agent

SKILL.md

2,609 tokens

When the skill is activated

Reference documents

2,314 tokens

Loaded on request

Token counts are estimates. Scripts run separately; they are not counted as reference context.

The playbook

  1. Quick Reference
  2. Browser Configuration
  3. Cloudflare Bypass
  4. Element Operations
  5. Keyboard/Mouse Operations
  6. Shadow DOM
  7. Network Control
  8. Tab Management
  9. Screenshot & Download
  10. Exception Handling
  11. Complete Examples
  12. Troubleshooting
  13. References

Scripts executed separately

  • examples/bypass_cloudflare.py
  • examples/bypass_managed_challenge.py
  • examples/concurrent_scraper.py
  • examples/screenshot.py
  • examples/stealth_scraper.py
  • scripts/templates.py

Files

  • ../../../../.claude-plugin/marketplace.jsonasset965 bytes
  • ../../.claude-plugin/plugin.jsonasset678 bytes
  • SKILL.mdcore10,868 bytes
  • SKILL.mdcore10,868 bytes
  • SKILL.mdcore10,868 bytes
  • SKILL.mdcore10,868 bytes
  • SKILL.mdcore10,868 bytes
  • SKILL.mdcore10,868 bytes
  • SKILL.mdcore10,868 bytes
  • SKILL.mdcore10,868 bytes
  • SKILL.mdcore10,868 bytes
  • SKILL.mdcore10,868 bytes
  • SKILL.mdcore10,868 bytes
  • SKILL.mdcore10,868 bytes
  • SKILL.mdcore10,868 bytes
  • SKILL.mdcore10,868 bytes
  • SKILL.mdcore10,868 bytes
  • SKILL.mdcore10,868 bytes
  • SKILL.mdcore10,868 bytes
  • SKILL.mdcore10,868 bytes
  • SKILL.mdcore10,868 bytes
  • examples/bypass_cloudflare.pyruns2,828 bytes
  • examples/bypass_managed_challenge.pyruns5,078 bytes
  • examples/concurrent_scraper.pyruns5,038 bytes
  • examples/screenshot.pyruns3,034 bytes
  • examples/stealth_scraper.pyruns5,093 bytes
  • knowledge/anti_detection.mddoc10,074 bytes
  • scripts/templates.pyruns16,003 bytes

No excerpt is shown for this license. Read the source on GitHub.

View the complete source on GitHub

Skills included

  • pydoll-antibot-bypasser

Repository facts

License
No license detected
Created
Mar 7, 2026
Last pushed
Aug 4, 2026
Forks
26
Open issues
0
Project activity
Slowing

Before you install

Network or broad shell

Automated signals, not a guarantee

Checked Nov 4, 2026

Not fully analyzed: some files were too long, unreadable or missing. This never lowers the level.

Show 18 notes
  • plugins/pydoll-antibot-bypasser/skills/pydoll-antibot-bypasser/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/pydoll-antibot-bypasser/skills/pydoll-antibot-bypasser/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/pydoll-antibot-bypasser/skills/pydoll-antibot-bypasser/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/pydoll-antibot-bypasser/skills/pydoll-antibot-bypasser/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/pydoll-antibot-bypasser/skills/pydoll-antibot-bypasser/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/pydoll-antibot-bypasser/skills/pydoll-antibot-bypasser/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/pydoll-antibot-bypasser/skills/pydoll-antibot-bypasser/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/pydoll-antibot-bypasser/skills/pydoll-antibot-bypasser/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/pydoll-antibot-bypasser/skills/pydoll-antibot-bypasser/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/pydoll-antibot-bypasser/skills/pydoll-antibot-bypasser/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/pydoll-antibot-bypasser/skills/pydoll-antibot-bypasser/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/pydoll-antibot-bypasser/skills/pydoll-antibot-bypasser/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/pydoll-antibot-bypasser/skills/pydoll-antibot-bypasser/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/pydoll-antibot-bypasser/skills/pydoll-antibot-bypasser/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/pydoll-antibot-bypasser/skills/pydoll-antibot-bypasser/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/pydoll-antibot-bypasser/skills/pydoll-antibot-bypasser/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/pydoll-antibot-bypasser/skills/pydoll-antibot-bypasser/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
  • plugins/pydoll-antibot-bypasser/skills/pydoll-antibot-bypasser/SKILL.md:1 Analysis incomplete: Referenced executable target unavailable; not analyzed
Show all 100 signals by file

.claude-plugin/marketplace.json

  • Network accessline 18
    },       "category": "automation",       "homepage": "https://github.com/Esonhugh/pydoll-cf-waf-bypasser-skills",
  • Network accessline 19
    "category": "automation",       "homepage": "https://github.com/Esonhugh/pydoll-cf-waf-bypasser-skills",       "keywords": [
  • Network accessline 20
    "homepage": "https://github.com/Esonhugh/pydoll-cf-waf-bypasser-skills",

plugins/pydoll-antibot-bypasser/.claude-plugin/plugin.json

  • Network accessline 5
    "author": {     "name": "Esonhugh",     "url": "https://github.com/Esonhugh"
  • Network accessline 6
    "name": "Esonhugh",     "url": "https://github.com/Esonhugh"   },
  • Network accessline 7
    "url": "https://github.com/Esonhugh"
  • Network accessline 8
    },   "homepage": "https://github.com/Esonhugh/pydoll-cf-waf-bypasser-skills",   "repository": "https://github.com/Esonhugh/pydoll-cf-waf-bypasser-skills",
  • Network accessline 9
    "homepage": "https://github.com/Esonhugh/pydoll-cf-waf-bypasser-skills",
  • Network accessline 10
    "repository": "https://github.com/Esonhugh/pydoll-cf-waf-bypasser-skills",

plugins/pydoll-antibot-bypasser/skills/pydoll-antibot-bypasser/SKILL.md

  • Network accessline 11
    "cf-browser-verification", "cf-chl-bypass", "_cf_chl_opt", Turnstile widget   HTML, or any response body mentioning "cloudflare" with a challenge/block   page. (3) A WebFetch or curl fails with what appears to be bot detection or
  • Network accessline 12
    HTML, or any response body mentioning "cloudflare" with a challenge/block   page. (3) A WebFetch or curl fails with what appears to be bot detection or   WAF blocking. (4) The user wants to crawl, scrape, or automate interaction
  • Network accessline 13
    page. (3) A WebFetch or curl fails with what appears to be bot detection or
  • Network accessline 94
    # Bypass Cloudflare         async with tab.expect_and_bypass_cloudflare_captcha():             await tab.go_to('https://protected-site.com')
  • Network accessline 96
    await tab.go_to('https://protected-site.com')
  • Network accessline 151
    # HTTP proxy options.add_argument('--proxy-server=http://user:pass@proxy:8080')
  • Network accessline 152
    options.add_argument('--proxy-server=http://user:pass@proxy:8080')
  • Network accessline 154
    # Isolated browser context context_id = await browser.create_browser_context(     proxy_server='http://proxy:8080'
  • Network accessline 155
    context_id = await browser.create_browser_context(     proxy_server='http://proxy:8080' )
  • Network accessline 156
    proxy_server='http://proxy:8080'
  • Network accessline 168
    tab = await browser.start()     async with tab.expect_and_bypass_cloudflare_captcha():         await tab.go_to('https://protected-site.com')
  • Network accessline 170
    await tab.go_to('https://protected-site.com')
  • Network accessline 176
    await tab.enable_auto_solve_cloudflare_captcha() await tab.go_to('https://protected-site.com')
  • Network accessline 177
    await tab.go_to('https://protected-site.com')
  • Network accessline 292
    # After UI login, make API requests with browser session response = await tab.request.get('https://example.com/api/profile')
  • Network accessline 293
    response = await tab.request.get('https://example.com/api/profile')
  • Network accessline 311
    await tab.enable_fetch_events() await tab.on(FetchEvent.REQUEST_PAUSED, block_resources) await tab.go_to('https://example.com')
  • Network accessline 312
    await tab.on(FetchEvent.REQUEST_PAUSED, block_resources) await tab.go_to('https://example.com') await tab.disable_fetch_events()
  • Network accessline 313
    await tab.go_to('https://example.com')
  • Network accessline 322
    # New tab tab2 = await browser.new_tab(url='https://example.com')
  • Network accessline 323
    tab2 = await browser.new_tab(url='https://example.com')
  • Network accessline 412
    - GitHub: https://github.com/autoscrape-labs/pydoll
  • Network accessline 413
    - Documentation: https://pydoll.tech/
  • Network accessline 414
    - Chinese Docs: https://autoscrape-labs.github.io/pydoll/

plugins/pydoll-antibot-bypasser/skills/pydoll-antibot-bypasser/examples/bypass_cloudflare.py

  • Executable scriptline 1
    Executable file
  • Network accessline 10
    运行方式: uv run bypass_cloudflare.py <url> 示例: uv run bypass_cloudflare.py https://nowsecure.nl
  • Network accessline 11
    示例: uv run bypass_cloudflare.py https://nowsecure.nl
  • Network accessline 95
    if len(sys.argv) < 2:         print("用法: uv run bypass_cloudflare.py <url>")         print("示例: uv run bypass_cloudflare.py https://nowsecure.nl")
  • Network accessline 96
    print("用法: uv run bypass_cloudflare.py <url>")         print("示例: uv run bypass_cloudflare.py https://nowsecure.nl")         sys.exit(1)
  • Network accessline 97
    print("示例: uv run bypass_cloudflare.py https://nowsecure.nl")

plugins/pydoll-antibot-bypasser/skills/pydoll-antibot-bypasser/examples/bypass_managed_challenge.py

  • Executable scriptline 1
    Executable file
  • Network accessline 13
    xvfb-run -a --server-args="-screen 0 1920x1080x24" uv run bypass_managed_challenge.py <url> 示例:     xvfb-run -a uv run bypass_managed_challenge.py https://dash.cloudflare.com/login
  • Network accessline 14
    示例:     xvfb-run -a uv run bypass_managed_challenge.py https://dash.cloudflare.com/login """
  • Network accessline 15
    xvfb-run -a uv run bypass_managed_challenge.py https://dash.cloudflare.com/login
  • Network accessline 142
    print()         print("示例:")         print("  xvfb-run -a uv run bypass_managed_challenge.py https://stackoverflow.com")
  • Network accessline 143
    print("示例:")         print("  xvfb-run -a uv run bypass_managed_challenge.py https://stackoverflow.com")         print("  xvfb-run -a uv run bypass_managed_challenge.py https://dash.cloudflare.com/login result.png")
  • Network accessline 144
    print("  xvfb-run -a uv run bypass_managed_challenge.py https://stackoverflow.com")
  • Network accessline 145
    print("  xvfb-run -a uv run bypass_managed_challenge.py https://dash.cloudflare.com/login result.png")

plugins/pydoll-antibot-bypasser/skills/pydoll-antibot-bypasser/examples/concurrent_scraper.py

  • Executable scriptline 1
    Executable file
  • Network accessline 10
    运行方式: uv run concurrent_scraper.py <url1> <url2> ... 示例: uv run concurrent_scraper.py https://example.com https://google.com
  • Network accessline 11
    示例: uv run concurrent_scraper.py https://example.com https://google.com
  • Network accessline 161
    if len(sys.argv) < 2:         print("用法: uv run concurrent_scraper.py <url1> <url2> ...")         print("示例: uv run concurrent_scraper.py https://example.com https://google.com")
  • Network accessline 162
    print("用法: uv run concurrent_scraper.py <url1> <url2> ...")         print("示例: uv run concurrent_scraper.py https://example.com https://google.com")         sys.exit(1)
  • Network accessline 163
    print("示例: uv run concurrent_scraper.py https://example.com https://google.com")

plugins/pydoll-antibot-bypasser/skills/pydoll-antibot-bypasser/examples/screenshot.py

  • Executable scriptline 1
    Executable file

plugins/pydoll-antibot-bypasser/skills/pydoll-antibot-bypasser/examples/stealth_scraper.py

  • Executable scriptline 1
    Executable file
  • Network accessline 162
    if len(sys.argv) < 2:         print("用法: uv run stealth_scraper.py <url>")         print("示例: uv run stealth_scraper.py https://example.com")
  • Network accessline 163
    print("用法: uv run stealth_scraper.py <url>")         print("示例: uv run stealth_scraper.py https://example.com")         sys.exit(1)
  • Network accessline 164
    print("示例: uv run stealth_scraper.py https://example.com")

plugins/pydoll-antibot-bypasser/skills/pydoll-antibot-bypasser/knowledge/anti_detection.md

  • Network accessline 56
    'session': {         'restore_on_startup': 1,         'startup_urls': ['https://www.google.com']
  • Network accessline 57
    'restore_on_startup': 1,         'startup_urls': ['https://www.google.com']     },
  • Network accessline 58
    'startup_urls': ['https://www.google.com']
  • Network accessline 76
    # HTTP proxy options.add_argument('--proxy-server=http://user:pass@proxy:8080')
  • Network accessline 77
    options.add_argument('--proxy-server=http://user:pass@proxy:8080')
  • Network accessline 82
    # Isolated browser context (independent proxy per context) context_id = await browser.create_browser_context(     proxy_server='http://proxy:8080'
  • Network accessline 83
    context_id = await browser.create_browser_context(     proxy_server='http://proxy:8080' )
  • Network accessline 84
    proxy_server='http://proxy:8080'
  • Network accessline 151
    await tab.enable_fetch_events() await tab.on(FetchEvent.REQUEST_PAUSED, block_resources) await tab.go_to('https://example.com')
  • Network accessline 152
    await tab.on(FetchEvent.REQUEST_PAUSED, block_resources) await tab.go_to('https://example.com') await tab.disable_fetch_events()
  • Network accessline 153
    await tab.go_to('https://example.com')
  • Network accessline 170
    # Auto-detect and handle Turnstile async with tab.expect_and_bypass_cloudflare_captcha():     await tab.go_to('https://protected-site.com')
  • Network accessline 172
    await tab.go_to('https://protected-site.com')

plugins/pydoll-antibot-bypasser/skills/pydoll-antibot-bypasser/scripts/templates.py

  • Executable scriptline 1
    Executable file
  • Network accessline 46
    async with Chrome(options=options) as browser:         tab = await browser.start()         await tab.go_to('https://example.com')
  • Network accessline 47
    tab = await browser.start()         await tab.go_to('https://example.com')         print(await tab.title)
  • Network accessline 48
    await tab.go_to('https://example.com')
  • Network accessline 104
    async def main():     result = await bypass_cloudflare('https://nowsecure.nl')
  • Network accessline 105
    result = await bypass_cloudflare('https://nowsecure.nl')
  • Network accessline 181
    async def main():     data = await scrape_website(         url='https://news.ycombinator.com',
  • Network accessline 182
    data = await scrape_website(         url='https://news.ycombinator.com',         selectors={
  • Network accessline 183
    url='https://news.ycombinator.com',
  • Network accessline 252
    result = await fill_form(         url='https://example.com/login',
  • Network accessline 253
    url='https://example.com/login',
  • Network accessline 318
    async def main():     result = await login_and_request(         login_url='https://example.com/login',
  • Network accessline 319
    result = await login_and_request(         login_url='https://example.com/login',         username='your_username',
  • Network accessline 320
    login_url='https://example.com/login',
  • Network accessline 324
    password_selector='#password',         submit_selector='button[type="submit"]',         api_url='https://example.com/api/user/profile',
  • Network accessline 325
    submit_selector='button[type="submit"]',         api_url='https://example.com/api/user/profile',     )
  • Network accessline 326
    api_url='https://example.com/api/user/profile',
  • Network accessline 386
    files = await take_screenshots(         urls=[             'https://example.com',
  • Network accessline 387
    urls=[             'https://example.com',             'https://google.com',
  • Network accessline 388
    'https://example.com',
  • Network accessline 389
    'https://google.com',
  • Network accessline 455
    async def main():     urls = [         'https://example.com',
  • Network accessline 456
    urls = [         'https://example.com',         'https://google.com',
  • Network accessline 457
    'https://example.com',
  • Network accessline 458
    'https://google.com',
  • Network accessline 459
    'https://github.com',
  • Network accessline 541
    # proxy='http://user:pass@proxy:port',
  • Network accessline 548
    async with tab.expect_and_bypass_cloudflare_captcha():             await tab.go_to('https://nowsecure.nl')
  • Network accessline 549
    await tab.go_to('https://nowsecure.nl')

How the signals fit together

Facts from a static read of the files at the pinned commit. They describe what the code does, not why.

Some files could not be read; the facts below still hold.

Declared and executed: 7 facts
Signal confidence: 91 facts

and 41 more

Works with

  • Native The repository ships a manifest, folder or frontmatter field for this agent.
  • Compatible A standard SKILL.md that this agent can read.
  • Unknown No evidence either way.

Derived automatically from paths, manifests and frontmatter. Not tested on each agent.