Examples & benchmarks
Real problems solved end to end: what we tried, which options we used and why, the code in Node.js, Python, Java, C# and Go, and the real output. Every one runs on the production fleet before it's published.
Examples show how to do something. Benchmarks record what happened under a stated test setup on the dates shown — sites, networks and browsers change, so rerun them before you rely on the numbers. These are our own examples and measurements, not customer results.
Start with a problem
Get started
- A first free scrape on the Community plan: no proxy to bring, country and sticky exits included Example
- Scrape a catalogue page by page: structured data from rendered HTML Example
- The SDK vs plain Playwright: the same scrape, and what happens at the thread cap Benchmark
- A thread-aware worker pool: one session per page vs. reusing sessions Example
- MCP in action: an MCP client drives a cloud browser through cdpfleet.com/mcp Example
Keep a login
- Log in once, stay logged in: carrying a session between browsers Example
- Logging in through a TOTP two-factor prompt from a remote browser Example
- Saved the login, still logged out: storageState and IndexedDB Example
- Persistent profiles: what a saved browser profile keeps, and what it doesn't Example
- Inspect and edit the cookie jar of a remote browser — and why WebKit refuses cookies on httpbin.org Example
Diagnose a blocked page
- Which bot protection is this? Detect the vendor from cookies, headers and requests Benchmark
- What headless gives away, what headful fixes, and what neither does Benchmark
- What four public bot-test pages say about five fleet browsers Benchmark
- Does the browser agree with its IP? Timezone, language and WebRTC through exits in three countries Benchmark
- Surviving a soft block: honour Retry-After, then move to another exit without losing the login Example
Compare countries
- Three countries, one script — and reading values the way the site does Example
- Cookie banners by country: the same five sites from Germany and from the US Benchmark
- No proxy of your own: rotating, country and sticky residential IPs with one token Example
- A German IP with a UTC clock: making location, timezone and permissions agree Example
Debug a failed run
- A scrape broke: find out why from its session recording Example
- Session replay without a vendor: Playwright tracing and video on a remote browser Example
- When is a page ready? commit, domcontentloaded, load, networkidle or a selector Example
- Record a page once, replay it offline: HAR files with a remote browser Example
- Stay under the tab and memory caps: reuse a few pages, close what you're done with Example
All 89, newest first
- Watch a page live: its XHR calls, DOM changes and WebSocket messages over SSE and a signed webhook Keep a Chrome of yours on a page that updates itself (the ISS position, polled about once a second), and get every matching XHR response and every change to one element as it happens: on the job's SSE stream within a second, in signed `job.event` webhook batches, and stored with the job. Stop it, compare the three, read what it cost — and capture a second page's WebSocket messages both ways. In five languages. Google Chrome For Monitoring · Web scraping
- A monitor end to end: create it, trigger a change, verify the signed webhook, read the diff and history Watch one element of a page that changes on every load, trigger checks with `POST …/run`, receive the `monitor.change` webhook and verify its HMAC signature, check its diff against the API's history and snapshots, see what each check cost, then pause and delete the monitor. Timed from run to webhook, in five languages. Camoufox For Monitoring · AI agents
- Geo compare: the same pages from five countries in one call, and reading the diff One `POST /v1/functions/geo` per page loads it from the US, Germany, the UK, Japan and Brazil at once and returns each country's Markdown and HTML plus a diff against the first. A Steam store page, Google's home page, Nike's home page and example.com: prices and currency, language, cookie banners, country redirects — and what to check before you trust the diff. In five languages. Camoufox For Geo testing · Web scraping
- Crawl a whole site as a job: map, crawl, stop, resume, results, zip and a signed webhook Map books.toscrape.com, crawl 100 pages of it as a background job, stop it part-way and resume it, then read the results as JSON lines and as a zip archive, and check the signed `job.done` and `job.archive` webhooks. Pages per minute and thread-seconds per page from the job's own bill, in five languages. Camoufox For Web scraping · LLM data
- A Function or your own browser? Screenshot, PDF and Markdown of the same pages, timed and billed Three pages, three outputs, two ways: one POST to a Function, or launch a browser yourself, connect Playwright, capture and close. Wall time, the thread-seconds each one is billed (read back from the account's history) and what you get — through the same proxy, in five languages. Chromium · Camoufox For Web scraping · LLM data
- Does the TLS fingerprint (JA4) explain which browsers got in? Twelve browsers against six vendors Each of the twelve browsers from the real-site lab week loads a TLS echo page once, so we know the JA4, peetprint and HTTP/2 fingerprint it sends. Grouped by identical JA4, their recorded outcomes against Cloudflare, DataDome, Akamai, HUMAN, Kasada and AWS WAF (2026-10-26..30) show whether the fingerprint lines up with who got the page. Fingerprints measured 2026-11-06. Google Chrome · Microsoft Edge · Brave · Opera · Yandex Browser · Naver Whale · Chromium · Patchright · Firefox · WebKit · Camoufox For Web scraping
- Brave's fingerprint randomisation per site, per context and per launch, and what public fingerprint pages make of it Brave adds noise to canvas, audio, cores, memory and the plugin list, keyed to the site and the session. One probe on two made-up sites, the same site again, a second context and a second launch shows exactly when the values change, next to headful Chrome. Then CreepJS, browserleaks, sannysoft, deviceandbrowserinfo and the fingerprint.com playground give their own verdicts on Brave headless, Brave headful and Chrome. Dated 2026-11-05. Brave · Google Chrome For Web scraping · Testing
- Kept downloads in practice: a person in Launch interactive and an AI agent over MCP Files nobody's code was waiting for: a person pastes file links into a Launch interactive session, an AI agent clicks a download and opens a file link through the hosted MCP server. Both sessions run with "downloads": true; afterwards the files are listed, fetched and checked byte for byte against the originals — and the program times how long after the session ends they show up. Chromium For AI agents · Web scraping
- Behaviour scoring: Camoufox humanize on and off vs plain Chrome clicks on a public bot-test form A public behavioural bot-test page scores how a demo login form was filled in: clicks, keystrokes, timing. Camoufox with `humanize` off, on and slowed down, and headful Chrome with plain Playwright clicks, each filled it the same way three times, typing fast and typing paced. What the page flagged, what it measured, and whether Google's reCAPTCHA v3 demo moved after real cursor moves and a click. Dated 2026-11-04. Camoufox · Google Chrome For Web scraping · AI agents
- How many tabs fit in one session, by plan, browser and "memory" A long Wikipedia article opened in one new tab after another until the session ends: on Community (2 GB), a shared plan (4 GB) and a dedicated thread (6 GB), in Chromium, Firefox and WebKit, and with `"memory": 2`. How many tabs fit, what the client sees when the memory runs out, what a 51st tab gets, and what each run is billed. Chromium · Firefox · WebKit For Web scraping · AI agents
- MCP in action: an MCP client drives a cloud browser through cdpfleet.com/mcp A script connects to the hosted MCP server with its API key and does what an AI assistant does: list the tools, launch a browser, open a page, read it as an accessibility snapshot, extract data and close the browser — once in one MCP session, and once with a new MCP session for every call, as ChatGPT does. In five languages, four of them on the official MCP SDK. Chromium For AI agents · LLM data
- keep_alive: an agent run that survives its client going away An agent works through a catalogue in a headless Chrome session with `keep_alive`, then its client disconnects. A new client reconnects to the same session and carries on. What survives, how fast the reconnect is, how the session looks while nobody is attached, when it ends, and what is billed. Chromium For AI agents
- Kasada and AWS WAF on real sites: twelve browsers, four sites, one exit each Two real sites behind Kasada and two behind AWS WAF, loaded once by each of twelve browsers and by a returning Camoufox profile, through one sticky residential exit per site, with the vendor signals and how long an automatic check took to clear. Dated 2026-10-30. Google Chrome · Microsoft Edge · Brave · Opera · Yandex Browser · Naver Whale · Chromium · Patchright · Firefox · WebKit · Camoufox For Web scraping
- The SDK vs plain Playwright: the same scrape, and what happens at the thread cap One small scrape written three ways in each language: a launch request of your own plus Playwright, the cdpfleet SDK, and the SDK's connect URL. The scrape is the same either way; the difference shows when the account is out of threads, where the SDK waits for a free one and the plain request gets an immediate 429. Chromium For Web scraping
- HUMAN on real sites: twelve browsers, three sites, one exit each Three real sites behind HUMAN (formerly PerimeterX), chosen from our sweep as easy, medium and hard, loaded once by each of twelve browsers and by a returning Camoufox profile, through one sticky residential exit per site, with the HUMAN cookies each load got. Dated 2026-10-29. Google Chrome · Microsoft Edge · Brave · Opera · Yandex Browser · Naver Whale · Chromium · Patchright · Firefox · WebKit · Camoufox For Web scraping
- Does the browser agree with its IP? Timezone, language and WebRTC through exits in three countries Five setups through residential exits in the US, Germany and Japan: which ones keep timezone, language, Accept-Language, Intl formats and the WebRTC address consistent with the exit IP, and which mismatches a site can check. Camoufox · Google Chrome For Geo testing · Web scraping
- Akamai on real sites: twelve browsers, three sites, one exit each Three real sites behind Akamai Bot Manager, chosen from our sweep as easy, medium and hard, loaded once by each of twelve browsers and by a returning Camoufox profile, through one sticky residential exit per site, with the state of Akamai's _abck cookie. Dated 2026-10-28. Google Chrome · Microsoft Edge · Brave · Opera · Yandex Browser · Naver Whale · Chromium · Patchright · Firefox · WebKit · Camoufox For Web scraping
- Stay under the tab and memory caps: reuse a few pages, close what you're done with Every session has a tab cap and a memory cap. A new tab per URL runs into the first; one page that grows runs into the second. A small pool of reused tabs works through the same list with room to spare. Chromium For Web scraping
- DataDome on real sites: twelve browsers, three sites, one exit each Three real sites behind DataDome, chosen from our sweep as easy, medium and hard, loaded once by each of twelve browsers and by a returning Camoufox profile, all through one sticky residential exit per site. The outcome per cell, dated 2026-10-27. Google Chrome · Microsoft Edge · Brave · Opera · Yandex Browser · Naver Whale · Chromium · Patchright · Firefox · WebKit · Camoufox For Web scraping
- Cloudflare on real sites: twelve browsers, three sites, one exit each Three real sites behind Cloudflare, chosen from our sweep as easy, medium and hard, loaded once by each of twelve browsers and by a returning Camoufox profile, all through one sticky residential exit per site. The outcome per cell, dated 2026-10-26. Google Chrome · Microsoft Edge · Brave · Opera · Yandex Browser · Naver Whale · Chromium · Patchright · Firefox · WebKit · Camoufox For Web scraping
- VPN Tunnel vs a plain residential proxy: WebRTC, HTTP/3 and two bot-protection pages The same sticky residential exit with and without `vpn_tunnel`, on headful Chrome and Camoufox: which public IP WebRTC shows, whether HTTP/3 (QUIC) gets used, and what Cloudflare's challenge test page and DataDome's own site make of each. Google Chrome · Camoufox For Web scraping · Geo testing
- CAPTCHA demo pages: what reCAPTCHA v3 scores and hCaptcha show seven browsers, and why a demo can't rank them Google's public reCAPTCHA v3 score demo and hCaptcha's demo widget, loaded once per cell by seven browser setups through your own proxy and a sticky cdpfleet-resi exit. The score each setup got, whether the hCaptcha widget rendered, and why vendors' demo pages tell you little about how a real site will treat your browser. Chromium · Google Chrome · Microsoft Edge · Brave · Camoufox · Firefox · WebKit For Web scraping
- Akamai and HUMAN: what gets through? Four browsers, three networks, the vendors' own sites akamai.com (Akamai Bot Manager) and humansecurity.com (HUMAN, formerly PerimeterX), each protected by its own vendor, loaded once per cell by headless Chromium, headful Chrome, headful Edge and Camoufox through your own proxy and sticky cdpfleet-resi exits (Tier 1 and Tier 4). The outcome per cell, the HTTP status, how many sensor posts the vendor's script sent, what Akamai's `_abck` cookie said before and after them, whether HUMAN issued `_px3`, and what a returning visitor with a profile sees. Chromium · Google Chrome · Microsoft Edge · Camoufox For Web scraping
- Which fingerprints stay the same across launches: canvas, WebGL, audio and fonts on seven browsers Three launches per browser, each reading a canvas hash, the WebGL renderer and a rendered WebGL image, an audio hash and a font list on the same page. Chrome, Edge, Chromium, Firefox and WebKit gave the same values every time. Brave changed its canvas and audio on every launch, and Camoufox its canvas and audio (and usually its GPU). A profile kept Camoufox's GPU, fonts and audio but not the canvas, and kept nothing of Brave's noise. Google Chrome · Microsoft Edge · Chromium · Brave · Camoufox · Firefox · WebKit For Web scraping
- DataDome: what gets through? Four browsers, three networks, DataDome's own site DataDome's own home and pricing pages, which DataDome protects, loaded once per cell by headless Chromium, headful Chrome, headful Edge and Camoufox through your own proxy and sticky cdpfleet-resi exits (Tier 1 and Tier 4). Outcome per cell with the HTTP status DataDome answered, what a returning visitor with a profile sees, and whether Camoufox's `humanize` changes the next page. Chromium · Google Chrome · Microsoft Edge · Camoufox For Web scraping
- Cloudflare: what gets through? Four browsers, three networks, four public test pages Two Cloudflare challenge test pages and a Turnstile test page in two widget modes, loaded once per cell by headless Chromium, headful Chrome, headful Edge and Camoufox through your own proxy and a sticky cdpfleet-resi exit (Tier 1 and Tier 4). Outcome per cell, seconds to clearance, whether `cf_clearance` or a Turnstile token was issued, and what a returning visitor with a profile sees. Chromium · Google Chrome · Microsoft Edge · Camoufox For Web scraping
- What four public bot-test pages say about five fleet browsers bot.sannysoft.com, CreepJS, deviceandbrowserinfo.com and the fingerprint.com playground, each read for its own verdict on headless Chromium, headful Chrome, headful Patchright, Camoufox and headless WebKit. Headless Chromium fails the most checks everywhere; Camoufox is the only setup deviceandbrowserinfo never called a bot. Chromium · Google Chrome · Patchright · Camoufox · WebKit For Web scraping
- Which bot protection is this? Detect the vendor from cookies, headers and requests Load 20 public pages once each (the vendors' own demo pages plus large public sites) and name the bot-protection vendor from the signals it leaves: response headers, cookie names and the hosts the page calls. Counts and signals per vendor, with the outcome each page showed on the measurement date. Chromium For Web scraping
- Borrow the page's token and read its paginated API directly Log in once in a remote browser, find the bearer token the app sends to its own API, and fetch every page of the API from inside the page: the same records as clicking through every page, with 16 fields each instead of 5 columns, in about a second instead of many. Chromium For Web scraping · LLM data
- A multi-step checkout end to end: wait for each step, and check what you typed Log in, fill a cart, refuse an empty form, type the buyer, check the totals and finish — as three demo users: one normal, one whose pages are slow, one whose inputs are broken. Waiting for each page instead of sleeping handles the slow one; reading the fields back catches the broken one. Chromium For Testing · AI agents
- Block analytics and beacons, keep the page: what telemetry a scraper sends without knowing Load three real sites with and without a telemetry block list (analytics, measurement and real-user-monitoring hosts, plus beacons). Count what each page reports about your visit — including the beacons it fires as you leave — and check the content stays the same. Chromium For Web scraping
- Do it by hand in live view, then let your code finish in the same browser Launch a browser with `start_url` and no client, drive it through a control-mode live link — address bar, Tab, typing — then connect your code: it finds the person's page in `contexts()[0]`, reads what they typed and submits the form. The watched session outlived its 30 s idle timeout; an unwatched twin ended at 30 s. Chromium For AI agents
- Inspect and edit the cookie jar of a remote browser — and why WebKit refuses cookies on httpbin.org Read the cookies a page would send, change a value and an expiry, delete one by name and carry the login into a new session as about 150 bytes of JSON. Then set cookies three ways on three hosts in Chromium, Firefox and WebKit: WebKit refuses every cookie on httpbin.org and postman-echo.com, which are on the Public Suffix List. Chromium · Firefox · WebKit For Testing · Web scraping
- A slow phone on a fast server: CPU throttling over a CDP session Slow a remote Chromium's main thread 4× and 6× with Emulation.setCPUThrottlingRate, then time a JavaScript workload and a real page load — and see that it's per tab. Chromium For Testing
- Core Web Vitals from a remote browser: LCP, CLS and TTFB in lab runs Read LCP, CLS, FCP and TTFB from the page's performance timeline, plus Chromium's own counters over a CDP session — and see why TTFB through a proxy is mostly the proxy. Chromium For Testing · Monitoring
- The WebRTC IP leak test behind a proxy: what Chromium, Chrome, Firefox and Camoufox reveal Run the leak test fingerprinting sites use — ICE candidates against a public STUN server — on five setups behind sticky residential exits. No setup exposes a second public IP: the Chromium builds and Firefox show only an anonymous mDNS name, Camoufox reports the proxy's exit, and `block_webrtc` removes the API. Chromium · Google Chrome · Firefox · Camoufox For Web scraping · Geo testing
- Surviving a soft block: honour Retry-After, then move to another exit without losing the login Two crawlers against the same rate-limited site. The one that retries a 429 straight away is challenged and gets 3 of 8 pages. The one that waits as told and moves the session to another proxy when its exit is blocked gets all 8 — same browser, same cookies. Chromium For Web scraping · Monitoring
- Installed fonts as a fingerprint: what a width probe sees on each Camoufox persona The classic font probe — 46 families measured against the generic fonts — on Camoufox's Windows, macOS and Linux personas, with extra `fonts` and with `custom_fonts_only`. The list follows the OS and repeats from launch to launch; `fonts` adds families to the persona's list (again since 2026-10-30; from 2026-10-22 it replaced the list). Camoufox For Web scraping
- Cut residential spend: the page on Tier 1, the images on Tier 4, in one session The cdpfleet residential proxy has four price tiers, from $5 to $0.50 per GB. Send a gallery page through Tier 1 and its image hosts through Tier 4 with `proxy_rules`, count the bytes of each, and check them against what the balance actually billed per tier. Chromium For Web scraping · Geo testing
- A price watcher in one program: two snapshots minutes apart, diffed, billed only while reading Take a snapshot of a catalogue price and a live market price, wait two minutes, take another and diff them field by field. Each snapshot is its own short session, so a 2-minute watch costs seconds of browser time — and an idle session would have ended anyway. Chromium For Monitoring · Web scraping
- The same Camoufox device across relaunches: what a persistent profile keeps, and what it doesn't A Camoufox profile brought back the same screen, cores, GPU and user agent — and the login — on every relaunch, where launches without one got a new device each time. Two things still change per launch: the canvas noise, and the timezone if the exit IP moves. Camoufox For Web scraping · AI agents
- Mock, patch and fail API responses with route.fulfill on remote browsers Stub a backend that doesn't exist, change a real API response on its way in, simulate a 500, and drop images — all from your script with `page.route`, on Chromium, Firefox and WebKit running on the fleet. Chromium · Firefox · WebKit For Testing
- A first free scrape on the Community plan: no proxy to bring, country and sticky exits included On the free Community plan a launch without a proxy goes out through the plan's own shared proxy. Scrape a catalogue page, then pick a country and keep the same exit across sessions with a `cdpfleet-plan` token — and read the plan's limits from the API. Chromium For Web scraping · Geo testing
- Browser extensions aren't supported — what to use instead An honest "doesn't work" case: a launch with extension flags or an extension list is refused (`400 unsupported_option`). Content scripts, request blocking and header rewriting — what most automation extensions are for — work with Playwright instead, on Chrome and Firefox alike. Google Chrome · Firefox For Testing · AI agents
- Clipboard and file permissions on remote browsers: what's blocked and what works The clipboard and file APIs on Chromium, Chrome, Firefox and WebKit: which calls are denied by default, which permission names each engine accepts, why `setFiles` can't answer `showOpenFilePicker`, and the workarounds. Chromium · Google Chrome · Firefox · WebKit For Testing · AI agents
- Print to PDF across browsers: which engines can, and the fallback for the rest `page.pdf()` on seven remote browsers: Chromium, Chrome and Edge print — headless and headful — while Firefox, Camoufox and WebKit refuse. Print CSS plus a full-page screenshot works everywhere. Chromium · Google Chrome · Microsoft Edge · Firefox · Camoufox · WebKit For Testing · Monitoring
- Can a page tell your automation client is listening? CDP and the console The old Error.stack trick no longer fires, but console.log still costs more when Playwright listens over CDP. Patchright avoids it; Camoufox isn't CDP. Chromium · Patchright · Google Chrome · Camoufox For Web scraping
- Puppeteer on real Google Chrome: cdpUrl, raw CDP and request interception Drive real Chrome on cdpfleet with Puppeteer (or any CDP client): what the browser reports, raw CDP calls, blocking images, and closing the session. Google Chrome For Web scraping · Testing
- A scrape broke: find out why from its session recording A scraper dies with a timeout. Its session was recorded anyway: fetch the video by session id and see the page it failed on, with no tracing set up in advance. Chromium For Web scraping · AI agents
- Persistent profiles: what a saved browser profile keeps, and what it doesn't Save a cdpfleet browser profile and restore it: which cookies and storage come back, the newContext() trap, read-only sharing, one writer at a time. Chromium For AI agents · Web scraping
- Saved the login, still logged out: storageState and IndexedDB Firebase Auth, and apps built on SDKs that persist to IndexedDB, keep the login there, which storageState leaves out by default. One option brings it along; Map and Blob values still don't survive. Chromium For AI agents · Web scraping
- Logging in through a TOTP two-factor prompt from a remote browser Generate the authenticator code in your own code, type it into a remote browser, and save the login so the next session skips the second factor. Chromium For AI agents · Testing
- Cookie banners by country: the same five sites from Germany and from the US The Guardian, BBC, AP News, The Verge and HuffPost through a German and a US exit: which show a consent banner, which consent API they expose, what loads before anyone clicks, and what "reject" and "accept" change. Chromium For Geo testing · Testing
- Slow 3G on a remote browser: network throttling over a CDP session Throttle a remote Chromium to Fast 4G and Slow 3G — and take it offline — with a CDP session over the ordinary Playwright connection, then time how long the same page takes. Chromium For Testing
- A German IP with a UTC clock: making location, timezone and permissions agree What a page learns about where you are — geolocation, its permission, timezone and language — through a German proxy, with defaults and with a Berlin context. Defaults contradict the IP; three context options fix it. Chromium For Geo testing · Testing
- Record a page once, replay it offline: HAR files with a remote browser Record every request of a page into a HAR file on your machine, then serve the page from that file — same content in a fraction of the time, nothing sent to the network, and requests the file doesn't have refused. Chromium For Testing
- When is a page ready? commit, domcontentloaded, load, networkidle or a selector Five ways to wait for a page, timed on a static catalogue, a big article and a page that renders its data late — and how many data items were actually there when each wait returned. Chromium For Web scraping · Testing
- A page for an LLM: HTML, innerText or the accessibility snapshot? Three ways to hand a rendered page to a model — raw HTML, innerText and Playwright's ARIA snapshot — measured on three real pages: how big each is and what it keeps. Chromium For LLM data · AI agents
- Content you can't querySelector: iframes and shadow DOM Same-origin and cross-origin iframes, open and nested shadow roots, and a closed one: what document.querySelector finds (nothing), what Playwright locators find (all but the closed root), and how. Chromium For Web scraping · Testing
- Five pages at once: parallel tabs in one browser session Open five unrelated pages concurrently in one session and compare with loading them one by one — same thread, same proxy, a fraction of the wall time. Chromium For Web scraping
- Visual capture: full-page screenshot, element crop and PDF in one session Four captures from one page load — viewport, full page, a single element and a PDF — rendered in the remote browser and saved on your machine, with their sizes and timings. Chromium For Monitoring · Testing
- Scrape a catalogue page by page: structured data from rendered HTML Every book on two pages of a catalogue — title, price, star rating and availability — as clean JSON, parsed from the rendered DOM in one evaluate call per page. Chromium For Web scraping · LLM data
- Watch it live: streaming a remote browser to your code, frame by frame Playwright 1.60's page.screencast on Chromium and Firefox: how many frames arrive while a page loads, scrolls and sits still — and why the two engines behave nothing alike when nothing moves. Chromium · Firefox For AI agents · Testing
- Same Chrome, two doors: Playwright's protocol (wsUrl) or CDP (cdpUrl) One Chrome launched twice — driven once through Playwright's own protocol and once over the Chrome DevTools Protocol — and what changes for your code and for the page. Google Chrome For Testing · AI agents
- No proxy of your own: rotating, country and sticky residential IPs with one token Four launches on the cdpfleet residential proxy — any country, Germany, and one sticky US identity carried from one browser session to the next — with nothing but a token as the proxy. Chromium For Geo testing · Web scraping
- New tabs, window.open and the three blocking dialogs: everything that interrupts a script A page that opens tabs and throws alert, confirm and prompt at you, handled on a remote browser: catching the new page, answering dialogs, and what happens when you don't. Chromium For Testing · AI agents
- Download every image on a page without downloading it twice Two ways to get a page's images as bytes on your machine: keep the responses the page already loaded (zero extra requests), or fetch them again from inside the page. Both through the browser, both verified as real JPEGs. Chromium For Web scraping
- Check every link on a page: 73 links in seconds, from inside the browser A link checker that stays the browser: collect the links, verify them with fetch() inside the page eight at a time, and compare with navigating to each one. Chromium For Testing · Monitoring
- Four ways to make a request, four different visitors: goto, in-page fetch, page.request and your own client The same URL fetched from the browser, from a script inside the page, from Playwright's request API and from your machine — and what the server saw each time: exit IP, user agent, HTTP version and TLS fingerprint. Chromium For Web scraping
- Three visitors, one thread: browser contexts instead of sessions Cookies, storage, locale and clock isolated per persona inside a single browser session — what a context gives you for free, what it shares, and the proxy surprise in the exit IPs. Chromium For Web scraping · Testing
- Fetch first, browser second: paying for JavaScript only when the page needs it A plain HTTP GET through your proxy tells you in a second whether the data is in the HTML. Only the pages that render with JavaScript get a browser session — three pages, one decision rule, measured. Chromium For Web scraping · LLM data
- Session replay without a vendor: Playwright tracing and video on a remote browser Record a time-travel trace (actions, DOM snapshots, screenshots, network) and a video of a session running on the fleet, pull both to your machine, and open them with the tools you already have. Chromium For Testing · AI agents
- Infinite scroll, two ways: scroll like a user, or call the JSON the page calls Collecting everything an endlessly scrolling page loads: by scrolling and watching the DOM, and by catching the page's own API request and paging through it from inside the browser. Chromium For Web scraping
- What headless gives away, what headful fixes, and what neither does Twelve classic detection signals read from inside the page in headless Chromium, headful Chromium, Patchright and Camoufox. Headful removes the obvious tells; the GPU and the host still talk. Chromium · Patchright · Camoufox For Web scraping · Testing
- Three countries, one script — and reading values the way the site does Camoufox personas for the US, Germany and Japan: timezone, language, local dates and numbers, geolocation, all consistent with the exit country. Camoufox For Geo testing · Web scraping
- What your proxy costs you in page speed The same page, cold, through three proxies: connection setup, time to first byte, largest paint and full load — measured by the browser itself. Chromium For Web scraping
- Real-time sites through a proxy: WebSocket latency by proxy Chats, live prices and dashboards run on WebSockets. They work through every proxy type — but each message pays the full proxy path, and location decides how much. Chromium For Web scraping · Monitoring
- Files across the wire: uploading to and downloading from a remote browser The browser runs on our servers, your files live on your machine. setInputFiles and download.saveAs move them both ways — byte for byte. Chromium For AI agents · Testing
- Log in once, stay logged in: carrying a session between browsers Save cookies and localStorage at the end of one session, restore them in a fresh browser — even a different engine on a different server. Chromium · Firefox For AI agents · Web scraping
- A thread-aware worker pool: one session per page vs. reusing sessions 24 pages on 6 parallel workers, two strategies, with the retries the API asks for. Reusing sessions is faster and costs a fraction of the thread time. Chromium For Web scraping
- Setting a header the wrong way: header order as a fingerprint Four ways to change request headers in Playwright, and what each does to the header order a server sees. TLS and HTTP/2 stay put; the order doesn't. Google Chrome For Web scraping
- A bandwidth diet for residential proxies: what blocking really saves Count every byte a news homepage pulls through your proxy, then block images, media, fonts and third parties — and see where the money actually goes. Chromium For Web scraping
- Different sites, different proxies, one browser: proxy_rules Route one host through a SOCKS5 proxy, another through a round-robin pool and everything else through residential — and the IP-lookup hosts only Camoufox keeps on the default proxy. Chromium For Web scraping
- Swap a proxy mid-session without losing the login — and the keep-alive trap One API call changes the exit IP of a running browser. Open connections don't follow; storageState moves everything over. Chromium For Web scraping · Geo testing
- Three Chromium builds against common bot checks, headless and headful chromium, Chrome and Patchright through the checks detection scripts run first — and why headless mode is the loudest signal. Chromium · Google Chrome · Patchright For Web scraping
- A German Windows persona with Camoufox — and the one setting that broke it OS, locale, screen, window, WebRTC and geo-IP in one consistent fingerprint. The proxy decides whether the story holds. Camoufox For Web scraping · Geo testing
- Stable, beta, dev and an older major: four Chromes side by side Pick a channel or pin a previous major, read the live catalog instead of hard-coding versions, and see what actually differs on the wire. Google Chrome For Testing
- Emulating an iPhone on real Chrome: what changes, and what gives you away Playwright device descriptors fix the viewport, touch and user agent — and leave five tells a site can read. Google Chrome For Testing
- What your browser says before it says anything: TLS and HTTP/2 fingerprints Five engines, one endpoint (tls.peet.ws), and the fingerprints anti-bot systems read before your page even loads. Google Chrome · Microsoft Edge · Firefox · Camoufox · WebKit For Web scraping · Testing