Quickstart

  1. Launch a stealth browser
    1. Python (sync)
    2. Python (async)
    3. Node
  2. Using a proxy
    1. Python
    2. Node
  3. Contexts and pages
  4. First-run download

Launch a stealth browser

Python (sync)

from chromiumfish.sync_api import Chromiumfish

with Chromiumfish(persona_seed=27182, headless=True) as browser:
    page = browser.new_page()
    page.goto("https://abrahamjuliot.github.io/creepjs/")
    page.screenshot(path="fingerprint.png")

Python (async)

import asyncio
from chromiumfish.async_api import AsyncChromiumfish

async def main():
    async with AsyncChromiumfish(persona_seed=27182) as browser:
        page = await browser.new_page()
        await page.goto("https://example.com")
        print(await page.title())

asyncio.run(main())

Node

import { ChromiumFish } from "chromiumfish";

const browser = await ChromiumFish({ personaSeed: 27182, headless: true });
const page = await browser.newPage();
await page.goto("https://abrahamjuliot.github.io/creepjs/");
await page.screenshot({ path: "fingerprint.png" });
await browser.close();

The object you get back is a standard Playwright Browser. Use contexts, pages, routing, tracing, and selectors exactly as you would with vanilla Playwright.

Using a proxy

Python

with Chromiumfish(
    persona_seed=27182,
    proxy={
        "server": "http://proxy.example.com:8000",
        "username": "user",
        "password": "pass",
    },
) as browser:
    ...

Node

const browser = await ChromiumFish({
  personaSeed: 27182,
  proxy: { server: "http://proxy.example.com:8000", username: "user", password: "pass" },
});

Pair a residential proxy with a matching persona for best results — a clean IP plus a coherent fingerprint clears most bot walls. Keep the proxy’s geo consistent with the persona’s locale.

Contexts and pages

with Chromiumfish(persona_seed=27182) as browser:
    context = browser.new_context(locale="en-US")
    page = context.new_page()
    page.goto("https://example.com")

First-run download

On the first launch (or chromiumfish fetch), the build is downloaded and cached. Subsequent runs reuse the cache, so startup is instant.


Back to top

An independent fork of Chromium. Not affiliated with or endorsed by Google.

This site uses Just the Docs, a documentation theme for Jekyll.