Chromium/Chrome port of the GhostPrint Firefox extension. It randomizes ("farbles") your browser fingerprint per origin + session — canvas, WebGL, audio, plugins and hardware concurrency — so that EFF's Cover Your Tracks reports a randomized fingerprint, similar to Brave's native protection.
- Open
chrome://extensions(oredge://extensions,brave://extensions, …). - Enable Developer mode (top-right).
- Click Load unpacked and select this folder.
This is a Manifest V2 build, kept compatible with Chromium versions that
still load MV2 extensions. The fingerprinting logic in inject.js is
page-context JavaScript and is unchanged. The port only touches the extension
plumbing:
- Still Manifest V2 (
browser_action, non-persistent background page,<all_urls>inpermissions, array-formweb_accessible_resources) — same shape as the Firefox original. browser.*→chrome.*inbackground.jsandpopup.js(Chromium has nobrowsernamespace).- Callback-based storage: MV2
chrome.*APIs don't return Promises (that only arrived with MV3), sochrome.storagecalls are wrapped in small Promise helpers to keep theasync/awaitflow working. onMessagereplies viasendResponse+return trueinstead of returning a Promise (Chrome doesn't support the Promise-return form).- PNG icons (16/32/48/128) generated from
ghost.svg, because Chromium does not accept SVG for toolbar/manifest icons even under MV2.
- The seed is injected synchronously at
document_start. As in the original, the on/off toggle persists a setting but the content script always injects; disabling fully takes effect by design only on reload, and the protections list/toggle are reflected in the popup UI. - Inline-script injection can be blocked by a page's Content-Security-Policy on strict sites — same limitation as the Firefox original.