Skip to main content

Production-grade, human-mimicking browser automation framework for autonomous agents. Survives modern anti-bot systems.

Project description

Agentic Stealth Browser

CI License: MIT Python 3.10+ Tests Coverage

A Python framework that makes browser automation look human. Built for autonomous agents that need to navigate websites protected by Cloudflare, LinkedIn, Amazon, and other anti-bot systems.

Why This Exists

Standard browser automation (page.goto(), page.click()) gets detected instantly. This framework solves that by combining:

  • TLS fingerprint spoofing — matches real browser TLS handshakes
  • Human behavior simulation — natural mouse, typing, scrolling with realistic imperfections
  • Automatic recovery — detects blocks (CAPTCHAs, rate limits) and recovers without crashing
  • Account lifecycle management — warming, health scoring, cooling off

Installation

pip install agentic-stealth-browser
playwright install --with-deps chromium

Quick Start

from core.agent_browser import AgentBrowser
import asyncio

async def main():
    browser = AgentBrowser(session_name="demo")
    await browser.launch(headless=True)

    # This handles stealth, human behavior, and recovery automatically
    await browser.safe_goto("https://example.com")

    # Add human-like actions
    await browser.human.scroll_naturally(400)
    await browser.human.think(1500, 2800)

    await browser.close()

asyncio.run(main())

Real-World Example

For protected sites, load real cookies and use a platform preset:

browser = AgentBrowser(session_name="linkedin")
await browser.launch(preset="linkedin_2026")
await browser.load_cookies_from_file("cookies.json")
await browser.warm_up_before_work(intensity="heavy")
await browser.safe_goto("https://www.linkedin.com/feed/", platform="linkedin")

The flow: cookies → warm-up → navigate → recover if blocked → act human.

How It Works

AgentBrowser
├── Stealth      → TLS profiles, canvas/WebGL spoofing, WebRTC isolation
├── Behavior     → Bézier mouse, natural typing, distraction simulation
├── Recovery     → Detects blocks → rotates proxy/session → retries
├── Accounts     → Health scoring, 14-day warming, session checkpointing
└── Proxy        → Residential proxy with rotation and health tracking

Key Features

Feature What It Does
TLS Fingerprinting Region-specific profiles (US, Japan, EU, Korea) with JA3/JA4 support
Human Behavior Mouse with wobble, typing with mistakes, variable scrolling, fatigue
Auto Recovery Detects CAPTCHAs, rate limits, blocks — recovers automatically
Account Warming 14-day gradual ramp-up so new accounts don't get flagged
Session Checkpoints Export/import browser state for cross-host migration
Platform Presets Pre-configured profiles for LinkedIn, Amazon, Cloudflare
MCP Server Integration with AI agents via Model Context Protocol

MCP Setup

Use this framework with AI agents (Claude Desktop, Cursor, Windsurf, etc.) via MCP.

1. Install the MCP Server

pip install agentic-stealth-browser

2. Configure Your MCP Client

Claude Desktop — Add to claude_desktop_config.json:

{
  "mcpServers": {
    "stealth-browser": {
      "command": "python",
      "args": ["-m", "production.mcp_server"],
      "env": {}
    }
  }
}

Cursor / Windsurf — Add to .cursorrules or MCP settings:

{
  "mcpServers": {
    "stealth-browser": {
      "command": "python",
      "args": ["-m", "production.mcp_server"]
    }
  }
}

3. Available MCP Tools

Tool Description
stealth_launch Launch browser with stealth + region preset
stealth_navigate Navigate with full recovery and human behavior
stealth_load_cookies Load cookies from real browser
stealth_set_region Switch TLS fingerprint region (US, Japan, EU, Korea)
stealth_scrape Navigate and extract page content
stealth_status Check browser health and session state
stealth_tabs_list List open tabs/pages and active tab metadata
stealth_tab_snapshot Capture screenshot + metadata for a specific tab/page
stealth_session_timeline Fetch replay/timeline events for debugging and recovery analysis
stealth_debug_report Return full debug report payload for current session
stealth_close Close browser and cleanup
stealth_capabilities Show MCP server/runtime version and available tools

4. MCP Server Environment Variables

