@guardhivefraudshield/device-fingerprint
Version:
device-fingerprint client side device fingerprint module
98 lines (67 loc) ⢠3.22 kB
Markdown
# Device Fingerprint


device-fingerprint is the world's best browser fingerprinting JavaScript library. While not (yet?) as good, it's a free open source alternative to the market leading [device-fingerprint](https://github.com/guardhive/fraudshield_devicefingerprint). It is easy to use and easily extendable.
device-fingerprint is open source (MIT).
š Please don't do evil. device-fingerprint is meant to be used for good. Use this to prevent scammers and spammers for example. If you see this library being used for evil, contact me.
## Simple usage from CDN
Transpiled bundles are available now on [JSDelivr](https://www.jsdelivr.com/).
Supported module formats:
- UMD: https://cdn.jsdelivr.net/npm/@guardhivefraudshield/device-fingerprint/dist/index.umd.js
- CommonJS: https://cdn.jsdelivr.net/npm/@guardhivefraudshield/device-fingerprint/dist/index.cjs.js
- ESM: https://cdn.jsdelivr.net/npm/@guardhivefraudshield/device-fingerprint/dist/index.esm.js
### And on the web page:
```javascript
<script src="https://cdn.jsdelivr.net/npm/@guardhivefraudshield/device-fingerprint/dist/index.umd.js"></script>
<script>
DeviceFingerprint.getFingerprint().then(
function(data) {
console.log(data);
}
);
</script>
<!-- or -->
<script>
import('https://cdn.jsdelivr.net/npm/@guardhivefraudshield/device-fingerprint/dist/index.esm.js')
.then(({ getFingerprint }) => {
getFingerprint().then((data) => { console.log(data)})
})
</script>
```
You can also call `DeviceFingerprint.getFingerprintData()` to get a full JSON object with all its components.
## Options
You can use the `setOption` method to change the behavior of the library. Currently it takes only one option.
| option | type | example | what it does |
| ------- | -------- | ----------------------------------- | --------------------------------------------------------------------------------------------------- |
| exclude | string[] | ['webgl', 'system.browser.version'] | removes components from the fingerprint hash. An excluded top-level component improves performance. |
example usage:
```
DeviceFingerprint.setOption('exclude', ['webgl', 'system.browser.version'])
```
## Install with NPM
Installing from NPM:
```bash
npm install @guardhivefraudshield/device-fingerprint
```
and in your code
```javascript
import { getFingerprint } from "@guardhivefraudshield/device-fingerprint";
```
To implement device-fingerprint in a Next.js app, you can use a component [like this](examples/nextjs.tsx).
## Build it yourself
Clone this repo and then run
```
yarn install
yarn build
```
## Components included in fingerprint
- audio fingerprint
- canvas fingerprint
- webgl fingerprint
- available fonts and how they render
- videocard
- browser languages and time zone
- browser permissions
- available plugins
- a ton of screen details including media queries
- and a bunch of smaller things