This page was tested with browser-use 0.13.10 and Apostate 0.4.3. browser-use changes quickly; check the names below against your version.
Why not let browser-use launch it
browser-use adds its own switches to every browser it launches. Among them:
It also emulates the viewport in headless mode, grants clipboard and notification permissions to every site, and draws highlight boxes into pages when it clicks. Starting the browser yourself and connecting over CDP avoids all of it.
The example
examples/agents/browser-use/agent.py starts Apostate with a DevTools port and connects browser-use to it:
python3 agent.py --check starts the browser and connects without calling a model:
- The environment holds the locale variables the Python package would set, and
GOOGLE_API_KEY=nowith the two client variables, which keep Chromium’s “Google API keys are missing” bar off the first tab of a launch without a driver. - The user data directory keeps the machine. Its first launch draws one and stores the seed; later launches present the same machine. Add
--fingerprint=SEEDto pin one instead. headless=Falsestops browser-use from emulating a viewport. The browser is already headless.permissions=[]andhighlight_elements=Falsekeep browser-use from granting permissions to every site and from injecting overlays.
Behind a proxy
Add--proxy-server=socks5://user:pass@proxy.example:1080 to args. Apostate takes the credential off the switch and answers the proxy’s authentication itself. Set --fingerprint-locale and --fingerprint-timezone to the exit’s, since this route skips the package’s GeoIP lookup. Proxies and Locale and timezone cover both.
Telemetry
browser-use sends anonymous usage data unlessANONYMIZED_TELEMETRY=false. The example sets it and BROWSER_USE_CLOUD_SYNC=false before importing browser-use.