Variable Description Default
STEALTH_MCP_ALLOWED_DIRS Extra allowed directories for MCP file-access policy (comma/semicolon separated) (empty)
STEALTH_MCP_SNAPSHOT_DIR Snapshot output root for stealth_tab_snapshot ~/.agentic-browser/mcp_snapshots
STEALTH_MCP_SNAPSHOT_MAX_PER_SESSION Max screenshots retained per session directory (older files are pruned) 20
STEALTH_MCP_TIMELINE_DEFAULT_LIMIT Default event limit when stealth_session_timeline is called without limit 30
STEALTH_MCP_TIMELINE_MAX_LIMIT Hard upper bound for stealth_session_timeline.limit 200
STEALTH_MCP_OBSERVABILITY_MAX_CHARS Max serialized response size for observability payloads before truncation 50000

Operator Guide: For detailed workflows on observing what the MCP-driven browser is actually doing (tabs, snapshots, timelines, debug reports, security notes, CDP fallbacks), see docs/MCP_BROWSER_OBSERVABILITY.md.

Configuration

Environment Variables

Variable Description Default
STEALTH_REGION TLS fingerprint region japan
STEALTH_HEADLESS Run browser headless true
STEALTH_PROXY Use residential proxy false

Platform Presets

await browser.launch(preset="linkedin_2026")   # LinkedIn
await browser.launch(preset="amazon_2026")     # Amazon
await browser.launch(preset="cloudflare")      # Cloudflare-protected sites

Project Structure

agentic-stealth-browser/
├── core/           # AgentBrowser main class
├── stealth/        # TLS fingerprinting, script injection, caching
├── behavior/       # Human-like mouse, typing, scrolling, personas
├── recovery/       # Block detection, anti-block orchestrator
├── proxy/          # Proxy management and rotation
├── sessions/       # Session and cookie management
├── audit/          # Structured logging and audit trails
├── ai/             # AI hooks and content analysis
├── production/     # CLI, Docker, rate limiting, metrics
├── linkedin/       # LinkedIn-specific actions
├── scraping/       # Safe page scraping utilities
├── docs/           # Architecture Decision Records and guides
└── tests/          # 493 tests across 23 files

Documentation

Security

See SECURITY.md for vulnerability reporting and best practices.

Responsible Use

This framework is designed for legitimate automation use cases such as:

  • Testing your own applications and infrastructure
  • Automating workflows on platforms that permit automation
  • Research and security analysis
  • Accessibility testing

Important: Many websites (including LinkedIn, Amazon, and others) prohibit automated access in their Terms of Service. Always:

  1. Review the target site's Terms of Service and robots.txt
  2. Obtain proper authorization before automating access
  3. Respect rate limits and avoid causing harm to services
  4. Use this tool responsibly and legally

This project is provided as-is under the MIT License. Users are responsible for complying with applicable laws and terms of service.

Contributing

See CONTRIBUTING.md for guidelines.

License

MIT License. See LICENSE for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

agentic_stealth_browser-1.0.0.tar.gz (224.0 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

agentic_stealth_browser-1.0.0-py3-none-any.whl (171.9 kB view details)

Uploaded Python 3

File details

Details for the file agentic_stealth_browser-1.0.0.tar.gz.

File metadata

  • Download URL: agentic_stealth_browser-1.0.0.tar.gz
  • Upload date:
  • Size: 224.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for agentic_stealth_browser-1.0.0.tar.gz
Algorithm Hash digest
SHA256 4e656b710e33170a1666a49e550f95d9c79dbe124770c08d33e207a7fa0fd1f4
MD5 a48d1d04ee4b7c4290b2ca77a413180f
BLAKE2b-256 2ac2feb0445e3a7b64f355fabb0676706fa011ea2d585909435eeb78c7fac1d1

See more details on using hashes here.

File details

Details for the file agentic_stealth_browser-1.0.0-py3-none-any.whl.

File metadata

File hashes

Hashes for agentic_stealth_browser-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 5072235f541823fa4d3dd61a82659ce64c03190d692c2aaf4033cd8b70a743aa
MD5 1ce7cc91bd3f75e593017db8b663a68e
BLAKE2b-256 c5093a68031e66c0c29b6f7ceb08f557272b9934c67ffacbc43a102c7e0a6c92

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page