一、背景
前端能拿到的用户信息非常有限,客户端通过请求权限的方式能拿到的设备的唯一标识,而客户端只能拿到一些非唯一的设备参数(例如:IMEI、MAC地址),折中的方案是把所有能拿到的设备参数组合起来标识用户。
二、使用
仓库地址: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 能将传入的回调函数在浏览器的空闲时段执行,适用于执行一些低优先级的任务。
2020年5月29日
[…] 使用 fingerprintjs2 获取用户指纹 […]