> ## 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>
