cdpfleet Pre-launch Get early access

cdpfleet / Browsers / Rebrowser

Chromium family · Stealth-patched Chromium

Rebrowser, one socket away.

Chromium launched with Rebrowser's anti-detection patches. Connect with Playwright 1.52 — this browser's server is pinned to 1.52 and newer clients time out on connect. The generated examples already use 1.52. keep_alive isn't available: the 1.52 server can't keep contexts across connections, so a launch with it returns 400. page.setContent() never finishes on this browser (its patches replace the isolated world it runs in): use page.goto('data:text/html,…') or page.evaluate(() => document.write(…)) instead.

  • /rebrowser/sessionlaunch endpoint
  • 1.52Playwright client
  • 1thread headless

Why Rebrowser

  • Chromium with Rebrowser's anti-detection patches.
  • Connect with the Playwright 1.52 client — the code generator picks it for you.
  • No keep_alive: the 1.52 server can't keep contexts across connections.

Versions on the fleet now

release1.52.0

One build per release, updated on the fleet as new versions ship.

New majors are announced on /docs/updates.

Launch it

One HTTPS call to POST /rebrowser/session returns a WebSocket URL; connect to it with Playwright's chromium.connect() (client 1.52). A headless session takes 1 thread, a headful one 2.

Rebrowser: launch, open a page, print its title
// npm install [email protected]
// Browsers run on cdpfleet, so no `npx playwright install` is needed.
import { chromium } from 'playwright';

const KEY = process.env.CDPFLEET_API_KEY;

// 1. Launch the browser
const res = await fetch('https://starter.cdpfleet.com/rebrowser/session', {
  method: 'POST',
  headers: { 'x-api-key': KEY, 'content-type': 'application/json' },
  body: JSON.stringify({
    proxy: 'http://user:[email protected]:8080',
    headless: 'new',
  }),
});
if (!res.ok) throw new Error(`launch failed: ${res.status} ${await res.text()}`);
const { wsUrl } = await res.json();

// 2. Connect and drive it
const browser = await chromium.connect(wsUrl, { headers: { 'x-api-key': KEY } });
const page = await browser.newPage();
await page.goto('https://example.com');
console.log(await page.title());
await browser.close(); // ends the session and stops billing

Launch options

OptionWhat it does
proxy_rulesSend specific destination hosts through specific proxies.
inactivity_timeoutEnd the session after this long with no traffic on its WebSocket.
overall_timeoutHard cap on the session's total lifetime, regardless of activity.
vpn_tunnelVPN Tunnel: UDP/WebRTC full support — all of the browser's traffic, UDP included, goes through the residential exit.
vpnOwn network (dedicated plans): send all of the browser's traffic through your own VPN instead of a proxy.
headlessRun without a display.
live_viewMake a headless session watchable and controllable from outside.
screen_sizeResolution of the session's own display (headful only).
recordOpt this session out of recording with false.
start_urlOpen this page at launch so the session can be driven in live view with no client connected.

Every session also needs a proxy — yours, or the residential proxy.