Skip to main content
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:
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

Enhanced Stealth with Proxies

Combine stealth mode with residential proxies for maximum anonymity:
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")

Custom User Agents

Override the default user agent for specific requirements:
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")

Stealth Best Practices

1. Use Realistic Behavior

Avoid patterns that look automated:
import time
import random

# 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:
# Session 1 with US proxy
with client.Session(
    proxies=[NotteProxy(geolocation=ProxyGeolocation(country="US"))]
) as session:
    # automation

# Session 2 with UK proxy
with client.Session(
    proxies=[NotteProxy(geolocation=ProxyGeolocation(country="GB"))]
) as session:
    # automation

3. Match Viewport to Real Devices

Use common screen resolutions:
# Desktop
with client.Session(viewport_width=1920, viewport_height=1080) as session:
    pass

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

4. Combine Multiple Techniques

Layer stealth features for best results:
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

Testing Stealth

Test your stealth configuration against detection services:
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")

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:
from notte_sdk import NotteClient

client = NotteClient()

with client.Session(
    browser_type="firefox",  # Required for captcha solving
    solve_captchas=True,
    proxies=True
) as session:
    page = session.page
    page.goto("https://example.com/login")
    # Both stealth and captcha solving active

Next Steps