Skip to content

Release 0.5.0: real fingerprint mode for persistent profiles - #5

Merged
huanthuyon671 merged 5 commits into
mainfrom
feat/real-fingerprint-mode
Oct 4, 2026
Merged

huanthuyon671 merged 5 commits into
mainfrom
feat/real-fingerprint-mode

Conversation

@huanthuyon671

Copy link
Copy Markdown
Contributor

Why

Accounts signed in by hand (Google, store consoles, dashboards) read a spoofed fingerprint as a new device. A real profile keeps Chrome's own identity so one tool can manage both anti-detect and real profiles, driven over the same CDP endpoint.

What

  • fingerprint: { mode: 'real' } on a profile (library, --fingerprint real on the CLI, fingerprint field over MCP); stored JSON without mode stays generated.
  • Launching a real profile generates, overrides and injects nothing: no UA/Client Hints, no auto-attach, no kernel or anti-detect flags, no default timezone or --lang.
  • Real profiles keep Chrome's security defaults: no --no-sandbox, Safe Browsing, popup blocking and updates stay on.
  • navigator.webdriver stays false; WebRTC proxy policy is kept when a proxy is set.
  • Real + engine: kernel|inject fails with INVALID_CONFIG. Launch results, lock files and browser status report engine: real.
  • Docs: anti-detect (what real mode does and does not protect), cli, library, mcp, configuration, llms.txt, CHANGELOG.

Checks

  • npm run typecheck, npm test (217 passed, 10 skipped e2e), npm run build
  • BROWSER_PROFILES_E2E=1 real-profile e2e on Chrome 154 (macOS), headed and headless, without --no-sandbox

Not verified yet: a real Google sign-in avoiding the new-device check.

🤖 Generated with Claude Code

namvippro and others added 5 commits October 4, 2026 20:08
A profile with fingerprint { mode: 'real' } resolves to engine "real": no generated fingerprint, no UA/Client Hints override, no injected script, no auto-attach, no kernel or anti-detect flags, and TZ/--lang only when the profile pins them. Asking a real profile for engine kernel or inject throws an actionable INVALID_CONFIG error. Lock files, reuse and launch results carry the resolved engine. A real profile gets no default timezone or GPU at create, and entering real mode drops the stored timezone.

resolveTimezone moves to proxy.ts to keep launch.ts from growing.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
profile.create and profile.update take fingerprint: generated | real (--fingerprint on the CLI). A real profile rejects platform; switching to real keeps only the language. browser.status reports each browser's engine and profile.list shows a Fingerprint column.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
State what a real profile does and does not protect, the new fingerprint field on create/update, engine "real" in open/status output, and the Unreleased changelog entry.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Real profiles hold logged-in accounts and browse untrusted pages, so they no longer inherit BASE_FLAGS (--no-sandbox, --disable-background-networking, --disable-client-side-phishing-detection, --disable-popup-blocking, --disable-sync and the rest). REAL_BASE_FLAGS adds only --no-first-run and --no-default-browser-check. Spoofing modes are unchanged.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@huanthuyon671 huanthuyon671 changed the title feat: real fingerprint mode for persistent profiles Release 0.5.0: real fingerprint mode for persistent profiles Oct 4, 2026
@huanthuyon671
huanthuyon671 merged commit 14f2033 into main Oct 4, 2026
4 checks passed
@huanthuyon671
huanthuyon671 deleted the feat/real-fingerprint-mode branch October 4, 2026 13:18
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant