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.2.tar.gz (3.9 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.2-py3-none-any.whl (4.0 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: chromiumfish-0.1.2.tar.gz
  • Upload date:
  • Size: 3.9 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.2.tar.gz
Algorithm Hash digest
SHA256 c87d5ed4d167b79f9c50f3cfed960f9e14c6054f079e5bc9f3d7ad6af057de72
MD5 df7220ed36a90d8bea05feb3f295017d
BLAKE2b-256 795ec88f8f817ba92584a8914ebaccbf67260e38ad44a981be2f830c66eda38c

See more details on using hashes here.

Provenance

The following attestation bundles were made for chromiumfish-0.1.2.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.2-py3-none-any.whl.

File metadata

  • Download URL: chromiumfish-0.1.2-py3-none-any.whl
  • Upload date:
  • Size: 4.0 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.2-py3-none-any.whl
Algorithm Hash digest
SHA256 86d64335487722e575834d40ae4a930e1b34e244eca8ab5bcbeb6a42feca84c7
MD5 7adc96b0ada2f490ad263c249bb00389
BLAKE2b-256 e601142640ccedb1b768af9b6065dbf4a7f9c196e8eb8f7d465264c76b89096e

See more details on using hashes here.

Provenance

The following attestation bundles were made for chromiumfish-0.1.2-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