https://github.com/aduros/thimble
Anti-fingerprinting browser extension.
https://github.com/aduros/thimble
Last synced: 6 months ago
JSON representation
Anti-fingerprinting browser extension.
- Host: GitHub
- URL: https://github.com/aduros/thimble
- Owner: aduros
- License: gpl-3.0
- Created: 2023-11-16T03:47:07.000Z (almost 2 years ago)
- Default Branch: main
- Last Pushed: 2023-12-25T19:30:07.000Z (almost 2 years ago)
- Last Synced: 2025-03-29T03:01:42.464Z (6 months ago)
- Language: TypeScript
- Homepage:
- Size: 410 KB
- Stars: 5
- Watchers: 2
- Forks: 0
- Open Issues: 2
-
Metadata Files:
- Readme: README.md
- License: LICENSE.txt
Awesome Lists containing this project
README
![]()
Thimble
Privacy extension to protect your browser fingerprint ☝️
## About
> Development status: ⚡ Alpha
Thimble is a web browser extension that helps protect against [device fingerprinting](https://en.wikipedia.org/wiki/Device_fingerprint). By applying subtle random noise to browser APIs that are commonly used for fingerprinting, Thimble aims to make it harder to passively perform cross-site tracking.
## Installing
1. Download the [latest release](https://github.com/aduros/thimble/releases/latest/download/thimble.zip) from GitHub.
2. Unzip the file somewhere to get a `thimble/` directory.
3. In Chrome:
- Go to `chrome://extensions`
- Enable developer mode.
- Load the `thimble/` directory as an unpacked extension.In theory this extension should support Firefox and Safari, but it hasn't been widely tested. If you run into problems, please [open an issue](https://github.com/aduros/thimble/issues).
## Notes
As of this writing (November 2023), Thimble evades these fingerprinters:
- [FingerprintJS Free](https://fingerprintjs.github.io/fingerprintjs/)
- [FingerprintJS Commercial](https://fingerprint.com/demo/) (clear cookies between tests)
- [CreepJS](https://abrahamjuliot.github.io/creepjs/)
- [Browserleaks Canvas](https://browserleaks.com/canvas)
- [Browserleaks Fonts](https://browserleaks.com/fonts)
- [Browserleaks WebGL](https://browserleaks.com/webgl)You should get a randomized fingerprint upon each reload.
Thimble modifies these browser APIs:
- Audio: Applies imperceptible noise to audio data readouts.
- Battery state: Randomizes between "charging" and "discharging". Randomize battery level between 90 and 100%.
- CPU cores: Randomizes between 2 and the actual CPU core count.
- Canvas: Applies imperceptible noise to pixel data readouts.
- Device memory: Randomizes reported available memory.
- "Do not track" preference: Randomly toggled.
- Fonts: Applies imperceptible noise to DOM size calculation used for font detection.
- GPU info: Randomizes WebGL parameters, disables APIs for getting unmasked GPU vendor and renderer.
- Language: Appends a random private-use language tag. Limits number of languages to 1.
- Media formats: Randomly flip between "probably" and "maybe" media format support.
- Media devices: Shuffles available media devices.
- Screen dimensions and window position: Randomized.
- Storage quota: Randomly reports between 2 and 32 GB available.
- User agent: Appends a random suffix.The main goal is to add as much noise as possible to break fingerprinting without impacting user experience.
## Developing
```
npm install
npm run build
```The extension will be built to `./dist`, which can be loaded as an unpacked extension in your browser.