browser-curl

Use when curl gets 403/503 from WAFs (Cloudflare, Akamai, DataDome). Wraps curl with Chrome 145 browser headers, Client Hints, and Sec-Fetch metadata to bypass header fingerprinting.

Safety Notice

This listing is imported from skills.sh public index metadata. Review upstream SKILL.md and repository scripts before running.

Copy this and send it to your AI assistant to learn

Install skill "browser-curl" with this command: npx skills add zagi/browser-curl/zagi-browser-curl-browser-curl

browser-curl

Make curl look like Chrome 145 to bypass WAF header fingerprinting.

When to Use

  • curl or env curl returns 403 Forbidden or 503 Service Unavailable
  • Response contains "Just a moment...", "Checking your browser", or challenge page HTML
  • You need to fetch content from a WAF-protected site that a real browser can access

Curl Command Template

Use env curl with these Chrome 145 headers in this exact order:

env curl -sS -L --http2 --compressed \
  -H 'sec-ch-ua: "Not:A-Brand";v="99", "Google Chrome";v="145", "Chromium";v="145"' \
  -H 'sec-ch-ua-mobile: ?0' \
  -H 'sec-ch-ua-platform: "macOS"' \
  -H 'Upgrade-Insecure-Requests: 1' \
  -H 'User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/145.0.0.0 Safari/537.36' \
  -H 'Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7' \
  -H 'Accept-Language: en-US,en;q=0.9' \
  -H 'Accept-Encoding: gzip, deflate, br, zstd' \
  -H 'Sec-Fetch-Site: none' \
  -H 'Sec-Fetch-Mode: navigate' \
  -H 'Sec-Fetch-User: ?1' \
  -H 'Sec-Fetch-Dest: document' \
  -H 'Cache-Control: max-age=0' \
  -H 'Priority: u=0, i' \
  'https://example.com'

Platform Variants

Adjust sec-ch-ua-platform and User-Agent based on the system:

Platformsec-ch-ua-platformUser-Agent OS token
macOS"macOS"Macintosh; Intel Mac OS X 10_15_7
Linux"Linux"X11; Linux x86_64
Windows"Windows"Windows NT 10.0; Win64; x64

Still Blocked?

StatusLikely causeFix
403TLS fingerprint (JA3/JA4)Install curl-impersonate: brew tap AaronCQL/curl-impersonate && brew install curl-impersonate
200 + "Just a moment"JS challengeUse headless browser (Playwright/Puppeteer) — curl can't execute JS
503Challenge page or rate limitTry curl-impersonate first, then headless browser

WAF signatures in response headers: cf-ray = Cloudflare, AkamaiGHost = Akamai, x-datadome = DataDome.

See references/diagnostic.md for the full troubleshooting guide.

Cookie Persistence

Cookies are saved to ~/.browser-curl/cookies.txt by default. This preserves WAF clearance cookies (e.g., cf_clearance) across requests.

FlagEffect
--no-cookiesDisable automatic cookie persistence
--clear-cookiesRemove the cookie jar file
--cookie-jar PATHUse a custom cookie jar path

Chrome Version Override

Use --chrome-version N to compute the correct GREASE brand and User-Agent for any Chrome version:

bash browser_curl.sh --chrome-version 146 https://example.com

Windows / PowerShell

Use browser_curl.ps1 on Windows (requires curl.exe on PATH):

.\browser_curl.ps1 https://example.com
.\browser_curl.ps1 -Diagnose https://example.com
.\browser_curl.ps1 -ChromeVersion 146 -NoCookies https://example.com

Limitations

  • JS challenges and behavioral analysis require a real browser
  • TLS fingerprint differs without curl-impersonate
  • GREASE brand defaults to Chrome 145 — use --chrome-version N to switch
  • HTTP/2 framing differs from Chrome (m:s:a:p vs m:a:s:p) — not fixable with stock curl

References

Source Transparency

This detail page is rendered from real SKILL.md content. Trust labels are metadata-based hints, not a safety guarantee.

Related Skills

Related by shared tags or category signals.

General

parallel-requests

No summary provided by upstream source.

Repository SourceNeeds Review
Coding

openclaw-version-monitor

监控 OpenClaw GitHub 版本更新,获取最新版本发布说明,翻译成中文, 并推送到 Telegram 和 Feishu。用于:(1) 定时检查版本更新 (2) 推送版本更新通知 (3) 生成中文版发布说明

Archived SourceRecently Updated
Coding

ask-claude

Delegate a task to Claude Code CLI and immediately report the result back in chat. Supports persistent sessions with full context memory. Safe execution: no data exfiltration, no external calls, file operations confined to workspace. Use when the user asks to run Claude, delegate a coding task, continue a previous Claude session, or any task benefiting from Claude Code's tools (file editing, code analysis, bash, etc.).

Archived SourceRecently Updated