kesslerio-stealth-browserAnti-bot browser automation using Camoufox and Nodriver. Bypasses Cloudflare Turnstile, Datadome, and aggressive anti-bot on sites like Airbnb and Yelp. Use when standard Playwright/Selenium gets blocked.
Install via ClawdBot CLI:
clawdbot install kesslerio/kesslerio-stealth-browserAnti-bot browser automation that bypasses Cloudflare Turnstile, Datadome, and aggressive fingerprinting.
playwright-stealth isn't working anymore| Target Difficulty | Tool | When to Use |
|------------------|------|-------------|
| Browser | Camoufox | All protected sites - Cloudflare, Datadome, Yelp, Airbnb |
| API Only | curl_cffi | No browser needed, just TLS spoofing |
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
Scrape Airbnb listings for rental price analysis and occupancy rates to support investment decisions. Use Camoufox to bypass Cloudflare challenges and residential proxies to avoid IP blocks, extracting detailed property data and reviews.
Monitor Yelp business pages and reviews to track competitor ratings, menu changes, and customer sentiment. Employ curl_cffi for fast API scraping of public data while using behavioral tips to mimic human browsing patterns and avoid detection.
Track product prices and availability on protected e-commerce sites that use Datadome anti-bot measures. Utilize Camoufox in headless mode with random delays and mouse movements to simulate real user behavior and gather pricing data for dynamic repricing strategies.
Scrape travel booking sites for flight and hotel deals, bypassing aggressive anti-bot systems like Cloudflare Turnstile. Use session management to maintain authenticated states and residential proxies to access geo-restricted content for market trend analysis.
Extract job listings from recruitment sites with anti-scraping protections to analyze hiring trends and salary data. Leverage Camoufox for full browser automation with TLS fingerprint spoofing and follow behavioral tips like warming up sessions to avoid blocks.
Sell aggregated datasets from protected sites like Airbnb and Yelp to real estate firms or market researchers. Use this skill to reliably scrape data while bypassing anti-bot measures, offering subscription-based access to updated information.
Provide businesses with insights into competitor activities by scraping and analyzing protected web content. Monetize through SaaS offerings that include dashboards and alerts, using stealth techniques to ensure continuous data flow without blocks.
Offer consulting or managed services that integrate residential proxies with stealth browser tools for clients needing automated access to high-security sites. Charge for setup, maintenance, and custom script development to handle specific scraping needs.
š¬ Integration Tip
Ensure explicit use of python3.14 in pybox to avoid version conflicts, and always configure residential proxies to prevent instant IP blocks on target sites.
A fast Rust-based headless browser automation CLI with Node.js fallback that enables AI agents to navigate, click, type, and snapshot pages via structured commands.
Automate web browser interactions using natural language via CLI commands. Use when the user asks to browse websites, navigate web pages, extract data from websites, take screenshots, fill forms, click buttons, or interact with web applications.
Advanced desktop automation with mouse, keyboard, and screen control
Manage n8n workflows and automations via API. Use when working with n8n workflows, executions, or automation tasks - listing workflows, activating/deactivating, checking execution status, manually triggering workflows, or debugging automation issues.
Design and implement automation workflows to save time and scale operations as a solopreneur. Use when identifying repetitive tasks to automate, building workflows across tools, setting up triggers and actions, or optimizing existing automations. Covers automation opportunity identification, workflow design, tool selection (Zapier, Make, n8n), testing, and maintenance. Trigger on "automate", "automation", "workflow automation", "save time", "reduce manual work", "automate my business", "no-code automation".
Browser automation via Playwright MCP server. Navigate websites, click elements, fill forms, extract data, take screenshots, and perform full browser automation workflows.