浏览器端js有如何为本机生成固定的uuid?

论坛 期权论坛 知乎     
匿名知乎用户   2019-4-15 20:22   439   5
转载声明:本文由互联网用户自发贡献,部分转载来源来自知乎(zhihu.com),强烈建议您访问知乎查看完整内容。本社区不拥有所有权,也不承担任何法律责任。如有侵权,请联系optbbs@163.com。一经查实,即刻删除。
浏览器端js有什么办法可以拿到/生成本机的固定不变的udid/uuid?
分享到 :
0 人收藏

5 个回复

倒序浏览
知乎可爱用户  2级吧友 | 2019-4-15 20:22:42
泻药,这个一般用作给用户标识唯一标记用,在广告领域作用比较大,恰巧我还是有点了解。

直接js获取是没戏了,没这个api,一般的做法都是收集用户信息然后做一个hash生成。

具体收集哪些用户指纹信息,帮你简单列举一下,整个ua的值,是否开启localstorage,屏幕分辨率,比如你本地安装的插件(ie非ie区别对待,插件属性不同),计算机硬件信息,是否支持一些新浏览器的特性,比如本地有安装indexdb,ie下还有个addBehavior可以搜索下用法,大概收集好这些信息之后,如果觉得还不放心,如果支持canvas的浏览器,你可以生成一个固定的canvas图形,但是由于终端不同,最后图形的细节还是有很大差别,参见:
Canvas Fingerprinting 里面的gif图,最后再转成字符。

因为这些信息都是经常不变的,所以完全可以当成是一个客户端指纹信息了。

然后把这些所有信息做一个hash运算,这里有一个库就是这个原理编写的,代码很少:

fingerprintjs/fingerprint.js at master · Valve/fingerprintjs · GitHub

专门生成用户指纹的js,他的hash算法你可以自己写,默认选择的是MurmurHash3算法,是redis实现hash的2种算法之一,特点是高性能行运算,低概率碰撞,也是常用的负载均衡算法。自己去google吧,Austin Appleby发明的很出名的一个算法,各种语言都有实现 。。

大概浏览器端生成uuid就是这么个做法了。
知乎可爱用户  2级吧友 | 2019-4-15 20:22:43
在中国哪用这么麻烦,直接要求用手机号注册,不登陆不让看任何内容就行了,反正中国大部分的网民已经习惯这种事情了,搞一个钓鱼网站都能收集到一大堆手机号、姓名和家庭住址、身份证号。用账户进行识别,比搞什么浏览器追踪好用多了。我的浏览器noscript,privacy badger,adblock等一系列阻止浏览器指纹追踪的扩展都装着,追踪性的script都不会被浏览器加载。

如果胆子大一些,还可以连身份证号一起要过去,甚至像支付婊等一样,要求注册用户提供举着身份证的正面照片,这样的一条信息据说在二十块钱以上。反正《中华人民共和国反恐怖主义法》也模模糊糊有这样的要求,到时候就是网站做不成,把用户数据打包一卖也是一笔钱。

中国在事实上并不会处罚这种行为,甚至用Google搜索特定关键词能搜索出一大堆来,因为那些网站访问控制没做好,被Google爬到,而Google上了人工智能,可以通过对内容的描述来搜索照片。

写出来是为了警示风险,许多网站在做着这样的py交易。下图是Google image search 的一页结果。
知乎可爱用户  2级吧友 | 2019-4-15 20:22:44
也不知道怎么就看到了这个问题,撞见了就回答一下。
我在美帝读博研究方向就是基于JS的浏览器和机器指纹的生成,@小爝的回答已经很详细了,我来补充下我几个月前在信息安全顶会发表的论文的最新进展吧。说实话这方面研究已经很具体了,可以继续研究的余地不大,无非就是像@小爝说的那样,采集各种不同的feature ,将它们综合起来,得到一个最终的哈希值,以前的研究无非是用浏览器安装的插件,canvas 渲染结果,甚至声卡的渲染结果,浏览器的可用字体等等的吧。每一个feature 的熵值可能不高,综合起来就高很多了。我的最新的研究结果已经在99%以上的准确度了
但是这种做法有一个致命的缺点,就是稳定性太差,用户换个浏览器就不能fingerprint 这个用户了,所以我们的研究就用了很多跨浏览器特性,比方说显卡渲染结果,系统字体,声卡特性,屏幕,支持语言等等,最终达到同一个电脑不同浏览器也能获得同样指纹的目的。也就是说,就算你换了浏览器,我们也能一定程度上得到机器的指纹。(然而准确度我自己都觉得没法用,只能算是一个开始的尝试,后续我也会跟进这个方向)小社区上已经有一个相关专栏文章说的是我们的项目。
跨浏览器指纹追踪技术:毫无障碍的查看你的浏览记录 - 小社区专栏
(PS: 做这篇论文的时候我还是个硕士生,一作自然就成了教授。现在做了博士才知道这个一作多重要)
上边这个新闻有一个网站,可以试一下我们最新的成果
http://www.uniquemachine.org
这个网站还没做完,服务器在美国,可能会被一定程度的墙,而且其中有大量的研究用的计算,所以中间会卡一会。机器指纹部分大部分没完成,也没有一个成熟的min.js可以拿出来用。开发者就我一个人,虽然我现在还在加班加点的开发。。。(捂脸逃。。。)
具体各种不同的feature都有多大的独特性在上述链接的图片里已经说的很清楚了。这里就不扯了。
现在这个话题其实是挺火的,很多大的公司也在关注这个方面。fingerprintjs2已经有跟多成熟的公司在用了。
同时还有一个很重要的问题,虽然我们在选取feature的时候已经在小心的用尽量稳定的feature了,实际上这些feature很不稳定,随便一个浏览器升级就可以轻松改变浏览器指纹,针对这个问题,我下一个研究就是动态指纹,尽量做到即使浏览器升级,电脑安装新软件,显卡升级等等,也能生成一样或者类似的指纹。但愿能够搞出点事情来。
知乎可爱用户  2级吧友 | 2019-4-15 20:22:45
本机的固定不变的udid/uuid
——如果保存在cookies里,每次试图生成前先检查cookies,已经有了就不重新生成——也算 固定不变 了吧

然后说 生成:到专门返回uuid/guid的网站免费获取。。。。
如果还没有这样的网站?我赶紧做一个。。。。
知乎可爱用户  2级吧友 | 2019-4-15 20:22:46
可以利用浏览器缓存来生成用户唯一标识,进行跟踪。只要不清缓存就一直有效。
高级模式
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:45
帖子:5460
精华:0
期权论坛
发布
内容

下载期权论坛手机APP