Skip to main content
Apostate is a patched build of Chromium that replaces your real machine fingerprint with a complete, consistent identity of your choosing — down to the GPU renderer, system fonts, speech voices, and locale — all enforced at the C++ level. These docs cover everything you need to install Apostate, choose a persona, integrate it with Playwright or Puppeteer, and browse without triggering fingerprint-based detection.

Introduction

Learn what Apostate spoofs, how C++-level patching works, and how it compares to script-injection approaches.

Installation

Install Apostate with pip or npm and let it download the patched Chromium binary automatically on first launch.

Quickstart

Go from zero to a verified fingerprint in under five minutes with a single launch call.

Python Guide

Full walkthrough for Python users: seeds, platforms, proxies, and Playwright integration.

How it works

1

Install the package

Run pip install apostate or npm install @heretic-tech/apostate. The package manager handles everything; the patched Chromium binary is fetched automatically on first launch.
2

Choose a fingerprint seed

Pass any integer as your fingerprint seed. Apostate derives a complete, reproducible machine identity from that seed — the same integer always produces the same GPU, fonts, screen, voices, and locale on every host.
3

Launch with your persona

Call launch() with the seed and your target platform (windows, macos, or linux). Optionally attach a proxy so that timezone and locale resolve automatically from the exit IP.
4

Browse undetected

Every API the page can query — navigator.userAgent, WebGL renderer strings, screen.width, speechSynthesis.getVoices(), and more — returns values that are consistent with the chosen machine. No wrappers, no redefined getters, no detectable seams.
Apostate enforces its fingerprint entirely inside the Chromium C++ source — not through injected JavaScript, Chrome DevTools Protocol overrides, or redefined property getters. Detection tools that look for script injection, CDP artifacts, or inconsistent getter behavior will find nothing to flag.