Skip to main content

Stealth Chromium build with a drop-in Playwright harness — fetches and launches the ChromiumFish browser.

Project description

chromiumfish (Python)

Stealth Chromium with a drop-in Playwright harness.

pip install chromiumfish
chromiumfish fetch        # download + cache the browser build

Usage

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="fp.png")

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())

The returned object is a standard Playwright Browser, so new_context, new_page, routing, tracing, etc. all work as usual.

Options

Argument Default Description
persona_seed None Integer seed for a stable, internally-consistent fingerprint persona.
headless True Run headless (SwiftShader).
proxy None Playwright proxy dict, e.g. {"server": "http://host:port", "username": ..., "password": ...}.
window_size (1920, 1080) Window dimensions.
version pinned Override the browser build version.
download True Auto-download the build if missing.
timezone None "auto" resolves the egress IP's IANA timezone via the downloadable ip2tz DB and sets the browser's TZ; an IANA string (e.g. "Europe/Berlin") is used verbatim.
args None Extra Chromium flags.
**launch_kwargs Forwarded to chromium.launch().

IP-to-Timezone

timezone="auto" aligns the browser clock with the egress IP (handy behind a proxy). It uses a compact ip2tz database downloaded once and cached; you can also query it directly:

from chromiumfish import lookup_timezone, resolve_timezone

lookup_timezone("8.8.8.8")                 # -> "America/Los_Angeles"
resolve_timezone(proxy="http://user:pass@host:port")   # egress IP -> timezone

The DB auto-updates: it tracks the latest monthly build (cached, re-checked weekly), so you get fresh data without upgrading the SDK. Pin a fixed version with CHROMIUMFISH_GEOIP_VERSION=2026.06 for reproducibility.

CLI

chromiumfish fetch [--browser-version X] [--force]   # download + cache
chromiumfish path                                     # print binary path
chromiumfish clear                                    # wipe the cache
chromiumfish --version

Builds are cached under ~/.cache/chromiumfish/<version>/ (override with CHROMIUMFISH_CACHE_DIR). Pin a build with CHROMIUMFISH_VERSION.

Attribution

IP Geolocation by DB-IP — the ip2tz timezone database is derived from DB-IP City Lite, used under CC BY 4.0.

License

MIT © Arman Hossain. See the repository.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

chromiumfish-0.1.3.tar.gz (12.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

chromiumfish-0.1.3-py3-none-any.whl (16.9 kB view details)

Uploaded Python 3

File details

Details for the file chromiumfish-0.1.3.tar.gz.

File metadata

  • Download URL: chromiumfish-0.1.3.tar.gz
  • Upload date:
  • Size: 12.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for chromiumfish-0.1.3.tar.gz
Algorithm Hash digest
SHA256 900a667e5031f734afd5d8c640bdaeeecad9f1c10c40ec804700d92222488f1d
MD5 94e44809f54afea4d1c8a288bf61958c
BLAKE2b-256 c9a7ee21e205f7e0d4619b5336ce10458c1e887438bf6e36888fb00841800833

See more details on using hashes here.

Provenance

The following attestation bundles were made for chromiumfish-0.1.3.tar.gz:

Publisher: pypi.yml on arman-bd/chromiumfish

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file chromiumfish-0.1.3-py3-none-any.whl.

File metadata

  • Download URL: chromiumfish-0.1.3-py3-none-any.whl
  • Upload date:
  • Size: 16.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for chromiumfish-0.1.3-py3-none-any.whl
Algorithm Hash digest
SHA256 fd0b39c92c6a94b6d398d10cc5d62066d89f91cac56034b57c54d981888ab57b
MD5 05d559bcfe1c98b12dee38ddc7adaaa3
BLAKE2b-256 b9b914f08f67d55f1e29d6ac854644c5a9cb5b8e004dd939d97911d7cc763953

See more details on using hashes here.

Provenance

The following attestation bundles were made for chromiumfish-0.1.3-py3-none-any.whl:

Publisher: pypi.yml on arman-bd/chromiumfish

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page