V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
seaguest
V2EX  ›  问与答

设备指纹算法

  •  
  •   seaguest · 2021-08-27 10:41:05 +08:00 · 2244 次点击
    这是一个创建于 1186 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在希望能够通过采集手机设备的一些软硬件合法信息(手机型号,UA,系统版本,时区,语言...)按照某种算法生成一个唯一的设备指纹。

    我初步的想法是,这一组属性(具体能采集那些信息还在研究,最终会是一组带权重的属性)通过算法生成指纹 ID,每当来一组新的属性,也计算对应的 ID,然后去查询已有设备的指纹 ID 附近的进行比较,如果误差小于一定范围则认为是一个设备,否则就是新设备。

    看网上有推荐引擎貌似可以做这个事情,但是有点复杂,而且还是基于用户协同过滤,这里只有设备信息。希望这个算法不要太复杂,目前还没有很好的思路,大家有没有什么好的建议?

    参考文档: https://zhuanlan.zhihu.com/p/68852244 https://cloud.tencent.com/developer/article/1751246 https://cloud.tencent.com/developer/article/1762076

    第 1 条附言  ·  2021-08-28 20:06:57 +08:00
    找到了一个浏览器指纹开源项目:
    https://github.com/fingerprintjs/fingerprintjs

    同时还有一个 android 指纹的项目:
    https://github.com/fingerprintjs/fingerprint-android

    里面也是根据搜集的各种信息生成的指纹,不确定是否有容错的功能。我打算把每个属性值归一化生成一个数值,根据属性权重组合查询排序搜索附近的 N 条,进行匹配,如果匹配到了就认为是同一设备,否则就插入,虽然简单写也比较可行了。
    6 条回复    2021-08-28 18:21:28 +08:00
    Ariver
        1
    Ariver  
       2021-08-27 10:44:59 +08:00 via iPhone
    可以参考浏览器指纹
    相关讨论会多一些。
    Co1a
        2
    Co1a  
       2021-08-27 10:45:05 +08:00 via iPhone
    Hash+Cuckoo Filter
    kop1989
        3
    kop1989  
       2021-08-27 10:47:06 +08:00
    关键就是针对你的业务需求来决策采集信息以及对应权重。

    而你没有暴露你的真实业务需求,别人怎么可能能够给予你帮助。
    seaguest
        4
    seaguest  
    OP
       2021-08-27 10:49:27 +08:00
    @Co1a
    要能支持某个属性一定的误差,因为采集的信息可能有点波动
    seaguest
        5
    seaguest  
    OP
       2021-08-27 15:04:04 +08:00
    @Ariver
    看了一个浏览器指纹项目:https://github.com/jackspirou/clientjs

    看代码里面大概是把采集的属性信息组合,然后哈希,貌似没有什么容错的处理。譬如某个属性稍微有点变化,可能生成的指纹就变化了。
    Jacky23333
        6
    Jacky23333  
       2021-08-28 18:21:28 +08:00 via Android
    @seaguest 要不然叫算法?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5712 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 154ms · UTC 03:44 · PVG 11:44 · LAX 19:44 · JFK 22:44
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.