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

设备指纹算法

  •  
  •   seaguest · 98 天前 · 712 次点击
    这是一个创建于 98 天前的主题,其中的信息可能已经有所发展或是发生改变。

    现在希望能够通过采集手机设备的一些软硬件合法信息(手机型号,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 条附言  ·  96 天前
    找到了一个浏览器指纹开源项目:
    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  
       98 天前 via iPhone
    可以参考浏览器指纹
    相关讨论会多一些。
    Co1a
        2
    Co1a  
       98 天前 via iPhone
    Hash+Cuckoo Filter
    kop1989
        3
    kop1989  
       98 天前
    关键就是针对你的业务需求来决策采集信息以及对应权重。

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

    看代码里面大概是把采集的属性信息组合,然后哈希,貌似没有什么容错的处理。譬如某个属性稍微有点变化,可能生成的指纹就变化了。
    Jacky23333
        6
    Jacky23333  
       97 天前 via Android
    @seaguest 要不然叫算法?
    关于   ·   帮助文档   ·   API   ·   FAQ   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   2986 人在线   最高记录 5497   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 10:21 · PVG 18:21 · LAX 02:21 · JFK 05:21
    ♥ Do have faith in what you're doing.