Fast browser and server library for fingerprinting with no dependencies. Uses SHA512.
Installation
NPM: npm install eight
CDN: //cdn.jsdelivr.net/npm/eight@<VERSION>/eight.js
TLDR usage
console.info(require("eight")()) // Node.js
console.info(window.eight()()) // IE6+ browser
> E9D0C22416262B2F51A4402318060A206620BED2
Detailed Usage
Eight returns instance which takes several defined optional parameters and any another parameter is hashed together with it:
import eight from "eight"
const fingerprint = eight({
hash: "ripe160", // <sha512 || sha256 || ripe160>
resolution: true, // <boolean>
flash: true, // <boolean>
plugins: true, // <boolean>
strong: false, // <boolean>
anythingelse: "ABCD" // additional entropy
})
fingerprint()
// E9D0C22416262B2F51A4402318060A206620BED2
fingerprint({ ip: "187.30.93.12" })
// 2416262B2F51A4402318060A206620BED2E9D0C2
fingerprint({ ip: "39.120.11.2" })
// 4402318060A206620BED2E9D0C22416262B2F51A
API
Fallback into null, if user doesn't posses enough data due to incognito mode or privacy extensions:
fingerprint({ fallback: true })
Check Flash and fingerprint graphic card rendering defects and installed version:
fingerprint({ flash: true })
Pass any param that needs to considered
It's possible to customize fingerprinting with own parameters which are passed as params. This way anything (like cookies, ip adress or username) can be considered.
fingerprint({ ip: "133.98.32.55" })
// 2416262B2F51A4402318060A206620BED2E9D0C2
fingerprint({ cookies: JSON.stringify(cookies) })
// 20BED2E9D0C22416262B2F51A4402318060A2066
fingerprint({ whatever: "ABCDEF" })
// F51A4402318060A206620BED2E9D0C22416262B2
Licence and code
Eight is a semi-private obfuscated repository under MIT licence. We ( (with security through obscurity in mind) try to secure our code against plugins which fake headers, browsers and try to make browser private.