如何获取访问设备的唯一 ID? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
slogon
V2EX    程序员

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

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

    对于访问的 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 访问,只能增加一堆复杂逻辑的入参进去来避免渗透伪造
    Jf35jxN3fwBXyeLh
        12
    Jf35jxN3fwBXyeLh  
       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
    shakaraka
        26
    shakaraka  
    PRO
       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
    现在对这种跟隐私相关的东西越来越难以获得了
    Jf35jxN3fwBXyeLh
        31
    Jf35jxN3fwBXyeLh  
       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     Solana     3107 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 31ms UTC 12:36 PVG 20:36 LAX 05:36 JFK 08:36
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86