camoufox-stealth-browserC++ level anti-bot browser automation using Camoufox (patched Firefox) in isolated containers. Bypasses Cloudflare Turnstile, Datadome, Airbnb, Yelp. Superior to Chrome-based solutions (undetected-chromedriver, puppeteer-stealth) which only patch at JS level. Use when standard Playwright/Selenium gets blocked.
Install via ClawdBot CLI:
clawdbot install kesslerio/camoufox-stealth-browserC++ level anti-bot evasion using Camoufox ā a custom Firefox fork with stealth patches compiled into the browser itself, not bolted on via JavaScript.
| Approach | Detection Level | Tools |
|----------|-----------------|-------|
| Camoufox (this skill) | C++ compiled patches | Undetectable fingerprints baked into browser |
| undetected-chromedriver | JS runtime patches | Can be detected by timing analysis |
| puppeteer-stealth | JS injection | Patches applied after page load = detectable |
| playwright-stealth | JS injection | Same limitations |
Camoufox patches Firefox at the source code level ā WebGL, Canvas, AudioContext fingerprints are genuinely spoofed, not masked by JavaScript overrides that anti-bot systems can detect.
puppeteer-stealth or undetected-chromedriver stopped working| Tool | Level | Best For |
|------|-------|----------|
| Camoufox | C++ patches | All protected sites - Cloudflare, Datadome, Yelp, Airbnb |
| curl_cffi | TLS spoofing | API endpoints only - no JS needed, very fast |
All scripts run in pybox distrobox for isolation.
ā ļø Use python3.14 explicitly - pybox may have multiple Python versions with different packages installed.
# Install tools in pybox (use python3.14)
distrobox-enter pybox -- python3.14 -m pip install camoufox curl_cffi
# Camoufox browser downloads automatically on first run (~700MB Firefox fork)
Browser (Camoufox):
distrobox-enter pybox -- python3.14 scripts/camoufox-fetch.py "https://example.com" --headless
API only (curl_cffi):
distrobox-enter pybox -- python3.14 scripts/curl-api.py "https://api.example.com/endpoint"
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
ā OpenClaw Agent ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā distrobox-enter pybox -- python3.14 scripts/xxx.py ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā¤
ā pybox Container ā
ā āāāāāāāāāāāāāāā āāāāāāāāāāāāāāā ā
ā ā Camoufox ā ā curl_cffi ā ā
ā ā (Firefox) ā ā (TLS spoof)ā ā
ā āāāāāāāāāāāāāāā āāāāāāāāāāāāāāā ā
āāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāāā
Datacenter IPs (AWS, DigitalOcean) = INSTANT BLOCK on Airbnb/Yelp
You MUST use residential or mobile proxies:
# Example proxy config
proxy = "http://user:pass@residential-proxy.example.com:8080"
See references/proxy-setup.md for proxy configuration.
Sites like Airbnb/Yelp use behavioral analysis. To avoid detection:
ā ļø Old --headless flag is DETECTED. Options:
headless="new" (Chrome 109+)# Xvfb approach (Linux)
Xvfb :99 -screen 0 1920x1080x24 &
export DISPLAY=:99
python scripts/camoufox-fetch.py "https://example.com"
| Problem | Solution |
|---------|----------|
| "Access Denied" immediately | Use residential proxy |
| Cloudflare challenge loops | Try Camoufox instead of Nodriver |
| Browser crashes in pybox | Install missing deps: sudo dnf install gtk3 libXt |
| TLS fingerprint blocked | Use curl_cffi with impersonate="chrome120" |
| Turnstile checkbox appears | Add mouse movement, increase wait time |
| ModuleNotFoundError: camoufox | Use python3.14 not python or python3 |
| greenlet segfault (exit 139) | Python version mismatch - use python3.14 explicitly |
| libstdc++.so.6 errors | NixOS lib path issue - use python3.14 in pybox |
The pybox container may have multiple Python versions with separate site-packages:
# Check which Python has camoufox
distrobox-enter pybox -- python3.14 -c "import camoufox; print('OK')"
# Wrong (may use different Python)
distrobox-enter pybox -- python3.14 scripts/camoufox-session.py ...
# Correct (explicit version)
distrobox-enter pybox -- python3.14 scripts/camoufox-session.py ...
If you get segfaults or import errors, always use python3.14 explicitly.
distrobox-enter pybox -- python3.14 scripts/camoufox-fetch.py \
"https://www.airbnb.com/rooms/12345" \
--headless --wait 10 \
--screenshot airbnb.png
distrobox-enter pybox -- python3.14 scripts/camoufox-fetch.py \
"https://www.yelp.com/biz/some-restaurant" \
--headless --wait 8 \
--output yelp.html
distrobox-enter pybox -- python3.14 scripts/curl-api.py \
"https://api.yelp.com/v3/businesses/search?term=coffee&location=SF" \
--headers '{"Authorization": "Bearer xxx"}'
Persistent sessions allow reusing authenticated state across runs without re-logging in.
# 1. Login interactively (headed browser opens)
distrobox-enter pybox -- python3.14 scripts/camoufox-session.py \
--profile airbnb --login "https://www.airbnb.com/account-settings"
# Complete login in browser, then press Enter to save session
# 2. Reuse session in headless mode
distrobox-enter pybox -- python3.14 scripts/camoufox-session.py \
--profile airbnb --headless "https://www.airbnb.com/trips"
# 3. Check session status
distrobox-enter pybox -- python3.14 scripts/camoufox-session.py \
--profile airbnb --status "https://www.airbnb.com"
| Flag | Description |
|------|-------------|
| --profile NAME | Named profile for session storage (required) |
| --login | Interactive login mode - opens headed browser |
| --headless | Use saved session in headless mode |
| --status | Check if session appears valid |
| --export-cookies FILE | Export cookies to JSON for backup |
| --import-cookies FILE | Import cookies from JSON file |
~/.stealth-browser/profiles// 700, files 600_, - only (1-63 chars)The script detects session expiry using multiple signals:
/login, /signin, /authIf detected during --headless mode, you'll see:
š Login wall signals: url-path, password-form
Re-run with --login to refresh the session.
Since --login requires a visible browser, you need display forwarding:
X11 Forwarding (Preferred):
# Connect with X11 forwarding
ssh -X user@server
# Run login (opens browser on your local machine)
distrobox-enter pybox -- python3.14 scripts/camoufox-session.py \
--profile mysite --login "https://example.com"
VNC Alternative:
# On server: start VNC session
vncserver :1
# On client: connect to VNC
vncviewer server:1
# In VNC session: run login
distrobox-enter pybox -- python3.14 scripts/camoufox-session.py \
--profile mysite --login "https://example.com"
ā ļø Cookies are credentials. Treat profile directories like passwords:
chmod 700 (owner only)chmod 600| Limitation | Reason |
|------------|--------|
| localStorage/sessionStorage not exported | Use browser profile instead (handles automatically) |
| IndexedDB not portable | Stored in browser profile, not cookie export |
| No parallel profile access | No file locking in v1; use one process per profile |
Generated Mar 1, 2026
Scraping property listings from platforms like Airbnb and Yelp to analyze rental markets, pricing trends, and occupancy rates. Camoufox bypasses anti-bot protections that block standard tools, ensuring reliable data collection for investment analysis.
Tracking competitor prices and product availability on protected e-commerce sites that use Cloudflare or Datadome. Camoufox's C++ level stealth avoids detection, enabling continuous monitoring for dynamic pricing strategies.
Gathering hotel reviews, booking data, and availability from travel sites with strict bot defenses. Camoufox handles behavioral analysis and fingerprint spoofing to extract insights for market research and customer sentiment analysis.
Accessing protected financial portals or news sites that block automated access to scrape market data, reports, and regulatory filings. Camoufox's container isolation and stealth features ensure compliance with site terms while collecting critical information.
Collecting data from academic journals, research databases, or government sites that employ anti-bot measures. Camoufox bypasses challenges like Cloudflare Turnstile, allowing researchers to automate large-scale data gathering for studies.
Offering cleaned, structured datasets extracted from protected websites to clients in industries like real estate or finance. Revenue comes from subscription fees or one-time sales, leveraging Camoufox's stealth to ensure data reliability and avoid blocks.
Providing tailored automation services for businesses needing specific data from anti-bot protected sites. Revenue is generated through project-based contracts or ongoing maintenance fees, using Camoufox to handle complex evasion requirements.
Developing SaaS platforms that aggregate and analyze data from multiple protected sources for competitive insights. Revenue streams include tiered subscriptions, with Camoufox ensuring uptime by bypassing detection mechanisms like Datadome.
š¬ Integration Tip
Always use residential proxies and explicit python3.14 commands in distrobox to avoid common errors like module not found or segmentation faults.
Automates browser interactions for web testing, form filling, screenshots, and data extraction. Use when the user needs to navigate websites, interact with w...
Playwright-based web scraping OpenClaw Skill with anti-bot protection. Successfully tested on complex sites like Discuss.com.hk.
Browser automation and web scraping with Playwright. Forms, screenshots, data extraction. Works standalone or via MCP. Testing included.
Performs deep scraping of complex sites like YouTube using containerized Crawlee, extracting validated, ad-free transcripts and content as JSON output.
Automate web tasks like form filling, data scraping, testing, monitoring, and scheduled jobs with multi-browser support and retry mechanisms.
Web scraping and content comprehension agent ā multi-strategy extraction with cascade fallback, news detection, boilerplate removal, structured metadata, and...