0.4.3 Chromium 152.0.7977.83· release notes

Be any machine.

Apostate is Chromium that presents the Windows, macOS or Linux machine you choose: its GPU, screen, fonts, voices and locale. The values are changed in C++ where Chromium makes them, so there is no injected script for a page to find.

Get started
pip install apostate

Changed where the values are made.

A stealth script patches what JavaScript can read, and a page can test the patch. Apostate edits the C++ that produces each value instead, so the value a page reads is the only one there is.

from apostate import launch

browser = launch(
    fingerprint=42,
    fingerprint_platform="windows",
    proxy="socks5://user:pass@host:1080",
)
page = browser.new_page()
page.goto("https://example.com")
Same seed, same machine, on every host. ./chrome --fingerprint=42 --fingerprint-explain
What the page reads
navigator.userAgent
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/152.0.0.0 Safari/537.36
navigator.platform
Win32
WEBGL_RENDERER
ANGLE (NVIDIA, NVIDIA GeForce RTX 3070 Ti (0x00002482) Direct3D11 vs_5_0 ps_5_0, D3D11)
screen
1920 × 1080avail 1920 × 1032, taskbar
cores · memory
8 · 8 GBnever above the host
fonts
Segoe UI, Calibri, Cambria, ConsolasWindows 11 set only
voices
Microsoft David, Microsoft Mark, Microsoft Zira22 voices
timezone · locale
America/New_York · en-USfrom the proxy exit

Example values. --fingerprint-explain prints your seed's machine. Timezone and locale follow the proxy, not the persona.

134 patches

In C++, not JavaScript

No injected script, no CDP override, no redefined getter. Chromium 152, patched at the source.

4 GPU families · 80 models

A whole machine

User-Agent and Client Hints, WebGL and WebGPU captured on real hardware, screen and taskbar, system fonts, voices, cameras.

fingerprint=42

Same seed, same machine

A seed gives the same machine on every launch and every host. A persistent profile keeps its machine and its cookies.

Patchright · Playwright · Puppeteer

Drops into your stack

Python and Node packages fetch the browser and launch it. Headless on a Linux server with no GPU and no display.

Measured, then published.

FingerprintJS Pro suspect score from its public playground, 0 to 100, lower is better. Every run is headed, through a proxy, on the date shown.

  1. 0 Apostate 0.4.3 · Windows persona on a Mac browsed by hand · every smart signal clear · 2026-09-27
  2. 8 Apostate 0.4.3 · Windows persona, automated Linux server, no GPU · anomaly 0 on 5 of 5 seeds · 2026-09-26
  3. 3 A real Windows 11 PC · Chrome for reference · 2026-09-26

Still raised in automated runs: anti_detect_browser on some Windows personas, and anomaly 1 on Linux personas. Known gaps

FingerprintJS Pro playground: Chrome 152 on Windows 11, suspect score 0, every smart signal not detected
FingerprintJS Pro · suspect score 0 · Windows 11 on a Mac
BrowserScan: fingerprint authenticity 100% · Windows 11
BrowserScan · fingerprint authenticity 100% · Windows 11
Device and browser info: “You are human!” · isBot false
Device and browser info · “You are human!” · isBot false
Intoli tests: every test passed · WebGL on NVIDIA
Intoli tests · every test passed · WebGL on NVIDIA

Screenshots from 2026-09-27: one Windows persona, running on a Mac.

FingerprintJS Pro playground: Chrome 152 on Windows 11, suspect score 0, every smart signal not detected
FingerprintJS Pro · suspect score 0 · Windows 11 on a Mac1 / 4

Start with one line.

python pip install apostate
node npm install @heretic-tech/apostate

GPL-3.0 · Linux x64 and arm64 · macOS arm64 · Windows x64 · SHA-256 and build provenance on every archive