A multi-profile anti-detect browser manager β the open, self-hosted equivalent of Dolphin Anty / Multilogin / GoLogin. Each profile is a fully isolated browser identity: its own persistent storage and cookies, its own coherent fingerprint, and its own proxy.
The default engine is Camoufox β a patched build of Firefox that spoofs fingerprints (canvas, WebGL, fonts, WebRTC, navigator, screen, audio) at the native C++ level. That is dramatically harder to detect than the JavaScript injection most DIY tools use, and it passes CreepJS, BrowserScan, Pixelscan and BrowserLeaks out of the box.
Each profile can instead run on Chromium (for sites that block Firefox, and for true mobile emulation) or on a real Android device in the official emulator (a genuine Chrome-for-Android engine β nothing spoofed, because it is a phone). All three are selectable per profile.
Anti-detect browsers are standard tooling for multi-account management on your own accounts: agencies running many client ad/social accounts, e-commerce sellers with multiple storefronts, QA teams testing geo/device variations, privacy research, and web scraping of public data. This project is for those uses.
Do not use it to violate the terms of service of sites you access, to commit fraud, to evade bans you were legitimately given, or to create fake identities. Those uses are illegal in many jurisdictions and are not supported.
- Three browser engines, per profile β pick Camoufox (patched Firefox, the
strongest native-level stealth), Chromium (Playwright Chromium), or Android
(a real device) on each profile. Chromium is for sites that block Firefox, and it
renders phone profiles as a true mobile interface (real device viewport, high
DPR, touch, mobile layout) β emulation Firefox/Gecko can't do. Fingerprints
(navigator, screen, WebGL GPU strings, touch) are pinned on both Camoufox and
Chromium and stay identical across launches;
navigator.webdriveris hidden on Chromium too. (The Android engine is a real device, so there's nothing to pin.) - Real Android engine (AVD) β for a phone that isn't emulated at all: the
Android engine boots a genuine Android device in the official Android Emulator,
so the browser inside is real Chrome-for-Android (real ARM-ish Blink, real
touch/GPU) β nothing spoofed, because it is a phone. It's free and set up in one
click from the app: the installer fetches the Android SDK + a system image (a few
GB), scrcpy (the mirror window), and, if needed, a small Java runtime, streaming
live progress. The device runs headless and is shown through the scrcpy mirror
β a clean window with real touch/keyboard input β which sidesteps the emulator's own
window (it black-screens on many PCs: a missing
opengl32sw/ layered-window bug in the emulator's Qt UI, unrelated to the phone itself). Requires hardware virtualization (WHPX / KVM / Hypervisor.framework) and uses hardware GPU rendering for speed. The first boot of a device takes ~1β2 min; after that it quickboots in seconds (a snapshot is saved on close and restored next launch). Trade-off vs the emulated engines: each profile is one Android VM (real RAM/CPU, ~4β5 GB disk), so it's for authenticity, not running dozens at once. Proxy support is limited to an unauthenticated HTTP/HTTPS proxy (the emulator can't take SOCKS or user/password proxies on its command line); such proxies apply to the emulated engines but not to Android profiles. - Desktop app β runs in a native window (pywebview / WebView2), not a browser
tab.
python desktop.py. - Profile management β create, edit, clone, delete, and bulk-create N
fully-randomized profiles at once. Fully isolated persistent storage per profile
(
~/.antidetect/profiles/<id>). - One-click phone profiles β a dedicated π± New Phone button: pick a real
device (Pixel, Galaxy, OnePlus, Xiaomi, or iPhone presets) and hit Create &
launch. Phone profiles default to the Chromium engine, which renders them as
a true phone β real mobile viewport, high DPR, touch, and mobile page layout β with
a coherent per-device fingerprint (UA, screen, GPU strings, touch) pinned across
launches. The window opens like a phone emulator: a chromeless, phone-shaped
portrait window (no tabs or address bar β just the screen) sized to the exact
device resolution. It lands on a built-in phone home screen (clock, a
search/address box, and quick-launch app icons) instead of a blank page, and every
page shows floating on-screen βΉ βΊ back/forward buttons β so there's always
something to see and a way to navigate (
Alt+β/βand the mouse back button work too). On the Camoufox engine, phones instead run a coherent Firefox-for-Android identity (mobile UA, phone screen + DPR,Linux armv8lplatform, mobile GPU strings, Android-only font set). iPhone is offered on both, but is a weaker spoof than Android (an iPhone runs WebKit while both engines are non-WebKit), so an engine-level probe can still tell. - Deep fingerprint spoofing β a coherent device fingerprint where everything
agrees and stays identical across launches. Randomized and pinned per profile:
- OS, GPU (from Camoufox's validated real-device DB, via
webgl_config), screen size, colour depth, device-pixel-ratio - CPU cores, locale, timezone, language, region
- Canvas anti-aliasing offset, audio sample rate, font set + metric spacing seed (the real canvas/audio/font noise vectors)
- Battery state, media-device counts (cams/mics/speakers), max touch points, Do-Not-Track, WebRTC local-IP
navigator.webdriverhidden. Verified: same profile β identical GPU/screen/CPU/DPR/audio/locale every launch.
- OS, GPU (from Camoufox's validated real-device DB, via
- Proxy management β HTTP / HTTPS / SOCKS5 per profile, one-click live test (exit IP, geo, latency), and GeoIP locale/timezone-matching to the proxy's country.
- Proxy pool & rotation β paste a list of proxies (any common format:
host:port,proto://host:port,host:port:user:pass,proto://user:pass@host:port) and pick a mode per profile: manual (one fixed proxy), random (a fresh pool pick each launch), or rotate (round-robin through the pool, advancing every launch). Test the whole pool at once β each proxy is verified concurrently for exit IP, country and latency. Inspired by chameleon-ip-rotator. - Cookie management β import/export (Playwright JSON format) plus realistic random cookie generation (proper GA/Facebook/DoubleClick formats across real tracker domains) to warm up a profile's jar and verify isolation.
- One-click Randomize All β regenerate a profile's entire fingerprint and reseed a fresh cookie jar in one action.
- Automation API β drive any profile from your own Python scripts with the full
fingerprint/proxy/cookies applied (
antidetect.automate.launch).
Runs on all three. The recommended way is browser mode (run.py) β it works
everywhere with no GUI toolkit needed.
# 1. Install Python deps (use python3 / pip3 on Linux & macOS)
pip install -r requirements.txt
# 2. Download the Camoufox browser for your OS (one-time, ~500 MB)
python -m camoufox fetch
# 3. Start it β opens the dashboard in your normal browser
python run.pyOr just double-click a launcher (does step 3 for you):
- Windows:
START.bat - Linux / macOS:
./start.sh(first run:chmod +x start.sh)
- Chromium β needed only for profiles set to the Chromium engine (including the
emulated phone profiles). Install the browser once:
python -m playwright install chromium
- Real Android β no manual setup: pick the Android engine, then use the in-app one-click installer on the Android setup screen. It fetches the Android SDK + a system image (a few GB), the scrcpy mirror window, and a portable Java runtime if your system Java is older than 17. Requires hardware virtualization (WHPX on Windows, KVM on Linux, Hypervisor.framework on macOS).
python desktop.py- Windows uses the Edge WebView2 runtime (preinstalled on Windows 10/11).
- Linux/macOS need a WebView backend for pywebview β install one of:
pip install "pywebview[qt]"(Qt) or the GTK stack (sudo apt install python3-gi gir1.2-webkit2-4.1on Debian/Ubuntu). - If you'd rather not install those, just use
python run.pyβ same app, in your browser.
The best way to ship this: a folder containing the app and the browser engine together, so the end user never downloads anything β they unzip and double-click.
pip install pyinstaller
pyinstaller build.spec --noconfirm # build the app exe
python -m camoufox fetch # ensure the browser is installed locally
python package_portable.py # bundle exe + browser -> dist/ManyFaces-Portable.zipThis produces dist/ManyFaces-Portable.zip. The end user just unzips it and
runs the app (ManyFaces.exe on Windows, ManyFaces on Linux); it
finds the bundled browser/ folder next to it and launches instantly β no 500 MB
download, no GitHub dependency, fully offline. This sidesteps slow/flaky GitHub
access entirely.
Build on the OS you're targeting: the bundled Camoufox binary is platform-specific, so build the Windows package on Windows and the Linux package on Linux. The same
build.spec/package_portable.pywork on both (the spec omits the Windows-only icon automatically on Linux).
If you prefer a single small exe that downloads the browser on first run (needs a working connection), build only the executable:
pip install pyinstaller
pyinstaller build.spec --noconfirmThe result is dist/ManyFaces.exe (~160 MB). Just launch it β it opens the
native window and, on first run, downloads the Camoufox browser (~500 MB) into the
user cache with an in-app progress screen (live %, MB, speed, and ETA).
The downloader is built for slow/flaky links (e.g. throttled GitHub access):
- 8 parallel connections to beat per-connection throttling (~2Γ faster).
- Resumable β progress is saved to disk, so a dropped connection or even closing and reopening the app continues from where it stopped, never restarting the 500 MB.
- Self-healing β auto-retries through transient network drops; a manual Retry button appears if it can't recover on its own.
The build does not bundle the browser binary, keeping the exe small; the Playwright driver that launches it is bundled.
Verified end-to-end from the packaged exe: server boot, engine detection, profile create / bulk-create, and a real browser launch. Any server error is also written to
%USERPROFILE%\.antidetect\error.logfor troubleshooting (no console needed).
Python version note: verified working on Python 3.14 (Camoufox 135 beta). The management server and API also run without Camoufox installed β everything works except actually launching a browser window, which returns a clear error telling you to run the
camoufox fetchstep.
from antidetect.automate import launch
with launch("<profile-id>", headless=True) as ctx:
page = ctx.new_page()
page.goto("https://abrahamjuliot.github.io/creepjs/")
page.screenshot(path="creep.png")Async version: antidetect.automate.launch_async.
run.py -> starts uvicorn + opens dashboard
antidetect/
api.py -> FastAPI: profile CRUD, launch, proxy test, cookies, Android setup
browser.py -> Camoufox + Chromium session manager (threaded, headful)
android.py -> real Android (AVD) engine: SDK install, emulator boot, scrcpy mirror
automate.py -> scripting entry points (sync + async)
fingerprint.py -> coherent fingerprint generation (desktop + phone presets)
proxy.py -> proxy connectivity/geo testing
cookies.py -> cookie import/export/random
models.py -> Pydantic schemas
db.py -> SQLite profile storage
config.py -> paths & settings
web/
index.html/app.js/style.css -> dashboard (vanilla JS)
mobile_start.html -> phone home screen served to emulated-phone profiles
Profile metadata lives in SQLite (~/.antidetect/antidetect.db); persistent browser
data lives on disk per profile. The Android SDK, AVDs, and scrcpy live under
~/.antidetect/android/.
- Full BrowserForge fingerprint serialization (pin every attribute, not just core).
- Authenticated / SOCKS proxy support for the real-Android engine (via a local forwarding proxy, since the emulator only takes an unauthenticated HTTP proxy).
- GPU-mode selector for the Android engine (software / host / auto) in the setup UI.
- Team features: multi-user, roles, shared/encrypted proxy pool.
- Profile "warm-up" automation and cookie robot.
- Fingerprint quality scoring against CreepJS/Pixelscan in-app.
- Tag/folder organization, bulk actions, import/export of profiles.