Stealth Browser Automation with Ghost Chrome

VerifiedSafe

A stealth browser automation service that runs a real Chrome instance in Docker to bypass anti-bot protections like Cloudflare or Google. It simulates human interactions with Bezier curves and variable delays, making it suitable for automating sites that block headless browsers.

Sby Skills Guide Bot
TestingIntermediate
506/2/2026
Claude Code
#browser-automation#stealth#docker#anti-bot#headful

Recommended for

Our review

Ghost Chrome is a high-stealth, headful browser automation service running in Docker, designed to bypass anti-bot protections like Cloudflare by simulating human interaction with a real Chrome instance.

Strengths

  • Effectively bypasses advanced anti-bot protections
  • Simulates realistic human interactions (Bezier curves, variable delays)
  • Uses a real Chrome instance, unlike headless approaches
  • Easy to use via simple terminal commands

Limitations

  • Requires Docker and prior system setup
  • Can be slower than standard headless browsers
  • Service updates may require manual intervention
When to use it

Use Ghost Chrome when you need to automate tasks on websites that block headless browsers or employ strong anti-bot detection (Cloudflare, Google, etc.).

When not to use it

Do not use it for simple scraping or standard automation tasks where a regular headless browser (Playwright, Puppeteer) is sufficient.

Security analysis

Safe
Quality score90/100

The skill exposes a controlled set of bash commands (all prefixed 'ghost-browser') that run a Docker-based browser automation tool. No destructive commands (e.g., rm -rf, curl | sh), exfiltration, or disabling of safety features are present. While the tool could be used for unauthorized scraping or bypassing protections, the skill itself does not instruct or directly enable those actions beyond declaring the tool's capability.

No concerns found

Examples

Login form submission using element references
Log into example.com/login using Ghost Chrome. Start the browser, open the page, find the email input and submit button using interactive snapshot, fill the email field with 'user@test.com', click submit, and wait for the dashboard to load.
Bypass Cloudflare to fetch page content
I need to scrape content from a website that blocks headless browsers with Cloudflare. Use Ghost Chrome to start a stealth browser session, navigate to the target URL, take a snapshot of the page text, and save a screenshot to verify.
Perform a Google search stealthily
Do a Google search for 'best AI tools 2025' using Ghost Chrome to avoid bot detection. Open google.com, type the query into the search box, press Enter, wait for results, and then take a screenshot of the search results page.

name: Ghost Chrome description: A high-stealth, headful browser automation service running in Docker. Use this SPECIFICALLY when standard headless browsers (agent-browser/Playwright) are blocked by anti-bot protections (Cloudflare, Google, etc.). It runs a real Chrome instance and simulates human input. read_when:

  • Bypassing strong bot detection
  • Automating sites that block headless browsers
  • Performing Google searches or interactions requiring high trust metadata: {"clawdbot":{"emoji":"👻","requires":{"bins":["docker","curl","jq"]}}} allowed-tools: Bash(ghost-browser:*)

Stealth Browser Automation with Ghost Chrome

Core Workflow

  1. Always Start First: Run ghost-browser start at the beginning of your task. It is fast and safe to run even if already running.
  2. Navigate & Act: Use standard commands.
  3. Finish: You can explicitly run ghost-browser stop or let it auto-shutdown after 5 minutes of inactivity.

Commands

Lifecycle

ghost-browser start           # Boot the Docker container (Safe to run repeatedly)
ghost-browser stop            # Stop and remove the container
ghost-browser restart         # Restart the service (get a fresh browser session)
ghost-browser update          # Update from git and rebuild the environment
ghost-browser status          # Check service health

Updating to Latest

If you need to update to the latest version of the toolkit:

ghost-browser update          # Automatically pull code, install dependencies, and rebuild the browser container

Navigation & Inspection

ghost-browser open <url>      # Navigate to URL (waits for network idle) (alias: navigate)
ghost-browser snapshot        # Get page text content
ghost-browser snapshot -i     # Get interactive elements with refs (@e1, @e2)
ghost-browser screenshot      # Save screenshot to screenshot.png
ghost-browser highlight <sel> # Draw outline around element (visual check)
ghost-browser tabs            # List open tabs/windows
ghost-browser switch <index>  # Switch focus to a specific tab
ghost-browser frame <sel>     # Focus an iframe ('main' to return to top)
ghost-browser cookies         # View or set (ghost-browser cookies set name val)

Interaction (Stealth)

All interactions use human simulation algorithms (Bezier curves, variable delays). You can use CSS selectors OR references from snapshot -i (e.g., @e1).

ghost-browser click <selector>          # Click an element
ghost-browser dblclick <selector>       # Double-click an element
ghost-browser drag <src> <dest>         # Drag one element to another
ghost-browser hover <selector>          # Move mouse to element
ghost-browser type <selector> <text>    # Focus and type text with jitter
ghost-browser fill <selector> <text>    # Clear field and type text
ghost-browser scroll <y_offset>         # Humanized scroll (positive = down)
ghost-browser press <key>               # Press key (Enter, Escape, Tab, etc.)
ghost-browser upload <sel> <path>       # Upload a file
ghost-browser wait <selector>           # Wait for element to appear

Example: Form Submission with Refs

# 1. Open and find elements
ghost-browser start
ghost-browser open "https://example.com/login"
ghost-browser snapshot -i
# Output: [{"id": "@e1", "tagName": "input", "text": "Email"}, {"id": "@e2", "tagName": "button", "text": "Submit"}]

# 2. Interact using refs
ghost-browser fill @e1 "user@test.com"
ghost-browser click @e2
ghost-browser wait ".dashboard"

Troubleshooting

  • "Element not found": The selector might be wrong, or the page hasn't loaded. Use ghost-browser screenshot or ghost-browser view to check.
  • Service failed to start: Check docker logs ghost-browser.
Related skills