rahmanef63/mso/camoufox-browse
Claude Code and agent skill by rahmanef63/mso
- community
- ext:[{"type":"plugin","description":"Custom plugin integration"}]
Checking that the SKILL.md file is still in the repository.
Anti-detection browsing with a real Firefox (Camoufox) when Cloudflare, Datadome, or fingerprinting blocks the built-in browser tool. Node + Python entry points, session persistence, residential proxies, human-like input. Use for authorized access to sites that flag standard automation.
Install
npx vskill@latest install rahmanef63/mso/camoufox-browseSemi-extensibleMentions customization, but needs skill-specific knowledge. Read the extensible skills standard
SKILL.md
Camoufox Browse
Drive stealth / anti-fingerprinting browser sessions through Camoufox when a site's aggressive bot-detection or fingerprinting blocks the built-in browser tool and the user has confirmed automated access is permitted.
Two entry points — pick one:
Node (camoufox-js) | Python (camoufox) | ||
|---|---|---|---|
| Install | npm install only | pip install + python3 -m camoufox fetch | |
| Binaries required | node, npm | python3 | |
| API | Playwright (sync wrapper) | Playwright (async or sync) | |
| Status | experimental (Apify port, v0.11.x) | upstream original | |
| Best for | Node-first workspaces, CI, OpenClaw scripts | legacy scripts, Python-first stacks |
Both expose the same Playwright API surface, so the rest of this skill applies to either.
Install — Node (recommended)
Headed mode also needs a display server:
- Linux desktop: nothing extra — your existing X11/Wayland session works.
- Headless server: install
xvfb(apt install xvfb) and wrap inxvfb-run, or useheadless: true.
⚠️ Pin `playwright@1.60.0`. Playwright 1.61+ sends aviewport.isMobilefield that camoufox's bundled Firefox rejects onnewPage(), breaking every page open.
Required patch — Playwright Firefox pageerror crash
playwright-core@1.60.0 + Firefox + camoufox has a bug: when a page raises an uncaught error without a location (common on heavy JS sites like TikTok, social feeds, ad-laden pages), the PageError dispatcher crashes the entire browser at coreBundle.js:49624 reading pageError.location.url. The browser process dies mid-session and you lose all pages and tabs.
Apply this patch to `node_modules/playwright-core/lib/coreBundle.js` after every `npm install`:
Verify the patch is in place before any non-trivial run:
Without this patch, multi-page sessions on TikTok / Instagram / ad-heavy sites will silently die after the first page error. The patch is local to node_modules — npm install overwrites it, hence "after every install."
Install — Python (fallback)
Same playwright==1.60.0 pin applies here. Headed mode requires DISPLAY or xvfb-run. The Python binding uses Playwright's async API directly and does not exhibit the same pageerror crash (as of camoufox 0.4.x); if the Node path is unstable, fall back to Python.
Headed setup — quick sanity check
Before any headed run, confirm X11 is actually running. A DISPLAY=:0 env var with no X server underneath is a common failure mode on freshly-booted VMs.
If xdpyinfo reports a display, headed camoufox runs without xvfb. Otherwise start a virtual display (xvfb-run …) or set headless: true.
Quick Start — Node
First run takes ~10-20s whilecamoufox-jsfetches its bundled Firefox (~700 MB, cached innode_modules/camoufox-js/.cacheafter). Subsequent runs are fast.
Headed (visible window) — Node
Quick Start — Python (fallback)
For synchronous scripts, from camoufox import Camoufox provides the same API without async/await.
Headed (visible window) — Python
Set headless=False to watch the browser drive itself. On a desktop it just works; on a headless server, wrap the script in xvfb-run.
When to Use Camoufox vs the Built-in Browser Tool
| Use this skill | Use the built-in openclaw browser | |
|---|---|---|
| Sites with aggressive bot detection | Normal page reads, documentation lookups | |
| Tasks where fingerprint consistency matters (logged-in sessions across runs) | Quick fetches, snapshots, form interactions | |
| Anything where being identified as a bot would break the task | Bulk page content extraction | |
| User explicitly requests a real / anti-fingerprinting browser for an authorized task | When speed matters more than stealth |
Rule of thumb: Only reach for Camoufox after the built-in tool has actually been blocked or detected, or when the user explicitly requests it for an authorized task. Default to the built-in tool otherwise.
Common Operations
Playwright API is identical in both languages; only syntax differs.
Read content
Forms
Workflow patterns
Common multi-step operations. Python shown below; Node mirrors it with camelCase method names (waitForLoadState, querySelector, etc.).
Fill a whole form, then submit:
Navigate, wait, and snapshot in one go:
Scroll to reveal below-the-fold / lazy-loaded content:
Click through many elements sequentially:
Persist a session
Note on the Node API shape:camoufox-jsreturns a FirefoxBrowserobject.Browser.newPage()is available directly; for storage state, usebrowser.contexts()[0](one default context is created at launch). The Python binding'sbrowser.new_context()has no direct Node equivalent — use the default context orbrowser.newContext().
Residential proxy
Useful when a target rate-limits by IP. Only for sites you're authorized to access at volume.
Multi-page sessions — required error isolation
For any run that opens more than one page (scanning event listings, scraping search results, batch-checking URLs), you must isolate errors. Without this, one bad page will tear down the whole browser session.
This is the start of the file. Read the full SKILL.md on GitHub.
Security
- Security scanPassed, 90 of 100Pattern checks on the skill's files.
- Model reviewPassed
Quality evaluation
- Task evaluationNot runNo evaluation yet. Run one in Skill Studio.
Source
- SKILL.md in the repositoryCheckingskills/camoufox-browse/SKILL.md
Popularity
- Repository stars
- 95
- Repository forks
- 15
- 7-day trend score
- 0
Stars and forks are for the whole GitHub repository, not this skill alone. Not refreshed yet.
Extension points
pluginCustom plugin integration
Works with
Any agent vskill installs to: 56 targets in all. These 39 have a page on this site.
- Claude Code
- Cursor
- GitHub Copilot
- Windsurf
- Codex
- Gemini CLI
- Cline
- Amp
- Roo Code
- Goose
- Continue
- Kilo Code
- Junie
- Trae
- OpenHands
- Qwen Code
- AI Agent
- Tabnine Chat
- Sourcegraph Cody
- Amazon Q
- Firebase Genkit
- Sweep
- Devin
- Phind
- Mentat
- Claude Desktop
- Aider
- GPT Pilot
- Plandex
- bolt.new
- v0
- Replit Agent
- Anse
- TypingMind
- BetterChatGPT
- LibreChat
- Warp AI
- Pieces
- Fig AI
Embed badge
[](https://verified-skill.com/skills/rahmanef63/mso/camoufox-browse)