🎁 Get the FREE AI Skills Starter Guide β€” Subscribe β†’
BytesAgainBytesAgain
πŸ¦€ ClawHub

Camofox Browser Remote

by @kuo77122

Remote-mode anti-detection browser automation using Camoufox (Firefox fork with C++ fingerprint spoofing). Requires CAMOFOX_URL pointing to an externally-man...

TERMINAL
clawhub install camofox-browser-remote

πŸ“– About This Skill


name: camofox-browser-remote description: Remote-mode anti-detection browser automation using Camoufox (Firefox fork with C++ fingerprint spoofing). Requires CAMOFOX_URL pointing to an externally-managed server (Docker container, shared staging, CI). Use when standard browser tools get blocked by Cloudflare, Akamai, or bot detection and a Camofox server is already running. Triggers include "stealth browse", "anti-detection", "bypass bot", "camofox", "blocked by Cloudflare", scraping protected sites (X/Twitter, Amazon, Product Hunt), or when agent-browser/playwright fails with bot detection errors. allowed-tools: Bash(camofox-browser-remote:*) user_invocable: true argument_hint: ""

Camofox Browser β€” Remote Mode (Docker / Shared Server)

Stealth browser automation via Camoufox. Drives an externally-managed server over HTTP β€” no install, no local Node process.

Setup (required)

export CAMOFOX_URL=http://172.17.0.1:9377   # required β€” no default

The server runs externally (Docker container, shared staging, CI). This skill only drives it. See references/docker.md for Docker networking details.

> If camofox-remote is not found on PATH: set an alias using the script that ships with this skill. Replace with the directory containing this SKILL.md file: >

> alias camofox-remote="bash /scripts/camofox-remote.sh"
> 
> Example: if this SKILL.md is at ~/my-skills/camofox-browser-remote/SKILL.md, use ~/my-skills/camofox-browser-remote.

> Trust requirement: Every command β€” page snapshots, screenshots, typed text, navigation history β€” is sent over HTTP to CAMOFOX_URL. Only point this at a server you own and control. Do not use a shared or third-party endpoint if you will visit sites with credentials or sensitive data.

Quick Start

camofox-remote open https://example.com      # Create tab + navigate
camofox-remote snapshot                      # Get page elements with @refs
camofox-remote click @e1                     # Click element
camofox-remote type @e2 "hello"              # Type text
camofox-remote eval "document.title"         # Execute arbitrary JavaScript
camofox-remote screenshot                    # Save PNG
camofox-remote close                         # Close tab

Core Workflow

1. Navigate β€” camofox-remote open 2. Snapshot β€” returns an accessibility tree with @e1, @e2 refs (~90% smaller than raw HTML) 3. Interact β€” use refs to click, type, scroll 4. Re-snapshot β€” after any DOM change, refs are invalidated; get fresh ones 5. Repeat β€” the server stays running between commands

camofox-remote open https://example.com/search
camofox-remote snapshot

@e1 [input] Search box @e2 [button] Submit

camofox-remote type @e1 "camoufox anti-detection" camofox-remote click @e2 camofox-remote snapshot # MUST re-snapshot after navigation

Commands (at a glance)

| Category | Commands | |---|---| | Server | health, start (no-op β€” manage container externally), stop (no-op β€” manage container externally) | | Navigation | open , navigate , back, forward, refresh, scroll [down\|up\|left\|right] | | Page state | snapshot, screenshot [path], tabs, links, eval "" | | Interaction | click @eN, type @eN "text" | | Search | search google "query" (13 macros β€” see references/macros.md) | | Session | --session , close, close-all |

Full reference with curl equivalents: references/commands.md.

Ref Lifecycle (critical)

Refs (@e1, @e2) are invalidated whenever the DOM changes. Always re-snapshot after:

  • Clicking links/buttons that navigate
  • Form submissions
  • Dynamic content loads (infinite scroll, SPA route change)
  • Environment Variables

    | Variable | Default | Meaning | |---|---|---| | CAMOFOX_URL | REQUIRED | Remote base URL β€” e.g. http://172.17.0.1:9377. No default. | | CAMOFOX_SESSION | default | Default session name (isolated cookies/storage) | | HTTPS_PROXY | *(unset)* | Outbound proxy for the browser |

    When to Use camofox-browser-remote vs agent-browser

    | Scenario | Tool | |---|---| | Normal websites, no bot detection | agent-browser (faster) | | Cloudflare / Akamai protected | camofox-browser-remote | | Sites that block Chromium automation | camofox-browser-remote | | Need anti-fingerprinting | camofox-browser-remote | | Need iOS / mobile simulation | agent-browser | | Need video recording | agent-browser |

    Deep-Dive References

    | File | Load when | |---|---| | references/docker.md | Docker setup, networking, compose example, CAMOFOX_URL configuration | | references/commands.md | Need exact args, output format, or curl equivalent of any command | | references/api-reference.md | Calling an endpoint the wrapper doesn't expose | | references/macros.md | Using search macros (@google_search, etc.) | | references/troubleshooting.md | Debugging failures (connect refused, stale refs, empty snapshots) |

    Ready-to-Use Templates

    | File | Description | |---|---| | templates/stealth-scrape.sh | Full anti-detection scrape (screenshot + snapshot + links) | | templates/multi-session.sh | Parallel URLs in isolated sessions |

    Cleanup

    Always close when done:

    camofox-remote close-all
    camofox-remote stop    # no-op in remote mode; manage the container externally
    

    πŸ’‘ Examples

    camofox-remote open https://example.com      # Create tab + navigate
    camofox-remote snapshot                      # Get page elements with @refs
    camofox-remote click @e1                     # Click element
    camofox-remote type @e2 "hello"              # Type text
    camofox-remote eval "document.title"         # Execute arbitrary JavaScript
    camofox-remote screenshot                    # Save PNG
    camofox-remote close                         # Close tab