LOGO OA教程 ERP教程 模切知识交流 PMS教程 CRM教程 开发文档 其他文档  
 
网站管理员

fingerprint2生成的用户指纹重复踩坑

admin
2023年8月4日 0:53 本文热度 737

fingerprint2 一款开源设备指纹采集器,在github上有7k的Star,看起来是那么的让人放心,今天聊一聊我们在使用这个库中猜到的坑。

本篇所讲的fingerprint2版本为2.0.6

生成的指纹大面积重复问题!!!

生成的指纹大面积重复问题!!!

生成的指纹大面积重复问题!!!

重要的问题讲三次。

fingerprint2会取的设备信息

*获取不到值时返回: not available #获取不到值时返回: error

  1. userAgent:navigator.userAgent

  2. language : 语言

  3. colorDepth: 返回目标设备或缓冲器上的调色板的比特深度 screen.colorDepth *

  4. deviceMemory: 以千兆字节为单位返回设备内存量。该值是通过舍入到最接近的2的幂并将该数除以1024而给出的近似值。链接  *

  5. pixelRatio: 像素比 devicePixelRatio  *

  6. hardwareConcurrency:navigator.hardwareConcurrency返回可用于运行在用户的计算机上的线程的逻辑处理器的数量 *

  7. screenResolution: 检测屏幕宽高,并根据屏幕方向矫正返回值[width,height]

  8. availableScreenResolution:返回屏幕分辨率[width,height],无头浏览器无法获取。*

  9. timezoneOffset: 返回从当前区域设置(主机系统设置)到UTC的时区差异(以分钟为单位)链接

  10. timezone:时区 *

  11. sessionStorage: 是否支持sessionStorage,不支持时返回错误 #

  12. localStorage: 是否支持localStorage #

  13. indexedDb:是否支持indexedDb #

  14. addBehavior:此时可能未定义body或以编程方式删除

  15. openDatabase: 返回是否支持Web SQL

  16. cpuClass:返回浏览器系统的 CPU 等级,一般无法获取 *

  17. platform: 返回表示浏览器平台的字符串,该规范允许浏览器始终返回空字符串,因此不要依赖此属性来获得可靠的答案.链接 *

  18. doNotTrack: 返回用户的“不跟踪”设置。如果用户请求不被网站,内容或广告跟踪,则为“1”。一般结果为* 。

  19. plugins:返回浏览器安装的插件列表。*

  20. canvas: 如果浏览器支持canvas则返回生成baes64数据。*

  21. webgl:返回浏览器对webgl绘图协议的支持情况汇总 *

  22. webglVendorAndRenderer: 返会显卡型号相关信息 *

  23. adBlock:返回是否安装去广告插件。

  24. hasLiedLanguages: 返回用户是否改变了首选语言

  25. hasLiedResolution:返回用户是否改变了分辨率

  26. hasLiedOs:返回用户是否改变了操作系统

  27. hasLiedBrowser:返回用户是否改变了浏览器

  28. touchSupport: 返回最大触摸点数,是否支持touch,是否支持ontouchstart事件]

  29. fonts:返回从64种字体种筛选出的可用字体

  30. fontsFlash:Flash字体枚举,如果没有swfobject,不会触发。

  31. audio: 返回音频指纹

  32. enumerateDevices:navigator.mediaDevices 请求可用媒体输入和输出设备的列表,例如麦克风,相机,耳机等

工作逻辑

  1. 取到以上值后[数组],将数组转为值字符串

  2. 将取到的字符串做为key 传入x64hash128方法,生成指纹

指纹重复原因

x64hash128算法是固定的,所以在key相同的时,生成的指纹是相同的。 fingerprint2在手机上重复的概率会更高,绝大多数用户不会去修改手机的配置,所以重复指纹主要在发生在同一型号的产品。

推荐解决生成指纹重复方案

因为我们主要面对移动终端用户,所以fingerprint2生成的值出现大面积重复(实践中的血与泪)。

  • 通过接口获取用户ip值。

  • FingerPrint2继续使用默认配置,在传入的key中手动添加IP条件。

Fingerprint2.get(components=>{

   components.push({

       key:'ip',

       value:'192.168.1.1' //通过接口获取的到ip

   });

   let murmur = Fingerprint2.x64hash128(components.join(""), 31); //生成指纹信息

})

加入ip信息,可以在很大程度上规避同型号的产品生成指纹信息相同的场景,切记不是百分之百。比如同一型号设备在同一wifi下生成的指纹信息也是有很大概率相同的。

结言

现在浏览器提供的设备信息越来越少,跟踪用户信息这只是一个思路,如果大家有奇技淫巧,欢迎交流。


该文章在 2023/8/4 0:53:20 编辑过
关键字查询
相关文章
正在查询...
点晴ERP是一款针对中小制造业的专业生产管理软件系统,系统成熟度和易用性得到了国内大量中小企业的青睐。
点晴PMS码头管理系统主要针对港口码头集装箱与散货日常运作、调度、堆场、车队、财务费用、相关报表等业务管理,结合码头的业务特点,围绕调度、堆场作业而开发的。集技术的先进性、管理的有效性于一体,是物流码头及其他港口类企业的高效ERP管理信息系统。
点晴WMS仓储管理系统提供了货物产品管理,销售管理,采购管理,仓储管理,仓库管理,保质期管理,货位管理,库位管理,生产管理,WMS管理系统,标签打印,条形码,二维码管理,批号管理软件。
点晴免费OA是一款软件和通用服务都免费,不限功能、不限时间、不限用户的免费OA协同办公管理系统。
Copyright 2010-2025 ClickSun All Rights Reserved