# Oxylabs Agent Browser: a remote Chrome you drive over CDP

> Agent Browser is a cloud service that runs Chrome on remote servers and exposes it over the Chrome DevTools Protocol, so Playwright or Puppeteer scripts connect to a hosted browser with residential proxies, CAPTCHA handling, geolocation and device emulation built in. The repository in question holds no code, only a technical overview of a commercial product.

**oxylabs/agent-browser** — Execute complex automation scripts via remote cloud sessions , featuring integrated residential proxies , automated CAPTCHA solving , and native JavaScript rendering for the toughest dynamic websites.

- Repository: https://github.com/oxylabs/agent-browser
- Stars: 663 · Forks: 2
- Language: Unknown
- License: not declared
- Published: 2026-10-21 · Updated: 2026-10-21 · Language: en
- Canonical page: https://hysenlabs.com/projects/oxylabs-agent-browser

## The browser runs on someone else's servers

Agent Browser is a cloud service from Oxylabs that lets you run and control remote browser sessions without managing them locally or on your own infrastructure. The README frames it as a way to execute browser based automation, testing and web scraping without dealing with browser setup, resource constraints or detection challenges.

The contrast the README draws is with a self managed setup. A local agent browser instance, such as a self managed Puppeteer or Playwright arrangement, runs on your own machine with your own IP address and your own maintenance burden. Agent Browser instead runs on dedicated remote servers with integrated residential proxies and built in stealth features, so that anti bot detection, CAPTCHA solving and proxy rotation are handled for you.

The interface is the part that keeps this from being a walled garden. It works with any library that supports the Chrome DevTools Protocol, and the README names Playwright, Puppeteer and other CDP compatible automation frameworks. The Chrome DevTools Protocol is the wire format Chrome itself uses for debugging and automation, so a script written against it locally can point at a remote endpoint instead. The README links separate examples for using Agent Browser with Playwright for web scraping, with Puppeteer, and an MCP integration repository.

There are two browser environments, both on the hb.oxylabs.io host. The Chrome based browser is described as a high performance remote browser with advanced stealth running on dedicated servers with integrated proxies. The Firefox based browser is labelled legacy, with built in anti detection features and proxy integration, and the README states plainly that this environment will be deprecated soon. For Firefox, the supported Playwright versions are 1.51 and 1.56, which is a narrow constraint worth checking before you plan around it.

## CAPTCHA handling you can watch from your own script

The most concrete part of the documentation is the CAPTCHA event model. By default the service automatically detects and solves CAPTCHAs when a page loads, which covers the common case. The event system exists for the harder case, where a site shows a CAPTCHA later in the interaction, during a form submission or in a popup.

The browser extension sends messages to the window object that your script can listen for, and there are three events. oxylabs-captcha-solve-start fires when the CAPTCHA is detected and solving has begun, oxylabs-captcha-solve-end fires when the CAPTCHA was successfully solved, and oxylabs-captcha-solve-error fires when the auto solver failed to bypass the CAPTCHA.

The usage pattern the README describes is to subscribe to these events before navigation, and then pause your automation until the CAPTCHA is resolved. That ordering is the whole point. A script that polls after the fact will race the solver, and a script that subscribes after navigation may miss the start event entirely, so the subscription has to happen while the page is still loading.

There is a timing budget to plan for. The README says CAPTCHA solving typically takes up to 30 seconds, depending on the type and complexity, which is a long pause for a script that assumed a page load was a short event. A script that assumes a fixed timeout of a few seconds will need that assumption rewritten.

## Triggering the solver by hand, and the turnstile exception

For sites that present a CAPTCHA at a specific point rather than on load, the solving can be triggered manually at any point in the session. The README gives the mechanism as a message posted to the window object:

```bash
window.postMessage({action: 'solve_captcha', type: '<captcha_type>'}, '*')
```

The supported CAPTCHA types are hcaptcha, recaptcha and turnstile, which is Cloudflare's CAPTCHA. The dynamic case the README describes in detail is reCAPTCHA appearing after a form submission, where the detection has to be requested rather than waited for.

Cloudflare turnstile needs a different order of operations, and the README flags it as important. You must initiate CAPTCHA detection before performing the action that triggers it, because turnstile has to be intercepted before it appears on screen. Practically, that means the trigger has to be sent first and the click second, which is the opposite of what a human does and the opposite of how the other two types work.

This is a good illustration of how the design works in general. The service exposes control points for the automation, but the ordering constraints of individual technologies still leak into your script, and the documentation is where you find out about them. The README also points to its own documentation pages for CAPTCHA handling and for the dynamic manual trigger case, so the summary here is a starting point rather than the full specification.

