V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
slogon
V2EX  ›  程序员

如何获取访问设备的唯一 ID?

  •  
  •   slogon · 2019-12-19 11:34:13 +08:00 · 6552 次点击
    这是一个创建于 1820 天前的主题,其中的信息可能已经有所发展或是发生改变。

    对于访问的 pc,ios,Android 各种终端,如何获取一个唯一的设备 ID 来标识呢?有没有做过风控系统的兄弟,指点一下,万分感激!

    第 1 条附言  ·  2019-12-19 14:29:38 +08:00
    补充一下:公司打算自己整个简单的风控系统,对于访问 web 系统的各种终端会设定各种规则,所以要对他们进行标识。因为之前从来没接触过风控,查了下,专业术语叫设备指纹,貌似怎么定义是保密的?。。。
    33 条回复    2019-12-20 14:25:43 +08:00
    zangsy
        1
    zangsy  
       2019-12-19 11:36:29 +08:00 via iPad
    mac 吧
    chairuosen
        2
    chairuosen  
       2019-12-19 11:42:40 +08:00
    我能想到的:取一些硬件信息通过算法做个 hash 写到硬盘某个犄角旮旯里。
    但是取多一些还是少一些呢?
    另外延伸出的问题,一个电脑由 n 个模块组成,一个模块一个模块的拆掉换新,从哪一刻起,它就不是原来电脑了呢?
    lihongjie0209
        3
    lihongjie0209  
       2019-12-19 11:43:11 +08:00   ❤️ 2
    首先你需要确定什么是'唯一'?

    换一个网卡算不算同一个设备?
    换一个 CPU 算不算同一个设备?
    换一个主板算不算同一个设备?


    一旦你确认了什么是唯一, 那么你就可以

    CPUId(CPU 的 ID) + Mac(网卡的 ID) + BoardId(主板 ID)
    HongJay
        4
    HongJay  
       2019-12-19 11:43:38 +08:00
    都不好获得。如果监管严格的话
    vinew
        5
    vinew  
       2019-12-19 11:44:22 +08:00 via iPhone
    账户实名认证
    imnpc
        6
    imnpc  
       2019-12-19 11:46:04 +08:00
    走身份证验证+支付宝实名认证
    laravel
        7
    laravel  
       2019-12-19 11:50:01 +08:00
    单片机的话 mac 地址
    手机 app:手机号
    公众号网页、小程序:openid
    lihongjie0209
        8
    lihongjie0209  
       2019-12-19 11:56:43 +08:00
    @chairuosen #2 这是个哲学问题 :dog
    matepi
        9
    matepi  
       2019-12-19 12:00:17 +08:00
    这件事情越来越不可行了
    设备的监管越来越严格,只有早期手机可用,但早期有部分安卓手机的 mac、安卓 id 还很糟糕
    第三方认证、手机实名认证还靠谱
    还有黑的玩法么,直接要求读取通信录之类的信息,然后搞摘要、算距离之类。当然黑吃黑也很容易
    wangyzj
        10
    wangyzj  
       2019-12-19 12:51:59 +08:00
    @laravel 又看到你了
    补充
    电脑可以 mac 地址,显卡指纹
    手机可以 mac 地址,ios 要用广告 uid
    opengps
        11
    opengps  
       2019-12-19 13:11:34 +08:00
    很多是获取不到的,尤其是 web 访问,只能增加一堆复杂逻辑的入参进去来避免渗透伪造
    YouKnowIt
        12
    YouKnowIt  
       2019-12-19 13:19:05 +08:00
    这个叫设备指纹,可以收集多种设备数据合成唯一值作为指纹数据,自己搞一堆问题哦,有风控厂商在做,lz 可以看看 dingxiang-inc 点 com 这样的公司
    caryqy
        13
    caryqy  
       2019-12-19 14:36:45 +08:00
    补充,mac 电脑可以用序列号
    slogon
        14
    slogon  
    OP
       2019-12-19 14:40:30 +08:00
    @chairuosen 因为第一次接触风控,之前没表述清楚,各种终端访问 web 系统,要通过一段 js 来获取设备信息,然后为每个设备生成一个唯一 id,风控里叫设备指纹,想知道风控厂商是通过哪些参数,怎么生成的这个设备指纹。
    rioshikelong121
        15
    rioshikelong121  
       2019-12-19 14:42:17 +08:00
    web fingerprinter , 但是不是很准。要在唯一性和稳定性之间取得平衡。
    slogon
        16
    slogon  
    OP
       2019-12-19 14:45:00 +08:00
    @YouKnowIt 谢谢,公司就是不想花钱,自己整个简单点的。。。
    murmur
        17
    murmur  
       2019-12-19 14:45:25 +08:00 via Android
    运营商似乎有 sdk 可以直接拿手机号?
    gam2046
        18
    gam2046  
       2019-12-19 16:18:47 +08:00
    不想花钱?风控不花钱,自然这个钱会流到羊毛党手里的。

    如果条件允许,就接入实名制(比如芝麻信用),任你怎么注册,反正关键操作的唯一判断依据就是身份信息。随便你注册多少个账号,更换多少个设备都没用。
    yinzhili
        19
    yinzhili  
       2019-12-19 16:21:43 +08:00
    PC 的话可以获得主板的序列号
    VYSE
        20
    VYSE  
       2019-12-19 16:30:52 +08:00 via Android
    https://amiunique.org/
    参考头条被曝光过的 canvas fingerprint
    zhangalong69
        21
    zhangalong69  
       2019-12-19 16:43:53 +08:00
    通过登录的账号和设备的 qimei 或者 imei 号做关联
    BigbyWolf
        22
    BigbyWolf  
       2019-12-19 20:16:20 +08:00 via iPhone
    fingerprint 除图还有 audio,API/UA/字体 /硬件 /语言等乱七八糟都读到的都做了透明混淆,成功致使每次登陆 web 豆瓣都会被腾讯的特色 CAPTCHA 一瞬永久封停,可以参考 Trace-Online Tracking Protection / browserleaks.com
    BGgrK0Zv5Hp17lm3
        23
    BGgrK0Zv5Hp17lm3  
       2019-12-19 22:04:02 +08:00 via iPhone
    网页的话只能通过 js 留文件在缓存,服务端记录对应浏览器信息和 IP 语言等,以及登录 ID。坑在于浏览器缓存可以轻易删除,防君子不防小人。
    BGgrK0Zv5Hp17lm3
        24
    BGgrK0Zv5Hp17lm3  
       2019-12-19 22:05:32 +08:00 via iPhone
    安卓 iOS 的话 风控价值在全网范围的黑库数据,业务企业自己很难搞到,不如花钱请专业的公司做专业的事
    xiaochun41
        25
    xiaochun41  
       2019-12-19 22:28:00 +08:00
    pc 端,可以考虑获取 mac 地址或者硬盘号
    移动端,可以获取 imei
    wunonglin
        26
    wunonglin  
       2019-12-19 22:35:32 +08:00
    怎么那么多人说 mac 地址啊。。这个值是可以修改的啊,怎么能算得上是唯一?
    locoz
        27
    locoz  
       2019-12-19 22:39:17 +08:00 via Android
    设备相关的唯一 ID 目前来说就是防君子不防小人,如果非常需要进行控制的话,像内部系统这种还是直接对账号限制比较简单粗暴,出问题直接找对应的人就行了。
    InkStone
        28
    InkStone  
       2019-12-20 10:00:50 +08:00
    我建议还是直接找现成解决方案吧,这玩意儿比你想象的要复杂。因为几乎所有参数都能修改,风控不仅仅是风控,还要包含一套完整的反作弊解决方案。
    shijianit
        29
    shijianit  
       2019-12-20 10:04:51 +08:00
    android 10 之后就获取不到 imei 了
    moloach
        30
    moloach  
       2019-12-20 11:00:14 +08:00
    现在对这种跟隐私相关的东西越来越难以获得了
    YouKnowIt
        31
    YouKnowIt  
       2019-12-20 11:26:10 +08:00
    @slogon 不花钱,你们自己研发的成本是很大的,技术能力不一定能达到,没有鄙视的意思,这里面坑很多。首先兼容性上,android,ios 都有兼容性问题,有很多老表提到 mac,imei 这类设备编号值,但在高版本系统上获取的是随机或者获取不到,那要怎么稳定解决呢,这些常见的采集数据,很容易被伪造,了解一下一键改机,所以要从哪些维度收集数据呢,这个是行业机密,大概有个两三百个维度吧,貌似;其次安全性上,你用来获取设备指纹的代码不能轻易被人逆向,篡改注入代码吧,那么对于你们自己写的获取设备指纹的代码要怎么保护呢,难不成你们自己重新搞一套保护方案出来。只要你们达不到顶尖的技术水准,要逆你们的代码真的很容易,因为有很多放出来的自动化工具。相反,用成熟的第三方公司的方案,唯一的烦恼就是花钱,但相比自行研发的成本依然要低很多。我觉得这个要对比你们公司的体量,比如是小公司,没人也没时间,直接用第三方的没啥好说的;如果是体量大的公司,时间紧迫的话,先用第三方的,直接上线看效果,然后慢慢培养内部人员,按复杂程度,慢慢替换第三方的
    a1562619919
        32
    a1562619919  
       2019-12-20 13:27:21 +08:00 via Android
    @laravel 手机号不行
    daxiongz
        33
    daxiongz  
       2019-12-20 14:25:43 +08:00
    对准确性要求没那么高的情况下,可以采用这个方案 https://github.com/Valve/fingerprintjs2
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1896 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 16:14 · PVG 00:14 · LAX 08:14 · JFK 11:14
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.