首页   注册   登录
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 · 63 天前 · 4031 次点击
    这是一个创建于 63 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

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

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

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

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