Skip to content

Instantly share code, notes, and snippets.

@maximgorbatyuk
Forked from zmts/fingerprint.md
Created November 26, 2019 03:39
Show Gist options
  • Save maximgorbatyuk/0c31cf5d7199739b1e16ff27a73dc300 to your computer and use it in GitHub Desktop.
Save maximgorbatyuk/0c31cf5d7199739b1e16ff27a73dc300 to your computer and use it in GitHub Desktop.
Get browser fingerprint example (fingerprintjs2)

Get browser fingerprint example (fingerprintjs2)

import * as Fingerprint2 from 'fingerprintjs2'

function _getFingerprint () {
  return new Promise((resolve, reject) => {
    async function getHash () {
      const options = {
        excludes: {
          plugins: true,
          localStorage: true,
          adBlock: true,
          screenResolution: true,
          availableScreenResolution: true,
          enumerateDevices: true,
          pixelRatio: true,
          doNotTrack: true
        }
      }

      try {
        const components = await Fingerprint2.getPromise(options)
        const values = components.map(component => component.value)
        console.log('fingerprint hash components', components)

        return String(Fingerprint2.x64hash128(values.join(''), 31))
      } catch (e) {
        reject(e)
      }
    }

    if (window.requestIdleCallback) {
      console.log('requestIdleCallback')
      requestIdleCallback(async () => resolve(await getHash()))
    } else {
      console.log('setTimeout')
      setTimeout(async () => resolve(await getHash()), 500)
    }
  })
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment