背景
实际使用FJ生成指纹ID时发现在同一浏览器多开下,不知道谷歌浏览器多开的,就不要往下看了,没啥意义,就会生成不同的UUID,这和我们的预期不太一样,我们就是为了针对某一个设备而进行的限制,估计没有做多开的连这个问题都没有发现。
FJ的使用,可参考这篇
FingerprintJS生成浏览器指纹-CSDN博客
原理
FJ的组件颗粒度太细,比如谷歌插件的多少也算在里面,多开环境下,每个浏览器安装的插件也可能各不相同,FJ也意识到这个问题,所以允许用户排除一些组件,来降低uuid的唯一性变化
fingerprintjs/docs/extending.md at v3 · fingerprintjs/fingerprintjs · GitHub
这是具体的文档
排除以下组件就可以做到浏览器多开下同一uuid了
const excludeComponents = [// "applePay",// "architecture",// "audio","audioBaseLatency",// "canvas",// "colorDepth","colorGamut","contrast","cookiesEnabled",// "cpuClass","deviceMemory","domBlockers","fontPreferences","fonts","forcedColors","hardwareConcurrency","hdr","indexedDB","invertedColors","languages","localStorage","math","monochrome","openDatabase",// "osCpu","pdfViewerEnabled",// "platform","plugins","privateClickMeasurement","reducedMotion","reducedTransparency","screenFrame","screenResolution","sessionStorage",// "timezone",// "touchSupport","vendor","vendorFlavors","webGlBasics","webGlExtensions"]
每个人都应该自行探索以下,所以这里并不给出完整版代码,只给出最核心的逻辑,其余大家自行尝试。