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).
38 lines
914 B
CSS
38 lines
914 B
CSS
/* Browser Identity debug page — sovereign://fingerprint
|
|
* Imports the shared sovereign:// base theme. */
|
|
@import url("sovereign://sovereign-base.css");
|
|
|
|
body { max-width: 1000px; }
|
|
|
|
.card {
|
|
border: 1px solid var(--border);
|
|
border-radius: var(--radius);
|
|
padding: 8px 12px;
|
|
margin: 12px 0;
|
|
}
|
|
|
|
table {
|
|
width: 100%;
|
|
border-collapse: collapse;
|
|
margin: 12px 0;
|
|
font-size: 13px;
|
|
}
|
|
th, td {
|
|
text-align: left;
|
|
vertical-align: top;
|
|
padding: 6px 10px;
|
|
border-bottom: 1px solid var(--border);
|
|
word-break: break-all;
|
|
}
|
|
th {
|
|
color: var(--primary);
|
|
border-bottom: 2px solid var(--primary);
|
|
}
|
|
td:first-child { font-weight: bold; white-space: nowrap; }
|
|
td.mono, code { font-family: var(--font); }
|
|
.real { color: var(--muted); }
|
|
.spoofed { color: var(--primary); }
|
|
.limitations { margin: 12px 0 12px 20px; }
|
|
.limitations li { margin: 6px 0; }
|
|
.actions { display: flex; gap: 8px; flex-wrap: wrap; }
|