现在在浏览器上编写 js 代码能获得设备信息唯一码吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a Javascript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
Javascript 权威指南第 5 版
Closure: The Definitive Guide
tctc4869
V2EX    Javascript

现在在浏览器上编写 js 代码能获得设备信息唯一码吗?

  •  1
     
  •   tctc4869 2019-11-22 09:12:28 +08:00 14811 次点击
    这是一个创建于 2173 天前的主题,其中的信息可能已经有所发展或是发生改变。

    如题,做 web 应用,要获得手机或电脑的信息唯一码。用来鉴别用户。浏览器由于安全权限问题,连客户端本地文件读写都不行,那有没有办法获得设备唯一信息码?或者是哪些浏览器可以?

    第 1 条附言    2019-11-25 10:11:58 +08:00
    首先我没有用这个窥探用户隐私的想法,我想用设备 id,或者浏览器指纹上报的方式,是防止同一个用户批量注册,更大的目的是增加一个反爬方式,当然可以用动态页面,验证码搞,这些我也知道怎么弄,但这些方式被破的例子又不是没有。

    防止同一个设备的不断发 post 请求,也就是基于客户端指纹的反爬,预防多注册问题。(集群反爬是另外的情况),我记得有通过浏览器指纹反爬的样例

    即便不能获取设备的唯一 id,但即使是用浏览器,同一个浏览器,一个浏览器指纹技术,至少在卸载之前运算出的指纹,至少保证都是一样的,当然如果能获取设备 id,那更好了。
    44 条回复    2019-11-25 09:59:53 +08:00
    MaxJin
        1
    MaxJin  
       2019-11-22 09:14:14 +08:00
    现在用 js 可以啊
    lxk11153
        2
    lxk11153  
       2019-11-22 09:15:33 +08:00
    @MaxJin #1 可以吗? 怎么写?
    tctc4869
        3
    tctc4869  
    OP
       2019-11-22 09:17:24 +08:00
    @MaxJin 所有浏览器都可以吗
    journey0ad
        4
    journey0ad  
       2019-11-22 09:17:25 +08:00 via Android
    Xuebaba
        5
    Xuebaba  
       2019-11-22 09:18:26 +08:00 via iPhone
    fingerprint.js 可以试试,但还是存在同一批机型,id 重复问题,不可避免的。服务器端配合下发 cookie 可以解决问题
    ryougifujino
        6
    ryougifujino  
       2019-11-22 09:20:00 +08:00
    @Xuebaba #5 电脑换个浏览器就不行了吧
    dreamerlv3ex
        7
    dreamerlv3ex  
       2019-11-22 09:22:18 +08:00
    用户 ID 不好用吗...
    ming61177
        8
    ming61177  
       2019-11-22 09:26:53 +08:00
    浏览器指纹?
    tctc4869
        9
    tctc4869  
    OP
       2019-11-22 09:27:43 +08:00
    @dreamerlv3ex 做比较简单的 web 应用,需求上光用户 id 不行,至少还得鉴别用户的设备,至少手机设备唯一信息必须能被确认。如果用手机原生语言开发,倒是容易获取。但成本有点高了。还得学 android 和 ios
    tctc4869
        10
    tctc4869  
    OP
       2019-11-22 09:30:34 +08:00
    @ming61177 这个换个浏览器会不会不一样了?
    weikexin
        11
    weikexin  
       2019-11-22 09:38:08 +08:00
    只能获得浏览器的唯一码,换个浏览器就变了
    fancy111
        12
    fancy111  
       2019-11-22 09:38:35 +08:00
    fingerprint 没用,这只是浏览器指纹,跟机器无关。
    用浏览器目前是无法获取唯一识别码的,浏览器没开放这个接口给你。
    APP 或者桌面软件才行,这要直接获取硬件信息,生成唯一码。目前大部分软件公司也是用这个办法收费的。
    shilyx
        13
    shilyx  
       2019-11-22 09:42:44 +08:00
    我看完全是想多了,浏览器在沙箱里获取硬件信息难,用本地存储的话还有隐身模式的存在

    最佳方案:让客户端装 native 插件
    AaronLiu00
        14
    AaronLiu00  
    PRO
       2019-11-22 09:45:38 +08:00 via Android   1
    https://audiofingerprint.openwpm.com/
    用 Audio API 获取设备指纹,与浏览器无关
    tctc4869
        15
    tctc4869  
    OP
       2019-11-22 09:49:30 +08:00
    @weikexin 那问一下,同一个浏览器的唯一码,卸载重装后,获得的还是一样的吗
    sujin190
        16
    sujin190  
       2019-11-22 09:53:36 +08:00   2
    web 的基本要求就是不能和设备用户强相关联,就算你能找到也算漏洞估计下一版本就堵上了,通用场景下用 cookie 追踪用户就已经比较高风险了
    gitJavascript
        17
    gitJavascript  
       2019-11-22 10:06:09 +08:00
    https://juejin.im/post/5dc8f8d8f265da4d0c175abe 看看这个,基本上是可以做的,不能保证 100%
    flighter
        18
    flighter  
       2019-11-22 10:14:46 +08:00
    这个我试过, 用 js 无法获取获取设备信息唯一码 (指纹), 是因为隐私原因浏览器不会开放这个接口的, 可以生成浏览器的唯一码,卸载重装后获得的唯一码 (指纹)会改变
    momocraft
        19
    momocraft  
       2019-11-22 10:15:14 +08:00   1
    大部分时候追求用户的唯一 ID 也就那么几个目的
    hkitdog     20
    hkitdog  
       2019-11-22 10:17:13 +08:00 via iPhone
    用 JS 调用 java 就行
    jin5354
        21
    jin5354  
       2019-11-22 10:28:47 +08:00   2
    工信部刚刚敦促国内互联网公司不允许获取手机 imei,否则要等着挨批
    whypool
        22
    whypool  
       2019-11-22 10:41:21 +08:00   1
    原生都难获取设备 ID,还想 js 获取,太天真了
    TomatoYuyuko
        23
    TomatoYuyuko  
       2019-11-22 10:49:30 +08:00
    fingerprint 我项目中实践过,可以负责任的告诉你非常不靠谱,
    首先是你得要求用户不能动浏览器版本,不能乱装莫名其妙的插件和安全软件(或者流氓软件)
    其次,如果是内部使用,因为配置都差不多,碰撞概率撞到你怀疑人生
    fingerprint.js 和 fingerprint2.js 我都用过,自己手写的也试过,都有各种缺点
    如果要作为准确的识别码纯前端实现几乎不可能,
    除非你去写 electron 一类的可以获取 mac 一类的
    TomatoYuyuko
        24
    TomatoYuyuko  
       2019-11-22 10:51:01 +08:00
    @fancy111 #12 其实多少有点关系,图像渲染质量和硬件相关,更换硬件有概率影响最后生成的结果,但是影响不直观就是了
    locoz
        25
    locoz  
       2019-11-22 11:02:32 +08:00
    精确到设备的做不到,换个浏览器都会有差别。浏览器指纹现成的轮子和商业级产品很多,直接用就行。
    love
        26
    love  
       2019-11-22 11:12:52 +08:00
    别想了,能得到机器唯一 ID 那就是天大的隐私 BUG,马上就会被修复还等你来用?
    fancy111
        27
    fancy111  
       2019-11-22 11:20:44 +08:00
    @TomatoYuyuko 硬件到图像渲染中间还差了一个软件呢,它如何调用处理都是它说了算。
    janxin
        28
    janxin  
       2019-11-22 11:23:01 +08:00
    不可能唯一,只能降低碰撞概率
    TomatoYuyuko
        29
    TomatoYuyuko  
       2019-11-22 11:29:44 +08:00
    @fancy111 #27 这里的软件指的就是浏览器啊,指纹原理就是看浏览器处理能力再混入一些其他参数,
    fancy111
        30
    fancy111  
       2019-11-22 11:37:56 +08:00
    @TomatoYuyuko 这不废话吗,我第一句就是说这是浏览器指纹
    dawen
        31
    dawen  
       2019-11-22 11:41:58 +08:00
    @love 正解
    zhuojiu
        32
    zhuojiu  
       2019-11-22 11:51:05 +08:00
    @Xuebaba 这个只能区别浏览器,设备不行的
    muzuiget
        33
    muzuiget  
       2019-11-22 11:54:31 +08:00
    建议放弃治疗,因为浏览器厂商和网页标准一直避免出现这种事,所以要真唯一,老老实实让用户注册好了。
    jinliming2
        34
    jinliming2  
       2019-11-22 12:42:36 +08:00
    https://github.com/WICG/ua-client-hints/blob/master/README.md
    以后估计 UserAgent 都不太好获取了,我用的 Chrome 80 貌似已经在逐步实施了。
    默认只能得到浏览器主版本号了,虽说服务端下发个头可以获取更多信息,但是我觉得未来浏览器应该可以配置不返回更多信息的……
    reus
        35
    reus  
       2019-11-22 13:36:03 +08:00
    傻逼需求
    uxstone
        36
    uxstone  
       2019-11-22 13:40:55 +08:00
    傻逼需求
    back0893
        37
    back0893  
       2019-11-22 14:36:36 +08:00
    想太多
    no1xsyzy
        38
    no1xsyzy  
       2019-11-22 14:54:16 +08:00
    @TomatoYuyuko 渲染指纹的话但凡一点抖动都会变的,因为最后是对渲染结果图片算 Hash,带雪崩。
    no1xsyzy
        39
    no1xsyzy  
       2019-11-22 15:00:15 +08:00
    我反而不是很明白这一功能的使用场景
    是同设备换浏览器无需重复登录吗?首先一直换浏览器的人本来就少,换浏览器的人常常是在放弃登录状态(比如测试无登录时的效果)
    如果要防泛洪,那你不知道现在的泛洪都是可以做真设备的,养一堆真设备。
    如果你要对某个污染源进行屏蔽,封 IP 或者 IP 段比较稳。
    fuchunliu
        40
    fuchunliu  
       2019-11-22 18:56:18 +08:00 via Android
    这些狗日的一天到晚都在想追踪用户
    Jirajine
        41
    Jirajine  
       2019-11-22 19:01:58 +08:00 via Android
    像我这种用了各种 id 指纹随机化想必也不是贵司欢迎的用户,LZ 不妨透露一下贵司或贵产品名字以供避雷?
    conn4575
        42
    conn4575  
       2019-11-23 09:38:58 +08:00 via Android
    这种实际上挺常见的,不一定是为了追踪用户,例如风控里面防止用户注册多账号褥羊毛,但是确实很大可能都
    会被大数据拿去用做唯一 ID
    myqoo
        43
    myqoo  
       2019-11-23 11:48:57 +08:00
    我就明确告诉你:不能
    tctc4869
        44
    tctc4869  
    OP
       2019-11-25 09:59:53 +08:00
    @conn4575 被你稍微猜到了一点
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5341 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 285ms UTC 07:18 PVG 15:18 LAX 23:18 JFK 02:18
    Do have faith in what you're doing.
    ubao msn 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