## Geolocation and device type are URL parameters

A remote browser is only useful for location specific work if you can place it somewhere, and Agent Browser does that with query parameters on the connection URL. The README describes this as essential for scraping location specific content, verifying geo targeted ads, or accessing region locked pages.

There are three location parameters. p_cc selects the country with a two letter ISO country code such as US, DE or FR, and if no country is given the system auto assigns one based on availability. p_city selects a specific city in lowercase, such as berlin or los_angeles, and it requires p_cc or p_state to be set as well. p_state selects a US state in lowercase, such as texas or ohio, and if both p_state and p_cc are given, p_state takes priority.

That precedence rule is the kind of detail that causes bugs when it is not noticed, since setting a US state along with a country code does not do what a naive reading of the parameter names suggests.

Device emulation works the same way, through a p_device parameter, and is described as useful for scraping responsive layouts, for mobile specific content, and for device dependent behaviour such as different CAPTCHAs or different UI elements. The table of accepted values is cut off in the documentation available here, so the exact strings should be taken from the project's own documentation rather than guessed at.

The pattern across all of these options is the same: the configuration lives in the connection URL, not in a session object or a settings file, which keeps a session fully described by the endpoint you connect to.

## The repository is documentation, not code

The repository named in the project title is worth examining on its own terms, because it is not what the name suggests. The top level contains a README.md and two banner images, the Github repositories banner and the Github banner. There is no source directory, no build configuration, no licence file and no test suite, and the language field for the project is not even populated.

The README describes itself as the official repository overview for Oxylabs' Agent Browser, a technical overview of how it works, its key features, some common use cases, and how to use it to optimize web scraping infrastructure. So it is a documentation landing page for a commercial cloud product, published on GitHub for discoverability, and the real substance is in the linked developer documentation site.

That has direct consequences for anyone evaluating it. There is no code to audit, no version history to read, and no tagged release to pin, since the repository has no GitHub releases. The licence field is not filled in, so the terms that apply are the ones on the vendor's product pages rather than an open source licence. The last push was on 2026-09-30, so the overview is current, but a change in the service behaviour would not necessarily show up here.

The README also refers to sibling Oxylabs products, with a comparison section between Agent Browser, Web Scraper API and Web Unblocker, and a section on when to choose each, along with a fair usage policy and a common use cases section. Those sections are cut off in the excerpt available here, and the fair usage policy in particular is the document to read before running traffic through a residential proxy network, since that is where the limits on what you may scrape will be stated.

## Conclusion

Agent Browser suits a team that needs browser automation with residential egress, CAPTCHA handling and geo targeting without running browsers and proxy infrastructure itself, and it suits a team that needs to own the browser stack less well, since the environment is a hosted service with a vendor's fair usage policy attached. Before adopting it, confirm your Playwright or Puppeteer version is supported, read the fair usage policy the README points to, and note that the Firefox environment is marked for deprecation, so plan around the Chrome environment. The last push to this repository was on 2026-09-30 and it publishes no tagged releases.

## FAQ

### What is Oxylabs Agent Browser?

It is a cloud service that runs Chrome on dedicated remote servers with integrated residential proxies and stealth features, and exposes those sessions over the Chrome DevTools Protocol so Playwright, Puppeteer or other CDP compatible tools can drive them.

### How do I handle a CAPTCHA that appears during a form submission?

Subscribe to the window events oxylabs-captcha-solve-start, oxylabs-captcha-solve-end and oxylabs-captcha-solve-error before navigation, then pause your automation until the solve finishes. Solving typically takes up to 30 seconds.

### How do I trigger CAPTCHA solving manually?

Send window.postMessage({action: 'solve_captcha', type: '<captcha_type>'}, '*') with a type of hcaptcha, recaptcha or turnstile. For turnstile you must initiate detection before the action that triggers the CAPTCHA, since it has to be intercepted before it appears.

### How do I target a country or city with Agent Browser?

Add parameters to the connection URL. p_cc takes a two letter ISO country code, p_city takes a lowercase city and requires p_cc or p_state, and p_state takes a US state and takes priority over p_cc when both are given.

### Is Agent Browser open source?

The repository holds only a README and banner images, with no source code, no licence file and no releases, and the licence field is empty. It is the documentation overview of a commercial cloud service, and the developer documentation site linked from the README is where the details live.

## Sources

- [Issues](https://github.com/oxylabs/agent-browser/issues)
- [oxylabs/agent-browser on GitHub](https://github.com/oxylabs/agent-browser)
- [README](https://github.com/oxylabs/agent-browser/blob/main/README.md)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/oxylabs-agent-browser
