Browser Use Proxy Setup for AI Agents
Browser Use is the fastest-growing open-source AI agent library of 2025/2026 with 78,000+ GitHub stars and an industry-leading 89.1% success rate on the WebVoyager benchmark. Backed by a $17M seed round led by Felicis in late 2024, it lets LLMs control real browsers via Playwright to accomplish natural-language tasks.
This guide covers the complete setup for running Browser Use with Coronium mobile proxies: installation, BrowserProfile and BrowserSession configuration, LLM integration (Claude 3.5 Sonnet is the top choice as of 2026), production deployment patterns, and real solutions to the eight most common issues.
What this guide covers:
Navigate This Guide
From install command to production agent fleet management, step by step.
Reading time: ~22 minutes. Includes working Python code for every step, LLM cost breakdown, and production deployment checklist.
What is Browser Use?
Browser Use is a Python library that lets large language models (LLMs) control real web browsers via Playwright to complete tasks described in natural language. Launched in late 2024 by Magnus Muller and Gregor Zunic, it has rapidly become the de facto open-source AI agent framework.
Industry Traction
- 78,000+ GitHub stars as of Q1 2026 -- fastest-growing AI agent library of 2025
- $17M seed round led by Felicis in late 2024, with participation from A Capital and Paul Graham
- 89.1% WebVoyager success rate -- industry-leading for open-source agent frameworks
- Used by Fortune 500 companies for enterprise agent automation
Technical Foundation
- Built on Playwright -- supports all Playwright proxy config (HTTP, HTTPS, SOCKS5)
- Works with any LangChain-compatible LLM: Claude, GPT, Gemini, Ollama
- Python 3.11+, pip install browser-use single command setup
- Clean BrowserSession + BrowserProfile API for declarative browser configuration
How Browser Use Works: Architecture Overview
You describe the task in plain English: "find the cheapest flight from NYC to SFO next Friday" -- no selectors, no XPath.
Browser Use captures the current page DOM, filters to interactive elements, and sends the structured representation to the LLM.
The LLM (Claude/GPT/Gemini) reads the DOM, reasons about the task, and outputs the next action: click, type, scroll, extract.
Browser Use translates the LLM action into Playwright calls. The loop repeats until the task completes or max_steps is hit.
Why AI Agents Need Mobile Proxies
Browser Use handles TLS and HTTP/2 fingerprints authentically via Playwright -- but IP reputation remains the detection vector anti-bot systems weight most heavily. Here is why mobile CGNAT IPs are the right choice for production AI agents.
LLM-Driven Traffic Looks Unusual
10x action burst tolerance
Browser Use sends a burst of precisely-timed actions based on LLM reasoning loops. Without a trusted IP, anti-bot systems flag the pattern as automated within the first 5-10 actions. Mobile CGNAT ranges carry enough legitimate user traffic that timing anomalies get absorbed into the noise floor.
Agent Sessions Need Persistence
30+ minute sessions
AI agents frequently run 10-30 minute sessions filling forms, logging in, navigating multi-page flows. Residential rotating proxies kill session state. A single sticky mobile IP retains cookies, session tokens, and login state for the entire agent task, preventing mid-task authentication failures.
Fortune 500 Target Sites
90%+ Cloudflare pass rate
Browser Use is used by Fortune 500 companies for enterprise agent automation against SaaS dashboards (Salesforce, HubSpot), financial portals, and partner portals. These targets deploy DataDome, PerimeterX, and Akamai Bot Manager which instantly flag datacenter and most residential IPs.
Real Browser, Real IP
End-to-end fingerprint match
Browser Use builds on Playwright, so TLS and HTTP/2 fingerprints are already authentic Chromium. The remaining detection vector is IP reputation. Mobile carrier IPs (T-Mobile, Vodafone, AT&T) match the consumer user-agent pattern the LLM generates, closing the full fingerprint consistency loop.
Geographic Targeting for Agents
30+ countries available
Many agent tasks require country-specific results: local pricing, region-locked content, language-specific search. Mobile proxies in 30+ countries let a single agent codebase handle geographic personalization by swapping proxy endpoints. Essential for comparison shopping, market research, and localized testing agents.
Cost Efficient at Agent Scale
Unlimited bandwidth
AI agents use 10-50x more bandwidth than traditional scrapers because they render full pages, download images, and execute complex JavaScript. Coronium unlimited-bandwidth dedicated devices avoid the bandwidth overage fees that destroy agent ROI on per-GB residential proxy plans.
Datacenter proxies fail Browser Use tasks
In Q1 2026 benchmarks, datacenter proxies achieved only 20-35% success rates on Browser Use tasks against Fortune 500 SaaS dashboards. The mismatch between a consumer-browser user-agent and a datacenter ASN is flagged by DataDome and PerimeterX within the first 3-5 actions. Residential rotating proxies do better (50-65%) but the IP rotation breaks agent session state mid-task. Mobile proxies deliver 90-95% success with full session persistence.
Setup Step-by-Step
Complete setup from zero to first working AI agent. Every step includes production-ready Python code you can copy-paste. Requires Python 3.11 or later.
Install Browser Use
Browser Use is distributed via pip. It pulls in Playwright as a dependency and requires Python 3.11 or later. After installation, run the playwright install command to download the Chromium binary used for rendering.
pip install browser-use playwright install chromium
Provision a Coronium Mobile Proxy
Log into the Coronium dashboard and provision a dedicated mobile device in your target country. You will receive connection details: host, port, username, password. HTTP and SOCKS5 are both supported at the same price. For Browser Use, HTTP works in most cases; SOCKS5 provides broader protocol coverage.
# Your Coronium credentials (example format) # host: mobile.coronium.io # port: 10001 # user: your-username # pass: your-password
Configure BrowserProfile with Proxy
Browser Use uses BrowserProfile to declare browser-level configuration that persists across sessions: proxy settings, user agent, viewport, device emulation, stealth flags. The proxy dict follows Playwright conventions: server, username, password.
from browser_use import BrowserProfile
profile = BrowserProfile(
proxy={
"server": "http://mobile.coronium.io:10001",
"username": "your-username",
"password": "your-password",
},
user_agent="Mozilla/5.0 (Linux; Android 14; Pixel 8) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/132.0.0.0 Mobile Safari/537.36",
viewport={"width": 412, "height": 915},
device_scale_factor=2.625,
is_mobile=True,
has_touch=True,
)Create BrowserSession
BrowserSession wraps a single browser instance for an agent run. It consumes the BrowserProfile and launches the browser. For concurrent agents, create multiple BrowserSession instances each with its own BrowserProfile (and ideally its own proxy) to keep fingerprints and cookies isolated.
from browser_use import BrowserSession
session = BrowserSession(
browser_profile=profile,
keep_alive=True, # reuse across agent runs
)
await session.start()Configure LLM and Run Agent
Browser Use accepts any LangChain-compatible LLM. Claude 3.5 Sonnet (Anthropic) is the most popular choice as of 2026 due to superior tool use and DOM reasoning. GPT-4o and Gemini 2.0 also work. Pass a natural language task string to the Agent constructor.
from browser_use import Agent
from langchain_anthropic import ChatAnthropic
llm = ChatAnthropic(
model="claude-3-5-sonnet-20241022",
temperature=0.0,
)
agent = Agent(
task="Find the top 3 results for mobile proxies on Google and summarize them",
llm=llm,
browser_session=session,
)
result = await agent.run()
print(result.final_result())Handle Cleanup
Always close the browser session when finished to release Playwright resources and close the proxy connection cleanly. For long-running services, implement signal handlers (SIGTERM, SIGINT) that trigger session.close() before exit to avoid leaking browser processes.
try:
result = await agent.run()
finally:
await session.close()Complete End-to-End Example
Full working Python script putting all six steps together
import asyncio
import os
from browser_use import Agent, BrowserProfile, BrowserSession
from langchain_anthropic import ChatAnthropic
async def run_agent_task(task: str) -> str:
# 1. Configure BrowserProfile with Coronium mobile proxy
profile = BrowserProfile(
proxy={
"server": "http://mobile.coronium.io:10001",
"username": os.environ["CORONIUM_USER"],
"password": os.environ["CORONIUM_PASS"],
},
user_agent=(
"Mozilla/5.0 (Linux; Android 14; Pixel 8) "
"AppleWebKit/537.36 (KHTML, like Gecko) "
"Chrome/132.0.0.0 Mobile Safari/537.36"
),
viewport={"width": 412, "height": 915},
device_scale_factor=2.625,
is_mobile=True,
has_touch=True,
user_data_dir="./browser-profile", # persist cookies
)
# 2. Start BrowserSession
session = BrowserSession(browser_profile=profile)
await session.start()
try:
# 3. Configure Claude 3.5 Sonnet (2026 top choice)
llm = ChatAnthropic(
model="claude-3-5-sonnet-20241022",
temperature=0.0,
anthropic_api_key=os.environ["ANTHROPIC_API_KEY"],
)
# 4. Run the agent
agent = Agent(
task=task,
llm=llm,
browser_session=session,
max_steps=30,
max_failures=3,
)
result = await agent.run()
return result.final_result()
finally:
# 5. Clean up browser + proxy connection
await session.close()
if __name__ == "__main__":
task = (
"Go to coronium.io, find the mobile proxy pricing, "
"and return the starting monthly price."
)
result = asyncio.run(run_agent_task(task))
print(f"Agent result: {result}")Run it: Set CORONIUM_USER, CORONIUM_PASS, and ANTHROPIC_API_KEY environment variables, then python agent.py. Expect a typical run to take 15-45 seconds and consume ~50K Claude tokens (~$0.50).
LLM Integration: Which Model for Browser Use?
Browser Use works with any LangChain-compatible LLM. Model choice directly impacts success rate, cost, and latency. As of 2026, Claude 3.5 Sonnet is the most popular choice for production deployments.
Claude 3.5 Sonnet
Anthropic
Best-in-class tool use accuracy, strong DOM understanding, lower hallucination on selectors, high fidelity on multi-step tasks. Produces the cleanest action sequences on WebVoyager-style benchmarks.
GPT-4o
OpenAI
Fastest inference of the frontier models, strong vision capabilities for screenshot-based reasoning, widely deployed OpenAI infrastructure with high availability. Excellent for tasks requiring image understanding (product grids, visual search).
Gemini 2.0 Flash
Dramatically lower cost than Claude or GPT-4o, 1M token context window for long page dumps, native multimodal with strong video understanding. Free tier available for prototyping.
Ollama (local)
Self-hosted
Zero API cost, full data privacy (nothing leaves your infrastructure), works offline. Supports Llama 3.3, Qwen 2.5, DeepSeek. Quality gap closing but still trails frontier models on complex reasoning.
LLM Configuration Code
Copy-paste Python for each provider
from langchain_anthropic import ChatAnthropic
llm = ChatAnthropic(
model="claude-3-5-sonnet-20241022",
temperature=0.0,
)from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="gpt-4o",
temperature=0.0,
)from langchain_google_genai import (
ChatGoogleGenerativeAI
)
llm = ChatGoogleGenerativeAI(
model="gemini-2.0-flash",
temperature=0.0,
)from langchain_ollama import ChatOllama
llm = ChatOllama(
model="llama3.3:70b",
base_url="http://localhost:11434",
)Production Deployment Patterns
Running a single Browser Use agent locally is easy. Scaling to dozens or hundreds of concurrent agents in production requires proxy pool management, session persistence, observability, and cost controls. These six patterns are what teams running production AI agent fleets have converged on in 2026.
Proxy Pool Management
For fleets of 10+ concurrent agents, maintain a rotating pool of dedicated mobile IPs. Each agent checks out a proxy at task start, holds it for the full session (for cookie persistence), and returns it on completion. Use Redis or PostgreSQL to track proxy state, last-used timestamp, and success rate.
proxy_pool.acquire() -> BrowserProfile; on finally -> proxy_pool.release()Session State Persistence
Long-lived agents (logged-in workflows, shopping cart automation) need to persist cookies and localStorage across restarts. BrowserProfile accepts user_data_dir to store Chromium profile data to disk. Pair each user_data_dir with a consistent proxy IP to maintain session stability.
BrowserProfile(user_data_dir="/data/agents/user-42", proxy=sticky_proxy)Cost Tracking per Agent Run
LLM costs scale with agent complexity. Track token usage per task using LangChain callbacks. Most Browser Use tasks consume 50K-500K tokens. A 100K-token Claude 3.5 run costs ~$0.30 input + $1.50 output. Budget alerts prevent runaway agents stuck in loops.
callbacks=[TokenUsageCallback(task_id=task.id, budget_usd=5.00)]Timeout and Retry Logic
Set max_steps (default 100) and max_failures on the Agent constructor. Wrap agent.run() in a timeout. Retry failed runs with a different proxy IP (the original IP may have been soft-blocked). Log action traces to S3 for post-mortem debugging.
Agent(task=..., max_steps=50, max_failures=3); asyncio.wait_for(agent.run(), timeout=600)Structured Output with Pydantic
For production agents, define a Pydantic output schema so the agent returns validated JSON instead of free-text. Browser Use supports output_model parameter that constrains the final result. Essential for downstream systems that parse agent output programmatically.
Agent(task=..., llm=llm, output_model=ProductListing)Observability with Langfuse
Browser Use integrates with Langfuse and LangSmith for trace observability. Every LLM call, DOM snapshot, and action is recorded with timing, cost, and status. Critical for debugging multi-step agent failures and optimizing prompt design over time.
langfuse_handler = LangfuseCallbackHandler(); llm.callbacks=[langfuse_handler]Proxy Pool Implementation
Production-ready proxy pool with Redis state tracking
import redis
import json
from contextlib import asynccontextmanager
from browser_use import BrowserProfile
class CoroniumProxyPool:
def __init__(self, proxies: list[dict], redis_url: str):
self.proxies = {p["id"]: p for p in proxies}
self.redis = redis.from_url(redis_url)
@asynccontextmanager
async def acquire(self, agent_id: str):
# Atomically grab an idle proxy with best success rate
proxy_id = self._select_best_idle_proxy()
if not proxy_id:
raise RuntimeError("No idle proxies available")
self.redis.setex(f"proxy:{proxy_id}:owner", 3600, agent_id)
proxy = self.proxies[proxy_id]
profile = BrowserProfile(
proxy={
"server": f"http://{proxy['host']}:{proxy['port']}",
"username": proxy["user"],
"password": proxy["pass"],
},
is_mobile=True,
user_data_dir=f"./profiles/{proxy_id}",
)
try:
yield profile, proxy_id
finally:
self.redis.delete(f"proxy:{proxy_id}:owner")
self._update_success_rate(proxy_id, success=True)
def _select_best_idle_proxy(self) -> str | None:
candidates = [
pid for pid in self.proxies
if not self.redis.exists(f"proxy:{pid}:owner")
]
# Rank by recent success rate stored in Redis
return max(
candidates,
key=lambda p: float(
self.redis.get(f"proxy:{p}:success_rate") or 0.95
),
default=None,
)Common Issues and Solutions
Eight issues teams run into most often when deploying Browser Use in production, with root causes and battle-tested fixes.
Agent hits a CAPTCHA mid-task
The underlying IP has accumulated bot reputation, or actions fired too quickly for the target site. Common with datacenter or low-quality residential proxies.
Switch to Coronium mobile proxy (95%+ trust score). Add action_delay parameter to BrowserProfile to insert 0.5-2 second pauses between DOM interactions. Pre-warm the IP by visiting trusted sites (Wikipedia, Google) for 30 seconds before the main task.
playwright.errors.TimeoutError waiting for selector
The page took longer than default 30s to load, or the selector predicted by the LLM does not match the rendered DOM. Often caused by slow proxy latency or dynamic content loading.
Increase default_timeout in BrowserProfile to 60000ms (60s) for slower proxies. Use wait_for_network_idle=True to ensure SPAs fully render before LLM sees the DOM. For flaky selectors, enable highlight_elements=True to visually debug.
Agent keeps retrying same failed action
The LLM is stuck in a reasoning loop, proposing the same action despite repeated failures. Common with smaller models on ambiguous DOMs.
Upgrade to Claude 3.5 Sonnet or GPT-4o (significantly lower loop rate). Set max_failures=3 to bail out of stuck agents. Add the failed action context to the task description so the agent knows to try alternatives.
net::ERR_PROXY_CONNECTION_FAILED
Proxy credentials are wrong, the proxy is unreachable, or the port format is incorrect. Browser Use bubbles up Playwright network errors verbatim.
Verify credentials by testing the proxy with curl: curl -x http://user:pass@host:port https://ifconfig.me. Check that your IP is whitelisted in the Coronium dashboard if you have IP-based auth enabled. Ensure no firewall is blocking outbound traffic to the proxy port.
High LLM token usage on simple tasks
Full DOM is being sent to the LLM on every step. For pages with 10K+ elements, this explodes token count quickly.
Enable include_attributes=["name","title","type","aria-label","role"] to limit which DOM attributes are sent. Reduce viewport_size to focus the agent on a smaller visual region. For search-style tasks, use output_model to short-circuit agent exploration once the target data is found.
Agent detected as bot (403, 429, or challenge page)
Combination of IP reputation and behavioral fingerprint. Browser Use on default settings still triggers some advanced anti-bot systems.
Stack three defenses: (1) Coronium mobile proxy for IP trust, (2) realistic action delays (0.5-2s), (3) patchright or stealth plugin to patch Playwright automation markers. Combined, these deliver 90%+ pass rates on DataDome, Akamai, and Cloudflare Turnstile.
BrowserSession crashes on second run
Chromium process from previous run was not cleanly terminated, leaving zombie processes that conflict with the new session.
Always wrap agent.run() in try/finally with session.close() in the finally block. For long-running services, implement SIGTERM handlers. Check for zombie processes with: ps aux | grep chromium and kill -9 if needed.
Cookies/login state lost between agent runs
Default BrowserSession uses an ephemeral profile. Every new session starts with a clean slate, losing auth cookies.
Set user_data_dir=/path/to/persistent/profile in BrowserProfile. Pair the persistent profile with a sticky mobile proxy IP for full session continuity. Use storage_state to export and re-import cookies explicitly for programmatic control.
Browser Use vs Stagehand vs ChatGPT Agent vs LaVague
Four major AI agent frameworks compete for the browser automation space in 2026. Here is an honest comparison across community traction, language support, LLM compatibility, and proxy configuration.
Browser Use
Fast-growing (2024 launch)
Full Playwright proxy config (HTTP, HTTPS, SOCKS5)
89.1% WebVoyager success rate (industry-leading), clean BrowserSession/BrowserProfile API, strong open-source momentum, native Playwright integration, Pydantic output schemas
Newer project (fewer stackoverflow answers), Python-only, rapid API evolution requires version pinning
Stagehand (Browserbase)
Backed by Browserbase (YC W24)
Proxy via Browserbase-managed infrastructure, external proxies via Playwright config
Clean TS API with act/extract/observe primitives, strong TypeScript ecosystem, tight integration with Browserbase hosted browsers, good documentation
Less mature Python support, vendor-oriented toward Browserbase infrastructure, smaller community than Browser Use
ChatGPT Agent (Operator)
OpenAI product (2025 GA)
OpenAI-managed infrastructure (proxy config not exposed)
No infrastructure to manage, polished UX for non-technical users, tight OpenAI integration, fast time-to-value for simple tasks
Black box (no custom proxy, no local models, no on-prem deploy), $200/month Pro subscription, limited control over browser environment and fingerprint
LaVague
Earlier-stage open source
Selenium-based proxy config
Focus on action planning via World Model abstraction, supports Selenium and Playwright backends
Smaller community, slower benchmark performance vs Browser Use, Selenium backend has weaker fingerprint fidelity
Decision Framework: Which Should You Choose?
- Python team, production deployment, custom proxies: Browser Use is the clear winner -- largest community, highest benchmark scores, full proxy control.
- TypeScript team, OK with Browserbase hosting: Stagehand -- idiomatic TS API and tight Browserbase integration.
- Non-technical user, personal automation, simple tasks: ChatGPT Agent -- zero infrastructure, polished UX, but no custom proxy.
- Research or experimenting with agent architectures: LaVague -- World Model abstraction provides a different mental model.
Browser Use + Mobile Proxies FAQ
Twelve common questions about running Browser Use in production with Coronium mobile proxies, drawn from real support conversations.
Configure & Buy Mobile Proxies
Select from 10+ countries with real mobile carrier IPs and flexible billing options
Choose Billing Period
Select the billing cycle that works best for you
SELECT LOCATION
when you order 5+ proxy ports
Carrier & Region
Available regions:
Included Features
๐บ๐ธUSA Configuration
AT&T โข Florida โข Monthly Plan
Your price:
$129
/month
Unlimited Bandwidth
No commitment โข Cancel anytime โข Purchase guide
Perfect For
Popular Proxy Locations
Secure payment methods accepted: Credit Card, PayPal, Bitcoin, and more. 2 free modem replacements per 24h.
Ready to deploy Browser Use in production?
Provision a dedicated mobile proxy device in any of 30+ countries with unlimited bandwidth, stable sticky IPs, and HTTP or SOCKS5 support. Your AI agent fleet will thank you with 90-95% success rates on the hardest targets -- Cloudflare Turnstile, DataDome, Akamai Bot Manager, and the Fortune 500 SaaS dashboards where Browser Use shines.