Run automated browser scripts that present a consistent, engine-level browser identity.
Reuse the same persona seed to keep an identity stable across multiple sessions.
Route canvas and WebGL calls through an optional Windows bridge for real-GPU fingerprint results.
Drop the browser into an existing Playwright script as a near drop-in replacement.
| arman-bd/chromiumfish | nzyuko/rustyvnc | doggy8088/leak-hunter | |
|---|---|---|---|
| Stars | 55 | 54 | 57 |
| Language | Rust | Rust | Rust |
| Setup difficulty | easy | hard | easy |
| Complexity | 3/5 | 4/5 | 3/5 |
| Audience | developer | researcher | ops devops |
Figures from each repo's GitHub metadata at analysis time.
The Canvas and WebGL bridge for real-GPU results requires a separate Windows machine, prebuilt binaries cover macOS and Linux only.
ChromiumFish is a fork of the Chromium browser (the open-source base for Google Chrome) that modifies the browser's internals to present a consistent, plausible browser identity rather than the default signals that automated browser sessions typically emit. The project is aimed at people who run web scrapers or automated tests and encounter bot-detection systems that reject standard headless Chromium sessions. The key difference from other similar projects is where the identity spoofing happens. Many stealth browser tools work by injecting JavaScript into pages to overwrite values like the user-agent string or canvas fingerprint. ChromiumFish instead applies its changes directly to the C++ source code of Chromium, so there are no JavaScript patches for detection scripts to find. Properties like user-agent, client hints, fonts, audio context, screen dimensions, and WebRTC behavior are all modified at the engine level. The browser also suppresses the standard automation markers that CDP (Chrome DevTools Protocol) normally exposes. The persona system works through a seed string you provide. Give it the same seed and you get the same coherent identity each time (useful for sessions that need continuity). Give it a different seed and you get a fresh, unlinkable identity. The identity values are internally consistent, so things like CPU core count and reported memory size are correlated the way a real machine would be. Canvas and WebGL fingerprinting present a separate challenge on headless Linux servers, since the software renderer (SwiftShader) gives away that no real GPU is present. ChromiumFish addresses this through an optional bridge service that routes canvas and WebGL calls to a Windows machine with a real GPU, returning results from actual hardware. The bridge is a separate optional component, not bundled in the main binary. The Python and Node packages install in one line (pip install chromiumfish or npm install chromiumfish), download the prebuilt browser binary on first use, and expose an interface that works as a drop-in replacement for standard Playwright. Prebuilt binaries are available for macOS and Linux. The project is MIT licensed.
A Chromium fork with a Playwright drop-in SDK that presents a consistent, engine-level browser identity for automated sessions.
Mainly Rust. The stack also includes Rust, C++, Playwright.
Use freely for any purpose, including commercial use, as long as you keep the copyright notice.
Setup difficulty is rated easy, with roughly 5min to a first successful run.
Mainly developer.
This repo across BitVibe Labs
Verify against the repo before relying on details.