目标
H5用户在未登录前,经常也需要记录游客身份,便于记录用户操作习惯,给用户推荐相关产品。H5项目是运行在浏览器环境的,浏览器没有提供相关设备ID的信息。很多项目会随机生成一个UUID,并持久化存储在localStorage,但是localStorage也有被清除的风险,就需要一个不会变也不会被清掉的值作为游客身份的唯一标识。
方案
fingerprintjs
原理
通过浏览器canvas绘画出一张指定的图,将绘画出来的图片转为base64格式,然后再将base64内容通过指定编码方式转化为fingerprintID。因为不同浏览器,由于浏览器api、版本、系统等原因,绘画出来的图片会存在非常细微的差异,人眼很难辨别,所以转换出来的base64会不一样。
安装fingerprintjs
npm i @fingerprintjs/fingerprintjs -S
使用
import FingerprintJS from "@fingerprintjs/fingerprintjs";
const getFingerPrintID = async () => {
const fpPromise = await FingerprintJS.load();
const result = await fpPromise.get();
return result.visitorId;
}
const id = await getFingerPrintID();
console.log(id)
生成32位字符串


本文介绍了如何在H5项目中解决游客身份问题,通过fingerprintjs利用浏览器的canvasAPI生成独特的fingerprintID,以避免localStorage风险。方法是绘制指定图片,转化成base64并编码为稳定的唯一标识符。


fingerprintjs&spm=1001.2101.3001.5002&articleId=135975602&d=1&t=3&u=cb1bbe4889de4d5db38c42949d1b4d86)
2478

被折叠的 条评论
为什么被折叠?



