Present the browser as Chrome, Firefox, Safari, Edge, or a mobile browser
(Chrome Android, Safari iOS, Samsung Internet, Firefox Android) plus
Googlebot/Bingbot, at both the User-Agent and JavaScript level.
- src/fingerprint.rs: 15 internally-consistent presets, resolve(), JS config
- www/js/fingerprint-spoof.js: stealthy overrides for navigator.*,
userAgentData (Client Hints), screen, devicePixelRatio, outer size,
touch points, matchMedia, WebGL vendor/renderer, window.chrome
- Engine UA via Settings::set_user_agent with site-specific quirks disabled
- Settings UI (Browser Identity section), hamburger submenu, and a
sovereign://fingerprint debug page comparing spoofed vs real values
- Settings persist and sync via NIP-78
Verified in real WebKitGTK 2.52.6 across six presets; sovereign:// pages
are never spoofed. Sec-CH-UA request headers are deferred (needs a
WebKitGTK web-process extension).