# Stealth Browse

> Use the stealth browser for human-like web automation against bot-protected sites. Handles login flows, scraping, and form filling with anti-detection measures.

- Skill: `rcarmo/stealth-browse` (Agent Skill)
- Install (CLI): `npx skillmds@latest add rcarmo/stealth-browse`
- Raw SKILL.md: https://api.skillmd.com/api/skills/rcarmo/stealth-browse/raw
- Safety review: pending
- Works with: Claude Code, Claude.ai, OpenAI Codex
- Category: Coding & Dev Tools
- Author: rcarmo (https://skillmd.com/u/rcarmo)
- Updated: 2026-09-17
- Page: https://skillmd.com/skills/rcarmo/stealth-browse

---


# Stealth Browse

Use the `stealth_browser` tool for web automation that requires anti-bot bypass or human-like interaction fidelity.

## When to use this over cdp_browser

| Scenario | Use |
|---|---|
| Control a browser the user already opened | `cdp_browser` |
| Automate a site with Cloudflare/Turnstile protection | `stealth_browser` |
| Screenshot an internal tool page | `cdp_browser` |
| Log into a web service, scrape content | `stealth_browser` |
| Export a page to PDF | `cdp_browser` |
| Fill forms with human-like delays and mouse movement | `stealth_browser` |

## Session lifecycle

The first session-using action launches Chromium. Subsequent calls reuse the session. The add-on checks for five minutes of inactivity about five minutes after session creation; activity does not reset or reschedule that check. `close` and extension unload always stop Chromium.

## Actions

### Navigation
```
stealth_browser action=goto url="https://example.com"
```

### Interaction (human-like)
```
stealth_browser action=click selector="#login-button"
stealth_browser action=type selector="#email" text="user@example.com"
stealth_browser action=scroll to="bottom"
```

### Content extraction
```
stealth_browser action=text selector="article"
stealth_browser action=evaluate expr="document.querySelectorAll('.item').length"
stealth_browser action=screenshot fullPage=true outPath="/workspace/tmp/page.png"
```

### Network (through Chrome TLS stack)
```
stealth_browser action=fetch url="https://api.example.com/data" method="GET"
```

### Session management
```
stealth_browser action=cookies save="/workspace/tmp/cookies.json"
stealth_browser action=cookies load="/workspace/tmp/cookies.json"
stealth_browser action=status
stealth_browser action=close
```

## Configuration

Set via environment variables:

| Variable | Description | Default |
|---|---|---|
| `PICLAW_STEALTH_SEED` | Fingerprint seed (identity stability) | hostname |
| `PICLAW_STEALTH_PROFILE` | Profile ID override | auto-detected per OS |
| `PICLAW_STEALTH_PROXY` | Proxy URL (`http://user:pass@host:port`) | none |
| `PICLAW_STEALTH_HEADLESS` | Headless mode (`true`/`false`) | `true` |

## Prerequisites

Chromium must be installed. On first use:
```bash
bunx @mochi.js/cli browsers install
```

## Key constraints (from mochi API)

- No `page.click()` — always `humanClick` (realistic trajectory)
- No per-surface fingerprint randomization — one (profile, seed) pair determines everything
- `evaluate` takes zero-arg functions only — return JSON-serializable values
- One session per Chromium process — no shared contexts

