v1.1.0 — coherent fingerprint / profile control
Veil still ships your real Chrome identity by default. Opt in with a Fingerprint to present one internally consistent identity instead. The rule is coherence, not spoof-count.
Added
Fingerprintapplied as one coherent set — timezone, locale, geolocation derived together (page.applyFingerprint/Browser.launch({ fingerprint }))- Seeded WebGL / canvas / audio noise — deterministic per profile, not per call
- Preset profiles (
PRESETS) +Fingerprint.random(seed?) - MCP
veil_set_fingerprinttool - Consistency guard so client-hint / Accept-Language values can't drift
Notes
- Everything CDP can set is set browser-level (no JS getter to unmask); only what CDP can't reach is injected on the prototype and masked to
[native code] - Not spoofed:
navigator.oscpu(Firefox-only), WebGL-canvastoDataURLread-back;screen.colorDepthrides an injected getter - 134 tests pass; core stealth suite unchanged
Full changelog: CHANGELOG.md