Skip to content

tocen/browser-fingerprint-shuffler

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

1 Commit
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Browser Fingerprint Shuffler

Browser extension that perturbs common fingerprinting surfaces with deterministic, per-origin noise. It keeps sites functional while nudging canvas, WebGL, audio, and navigator fingerprints so they no longer match a stable profile.

What it does

  • Adds low-level noise to canvas readouts and WebGL fingerprints.
  • Jitters audio context data to break identical hashes.
  • Fuzzes navigator properties (hardware concurrency, device memory, languages).
  • Uses a persistent salt stored in chrome.storage.local, with optional per-origin seeds for stable-but-unique noise per site.
  • Logs before/after fingerprints when debugging is enabled.
  • Example console output in DevTools: Console log showing shuffled fingerprint

Loading the unpacked extension in Chrome

  • git clone or download this folder to your machine.
  • Open Chrome and visit chrome://extensions/.
  • Toggle Developer mode (top right).
  • Click Load unpacked and select the project root (browser-fingerprint-shuffler).
  • Ensure the extension is enabled. Open a page and check the DevTools console for the Fingerprint Shuffled... message when hooks run.

Walkthrough video:

installation.mp4

Configuration and debug flag

Settings live in core/config.js.

  • Toggle debug: true to log storage operations, hook installs, and before/after fingerprint summaries.
  • Each surface can be switched on/off (enableCanvasNoise, enableWebGLMasking, enableAudioNoise, enableNavigatorFuzz) and tuned via strength knobs (canvasNoiseStrength, webglJitter, audioNoiseStrength).
  • perOriginFingerprint: true derives a different seed per site; set to false for a single global fingerprint across all origins.
  • You can also flip fpConfig.debug = true from the DevTools console on a page after load for ad-hoc troubleshooting.

How it works (quick tour)

  • core/config.js: runtime toggles and strengths (including debug).
  • core/salts.js: persistent salt management via chrome.storage.local.
  • core/hash.js / core/prng.js: deterministic seeds and pseudo-random noise.
  • content/bootstrap.js: wires salt/seed/noise into fpEnv.
  • Hooks (content/hooks_canvas.js, hooks_webgl.js, hooks_audio.js, hooks_navigator.js): apply noise/masking to each surface.
  • content/test_fingerprint.js: samples fingerprints before/after hooks; logs when debug is on.
  • content/content_main.js: orchestrates hook installation and prints the before/after fingerprint summary.

Verifying it works

  • Open any page with the extension enabled.
  • In DevTools Console, you should see Fingerprint Shuffled. Before: ... After: ....
  • With debug: true, additional [fp] logs show salts, seeds, and sampler outputs.

Notes

  • All scripts run as a content script at document_start to intercept early fingerprint reads.
  • The project is dependency-free; edits to config take effect after reloading the extension or the tab.

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages

  • JavaScript 100.0%