使用 fingerprintjs2 获取用户指纹

一、背景

前端能拿到的用户信息非常有限,客户端通过请求权限的方式能拿到的设备的唯一标识,而客户端只能拿到一些非唯一的设备参数(例如:IMEIMAC地址),折中的方案是把所有能拿到的设备参数组合起来标识用户。

二、使用

仓库地址:https://github.com/Valve/fingerprintjs2

安装

npm install fingerprintjs2 -S

示例

/**
 * @method getFinger
 * @description 获取匿名用户唯一标识
 * @return {Promise} 用户指纹
 */
function getFinger () {
    const Fingerprint2 = require('fingerprintjs2')
    return new Promise(resolve => {
        if (window.requestIdleCallback) {
            requestIdleCallback(function () {
                Fingerprint2.getV18(function (result) {
                    resolve(result)
                })
            })
        } else {
            setTimeout(function () {
                Fingerprint2.getV18(function (result) {
                    resolve(result)
                })
            }, 500)
        }
    })
}

(async () => {
    const f = await getFinger()
    console.log('指纹: ', f) // 7592820773a07e4653af2b2515c83efd
})();

三、其他

requestIdleCallback 能将传入的回调函数在浏览器的空闲时段执行,适用于执行一些低优先级的任务。

四、参考

你应该知道的requestIdleCallback

发表评论

电子邮件地址不会被公开。 必填项已用*标注