java,js获取本机唯一标识

请问java和js 能获取哪些本机的唯一标识,比如设备id之类的,我想用ip,但是好像有的浏览器能获取到ip 有的不能获取。

我用https://www.cnblogs.com/sghy/... 这里的方法获取到了ip,就是有的浏览器获取的是网线的ip,有的获取的wifi的ip。我是网线和wifi一起开的

阅读 10.1k
3 个回答

java 可以获取本机网卡 mac 地址,可以作为唯一标识。

js 在浏览器中是一种被封装很多的语言,其能力受到浏览器标准的制约,简单说就是浏览器提供什么能力,它才有什么样的能力,因此没法获取 mac 地址,如果被获取了,这属于浏览器的安全漏洞,因为这样广告商就能通过唯一 id 来定位你,从而记录你的行为偏好。

获取 ip 很难作为唯一标识,ip 分为两种:
1、局域网 ip
2、设备公网出口 ip

首先 js 获取不到局域网 ip(后台在云端情况),即使获取到了,也不能作为唯一标识,因为重复的概率很大,而且还要考虑到使用的是哪一张网卡进行通信,浏览器中运行的 js 本身不能主动选择网卡出局。
js 能通过访问云端服务,由云端服务返回 ip 的方式获取设备公网出口 ip,但是一样是不能作为唯一标识,因为同一个设备公网出口 ip,对应了很多客户端,使用该 ip,多人会被识别为一人。

解决方法

我认为较好的解决方法,就是通过 cookie 或者本地缓存保存唯一标识,为空时就重新赋值,不为空就带上,这是目前绝大多数 js 使用的方法,除此之外没有更通用的解决方法了。

其它方案

1、使用 Java(带有签名的小程序)
2、使用签名的 Javascript,在 FF(和一般的 Mozilla)中获得比普通 JS 更高的权限(但设置起来相当复杂)

楼主你要先介绍清楚你的需求场景:你的的意思是B/S架构吗?Java运行在后端,前端是浏览器运行JS?然后获取客户的唯一标示?
如果是这样的话,你怕是无法实现。但是你通过Session是可以区分不同的浏览器的,哪怕是同一台电脑上的不同浏览器。

如果是浏览器,请搜索「浏览器指纹」,查阅相关技术。如果是客户端/服务器,可以通过系统 API 获取硬件信息,自己根据一定规则计算出来一个(相对)唯一的 HASH

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题