请问java和js 能获取哪些本机的唯一标识,比如设备id之类的,我想用ip,但是好像有的浏览器能获取到ip 有的不能获取。
我用https://www.cnblogs.com/sghy/... 这里的方法获取到了ip,就是有的浏览器获取的是网线的ip,有的获取的wifi的ip。我是网线和wifi一起开的
请问java和js 能获取哪些本机的唯一标识,比如设备id之类的,我想用ip,但是好像有的浏览器能获取到ip 有的不能获取。
我用https://www.cnblogs.com/sghy/... 这里的方法获取到了ip,就是有的浏览器获取的是网线的ip,有的获取的wifi的ip。我是网线和wifi一起开的
楼主你要先介绍清楚你的需求场景:你的的意思是B/S架构吗?Java运行在后端,前端是浏览器运行JS?然后获取客户的唯一标示?
如果是这样的话,你怕是无法实现。但是你通过Session是可以区分不同的浏览器的,哪怕是同一台电脑上的不同浏览器。
10 回答11.2k 阅读
15 回答8.2k 阅读
5 回答4.9k 阅读✓ 已解决
4 回答3.1k 阅读✓ 已解决
8 回答6k 阅读
2 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
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 更高的权限(但设置起来相当复杂)