Production-grade, human-mimicking browser automation framework for autonomous agents. Survives modern anti-bot systems.
Project description
Agentic Stealth Browser
Playwright gets detected. This doesn't.
Production-grade stealth browser automation that survives Cloudflare, LinkedIn, Amazon, and other anti-bot systems by looking convincingly human at every layer.
pip install agentic-stealth-browser
playwright install --with-deps chromium
from core.agent_browser import AgentBrowser
async with AgentBrowser(session_name="demo") as browser:
await browser.launch(headless=True)
await browser.safe_goto("https://bot.sannysoft.com")
# ✓ passes WebGL, Canvas, AudioContext, WebRTC, and TLS fingerprinting
Why vanilla Playwright fails
Sites don't just check your User-Agent anymore. They check everything:
| Attack Surface | Vanilla Playwright | This library |
|---|---|---|
| TLS handshake (JA3/JA4 fingerprint) | Standard Python TLS — instantly identifiable | Region-spoofed profiles (US, Japan, EU, Korea) |
Navigator APIs (navigator.webdriver, plugins, languages) |
Leaks automation flags everywhere | Every property patched before first paint |
| WebGL / Canvas fingerprint | Headless GPU renders differently | Consistent buffers across sessions |
| Human behavior | Robotic clicks, instant typing | Bézier mouse curves, variable speed, fatigue simulation |
| Auto-recovery | None — blocks = failure | CAPTCHA detection → proxy rotation → retry chain |
| Account warming | Nothing | 14-day graduated ramp-up per account |
Result: passes bot.sannysoft.com, pixelscan.net, and CreepJS with zero flags in headless mode.
Quick Start
CLI (easiest)
# Health check + stealth fingerprint test
stealth-browser health --preset linkedin_2026 --region us
# Start the operator dashboard
agentic-stealth-browser dashboard
Python SDK
from core.agent_browser import AgentBrowser
async with AgentBrowser(
session_name="my-session",
region="japan",
headless=True
) as browser:
await browser.launch()
await browser.safe_goto("https://example.com")
# TLS-spoofed, no webdriver leak, human-like interaction ready
MCP (for AI agent clients)
{
"mcpServers": {
"stealth-browser": {
"command": "python",
"args": ["-m", "production.mcp_server"]
}
}
}
Then: stealth_launch → stealth_navigate → stealth_scrape → stealth_close.
Key Features
| Feature | What It Does |
|---|---|
| TLS Fingerprinting | JA3/JA4 region profiles |
| Human Behavior | Mouse wobble, typing mistakes, fatigue, distraction |
| Auto Recovery | Block detection → proxy/session rotation → retry |
| Account Warming | 14-day gradual ramp-up for new accounts |
| Workflow Orchestrator | Queue, schedule, domain concurrency, retries, persistence |
| Python SDK | StealthClient — async API without MCP |
| Security Governance | Input validation, session isolation, policy engine, approval gates |
| Adaptive Stealth | Per-domain behavior profiles with FeedbackStore telemetry |
| Plugin System | Lifecycle hooks via BasePlugin |
| Operator Dashboard | Live DevTools, CAPTCHA intervention, workflow recording |
| Feature Flags | Runtime capability discovery per browser backend |
| Performance Profiling | Timing decorators + perf_benchmark.py |
Full Documentation
- Workflow System — record real browser actions via CDP, replay as YAML (13 step types)
- Operator Dashboard — Grok/X-inspired dark UI, live browser view, CAPTCHA solving, workflow recording
- Orchestrator — queue, schedule, chain workflows with domain-aware concurrency
- Security — input validation, session isolation, policy engine, approval gates
- SDK —
StealthClientasync API without MCP - Plugins — lifecycle hooks for custom behavior
- VPS Deployment — systemd, Caddy reverse proxy, Cloudflare Tunnel patterns
- Migration v1 → v2 — deprecation shims, migration guide, script
See sections below for each topic. For release history: CHANGELOG.md.
Project Structure
├── core/ AgentBrowser, connection pool, session checkpoints
├── stealth/ TLS, scripts, Firefox adapter, caching
├── behavior/ Human simulation, personas, adaptive tuning
├── recovery/ Anti-block orchestrator
├── workflows/ Recorder, player, schema, library
├── production/ MCP server, SDK, orchestrator, security, profiler
├── plugins/ Plugin system with template
├── scripts/ Migration, evaluation, benchmarking
└── tests/ 880+ contract + integration tests
License
MIT. See LICENSE and CHANGELOG.md.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file agentic_stealth_browser-2.3.0.tar.gz.
File metadata
- Download URL: agentic_stealth_browser-2.3.0.tar.gz
- Upload date:
- Size: 281.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ed311129ebaa9b94fba7923c03fc7ca936c54357759f36583ecfc1e7a3f5ec5b
|
|
| MD5 |
52ed368ce909504d550800a687f6c718
|
|
| BLAKE2b-256 |
20d782849f87e8dc820bbfd9d7cc643871b621e94b63f7f00a741a655203ff5b
|
Provenance
The following attestation bundles were made for agentic_stealth_browser-2.3.0.tar.gz:
Publisher:
publish.yml on shanewas/agentic-stealth-browser
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
agentic_stealth_browser-2.3.0.tar.gz -
Subject digest:
ed311129ebaa9b94fba7923c03fc7ca936c54357759f36583ecfc1e7a3f5ec5b - Sigstore transparency entry: 1648531035
- Sigstore integration time:
-
Permalink:
shanewas/agentic-stealth-browser@6fc5ee4969ae37e526953ce7631548321fbc87cf -
Branch / Tag:
refs/tags/v2.3.0 - Owner: https://github.com/shanewas
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@6fc5ee4969ae37e526953ce7631548321fbc87cf -
Trigger Event:
release
-
Statement type:
File details
Details for the file agentic_stealth_browser-2.3.0-py3-none-any.whl.
File metadata
- Download URL: agentic_stealth_browser-2.3.0-py3-none-any.whl
- Upload date:
- Size: 217.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d9532f4849a3ad3f9649c97fa65876af5c0a641442446e0b94d5879678681f7c
|
|
| MD5 |
49dee9631d6d3628397101c9ac397ba8
|
|
| BLAKE2b-256 |
93f63c9b9d268fbafbd491eb87d1f83f1d54f1330c05bb4894a05c892618aad7
|
Provenance
The following attestation bundles were made for agentic_stealth_browser-2.3.0-py3-none-any.whl:
Publisher:
publish.yml on shanewas/agentic-stealth-browser
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
agentic_stealth_browser-2.3.0-py3-none-any.whl -
Subject digest:
d9532f4849a3ad3f9649c97fa65876af5c0a641442446e0b94d5879678681f7c - Sigstore transparency entry: 1648531131
- Sigstore integration time:
-
Permalink:
shanewas/agentic-stealth-browser@6fc5ee4969ae37e526953ce7631548321fbc87cf -
Branch / Tag:
refs/tags/v2.3.0 - Owner: https://github.com/shanewas
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@6fc5ee4969ae37e526953ce7631548321fbc87cf -
Trigger Event:
release
-
Statement type: