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

# Stealth Mode

> Configure anti-detection features for your browser sessions

<Tip>
  Read [the Notte skill](https://notte.cc/skill.md) and follow its setup instructions when setting up Notte or building browser automation. This is the shared source for CLI setup, authentication, and the browser-to-code workflow.
</Tip>

Notte sessions include built-in stealth features to help your automations avoid detection by anti-bot systems.

## Built-in Stealth Features

All Notte sessions automatically include:

* **Clean browser fingerprints** - Realistic browser signatures
* **Navigator properties** - Proper webdriver, plugins, and language settings
* **Canvas fingerprinting protection** - Randomized canvas signatures
* **WebGL fingerprinting protection** - Unique WebGL parameters
* **Timezone and locale matching** - Consistent geolocation data
* **Chrome DevTools Protocol hiding** - CDP detection prevention

## Basic Usage

Stealth features are enabled by default. Simply create a session:

<CodeGroup>
  ```python Python theme={null}
  from notte_sdk import NotteClient

  client = NotteClient()

  with client.Session() as session:
      page = session.page
      page.goto("https://bot-detection-test.com")
      # Stealth features automatically active
  ```
</CodeGroup>

## Enhanced Stealth with Proxies

Combine stealth mode with residential proxies for maximum anonymity:

<CodeGroup>
  ```python Python theme={null}
  from notte_sdk import NotteClient

  client = NotteClient()

  with client.Session(
      proxies=True,  # Enable residential proxies
      browser_type="chrome"  # Use Chrome for best compatibility
  ) as session:
      page = session.page
      page.goto("https://example.com")
  ```
</CodeGroup>

## Custom User Agents

Override the default user agent for specific requirements:

<CodeGroup>
  ```python Python theme={null}
  from notte_sdk import NotteClient

  client = NotteClient()

  with client.Session(
      user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36"
  ) as session:
      page = session.page
      page.goto("https://example.com")
  ```
</CodeGroup>

## Stealth Best Practices

### 1. Use Realistic Behavior

Avoid patterns that look automated:

```python realistic_behavior.py theme={null}
import random
import time

from notte_sdk import NotteClient

client = NotteClient()

with client.Session() as session:
    page = session.page
    page.goto("https://example.com")

    # Bad: Instant actions
    page.click("button")
    page.fill("input", "text")

    # Good: Human-like delays
    page.click("button")
    time.sleep(random.uniform(0.5, 1.5))
    page.fill("input", "text")
```

### 2. Rotate Proxies

Use different proxies for different sessions:

```python rotate_proxies.py theme={null}
from notte_sdk import NotteClient

client = NotteClient()

# Session 1 with US proxy
with client.Session(proxies="us") as session:
    # automation
    pass

# Session 2 with UK proxy
with client.Session(proxies="gb") as session:
    # automation
    pass
```

### 3. Match Viewport to Real Devices

Use common screen resolutions:

<CodeGroup>
  ```python match_viewport.py theme={null}
  from notte_sdk import NotteClient

  client = NotteClient()

  # Desktop
  with client.Session(viewport_width=1920, viewport_height=1080) as desktop:
      pass

  # Laptop
  with client.Session(viewport_width=1366, viewport_height=768) as session:
      pass
  ```

  ```typescript match_viewport.ts theme={null}
  import { NotteClient } from "notte-sdk";

  const client = new NotteClient();

  // Desktop
  const desktop = client.Session({ viewport_width: 1920, viewport_height: 1080 });
  await desktop.use(async () => {});

  // Laptop
  const session = client.Session({ viewport_width: 1366, viewport_height: 768 });
  await session.use(async () => {});
  ```
</CodeGroup>

### 4. Combine Multiple Techniques

Layer stealth features for best results:

<CodeGroup>
  ```python combine_techniques.py theme={null}
  from notte_sdk import NotteClient

  client = NotteClient()

  with client.Session(
      browser_type="chrome",
      proxies=True,
      viewport_width=1920,
      viewport_height=1080,
      user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
  ) as session:
      # Maximum stealth configuration
      pass
  ```

  ```typescript combine_techniques.ts theme={null}
  import { NotteClient } from 'notte-sdk';

  const client = new NotteClient();

  const session = client.Session({
    browser_type: "chrome",
    proxies: true,
    viewport_width: 1920,
    viewport_height: 1080,
    user_agent: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36",
  });
  await session.use(async () => {
    // Maximum stealth configuration
  });
  ```
</CodeGroup>

## Testing Stealth

Test your stealth configuration against detection services:

<CodeGroup>
  ```python Python theme={null}
  from notte_sdk import NotteClient

  client = NotteClient()

  test_sites = [
      "https://bot.sannysoft.com/",
      "https://arh.antoinevastel.com/bots/areyouheadless",
      "https://fingerprint.com/demo/"
  ]

  with client.Session(proxies=True) as session:
      page = session.page

      for site in test_sites:
          page.goto(site)
          page.screenshot(path=f"stealth_test_{site.split('//')[1].split('/')[0]}.png")
  ```
</CodeGroup>

## What Stealth Can't Do

Stealth features help avoid detection, but they cannot:

* ❌ Bypass login rate limits (use delays between attempts)
* ❌ Avoid behavioral analysis (act like a human)
* ❌ Bypass IP-based blocking (use proxy rotation)
* ❌ Solve all captchas automatically (use captcha solving)

## Stealth + Captcha Solving

Combine stealth with automatic captcha solving for comprehensive protection:

<CodeGroup>
  ```python Python theme={null}
  from notte_sdk import NotteClient

  client = NotteClient()

  with client.Session(
      solve_captchas=True,
      proxies=True
  ) as session:
      page = session.page
      page.goto("https://example.com/login")
      # Both stealth and captcha solving active
  ```
</CodeGroup>

## Next Steps

<CardGroup cols={2}>
  <Card title="Proxies" icon="network-wired" href="/features/sessions/proxies">
    Configure residential proxies
  </Card>

  <Card title="CAPTCHA Solving" icon="shield-check" href="/features/sessions/captcha-solving">
    Automatically solve captchas
  </Card>

  <Card title="Browser Types" icon="browser" href="/features/sessions/browser-types">
    Choose the right browser engine
  </Card>

  <Card title="Multi-Region Support" icon="globe" href="/features/sessions/multi-region">
    Run sessions in different regions
  </Card>
</CardGroup>


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