> ## Documentation Index
> Fetch the complete documentation index at: https://docs.browseract.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Anti-detection & Blocking

> Use environment, execution, and human handoff layers to handle anti-bot blocking.

Browser-act gives agents a practical escalation path for sites that block basic fetchers or standard browser automation.

<div style={{ display: "flex", justifyContent: "center" }}>
  ```mermaid theme={null}
  flowchart TD
    Env["Environment"] --> Exec["Execution"]
    Exec --> Human["Human handoff"]
  ```
</div>

## Three-layer strategy

| Layer | Purpose | Key capabilities |
| - | - | - |
| Environment | Prevent challenges from appearing | stealth fingerprints, TLS rotation, proxy switching, privacy mode |
| Execution | Solve challenges after they appear | `solve-captcha`, `stealth-extract` |
| Human | Resolve cases automation cannot handle | `remote-assist` |

## Environment layer

The stealth browser is designed to look like a normal browser session instead of a script.

| Capability | What it does |
| - | - |
| Fingerprint masking | Keeps Canvas, WebGL, fonts, plugins, and related signals consistent |
| Navigator normalization | Normalizes `webdriver`, `chrome.runtime`, plugin arrays, and related browser properties |
| TLS signature rotation | Matches realistic browser TLS signatures |
| Headless concealment | Keeps headless mode from exposing common automation signals |
| Proxy system | Supports hosted dynamic proxies or your own static proxy |
| Privacy mode | Starts each session with a fresh fingerprint and empty profile |

### Dynamic proxy

```bash theme={null}
browser-act browser create \
  --type stealth \
  --name "jp-research" \
  --desc "Research browser using Japan dynamic proxy" \
  --dynamic-proxy JP
```

List available regions:

```bash theme={null}
browser-act browser regions
```

### Custom proxy

```bash theme={null}
browser-act browser create \
  --type stealth \
  --name "custom-proxy" \
  --desc "Stealth browser with a fixed custom proxy" \
  --custom-proxy socks5://user:pass@host:port
```

Custom proxies support HTTP and SOCKS5. You own the proxy quality, identity, and rotation strategy.

| Proxy option | Best for | Operational note |
| - | - | - |
| Dynamic proxy | Regional rotation and one-off collection | Browser-act rotates hosted IPs by region |
| Custom proxy | Stable identity and bring-your-own infrastructure | You manage proxy quality and reputation |

### Privacy mode

Use privacy mode when each session should start clean:

```bash theme={null}
browser-act browser create \
  --type stealth \
  --name "ephemeral" \
  --desc "One-time collection jobs" \
  --private true
```

> \[!TIP]
> Use privacy mode for one-off scraping, avoiding fingerprint buildup, and separating account identities. The trade-off is that login state is not preserved.

## Execution layer

### `stealth-extract`

Use `stealth-extract` when the task is read-only:

```bash theme={null}
browser-act stealth-extract https://example.com
```

It opens a stealth browser, renders the page, returns Markdown or HTML, and closes the browser.

```bash theme={null}
# Return HTML
browser-act stealth-extract https://example.com --content-type html

# Use a regional dynamic proxy
browser-act stealth-extract https://example.com --dynamic-proxy US

# Use a custom proxy
browser-act stealth-extract https://example.com --custom-proxy socks5://user:pass@host:port

# Save the result
browser-act stealth-extract https://example.com --output ./result.md
```

Use `stealth-extract` for reading. Use a browser session when you need interaction.

### `solve-captcha`

Use `solve-captcha` when a session reaches a supported CAPTCHA challenge:

```bash theme={null}
browser-act --session s1 solve-captcha
```

A successful result returns `solved=True`.

### Escalation flow

<div style={{ display: "flex", justifyContent: "center" }}>
  ```mermaid theme={null}
  flowchart TD
    Blocked["Challenge"] --> Captcha["CAPTCHA"]
    Captcha --> Debug["Headed mode"]
    Debug --> Handoff["Remote assist"]
  ```
</div>

## Human layer

When automation cannot move forward, `remote-assist` creates a live URL. A human can open the link on any device, complete the challenge, and let the agent continue in the same session.

See [Remote Assist](/agent-cli/remote-assist).

## Recommended escalation

1. Start with `chrome` or `chrome-direct` for ordinary logged-in work.
2. Move to `stealth` with a proxy when blocking appears.
3. Use `solve-captcha` if a supported CAPTCHA appears.
4. Use `remote-assist` when human judgment, 2FA, hardware tokens, or unsupported challenges are required.

## Compared with basic tools

| Capability | curl / WebFetch | Standard Puppeteer / Playwright | Browser-act |
| - | - | - | - |
| JavaScript rendering | No | Yes | Yes |
| Anti-bot handling | No | Limited | Yes |
| CAPTCHA solving | No | No | Yes, when supported |
| Human takeover | No | Manual setup required | Built in with `remote-assist` |
| Stealth headless | Not applicable | Often detectable | Supported |

## Learn more

<Columns cols={3}>
  <Card title="Better Headless Browser" icon="eye-off" href="/agent-cli/better-headless-browser" cta="Run quietly">
    Run silently while keeping stealth and handoff available.
  </Card>

  <Card title="Browser Modes" icon="panel-top" href="/agent-cli/browser-modes" cta="Choose identity">
    Choose the right browser identity for the job.
  </Card>

  <Card title="Skill Forge" icon="hammer" href="/agent-cli/skill-forge" cta="Reuse knowledge">
    Turn site-specific knowledge into a reusable skill.
  </Card>
</Columns>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.