js获取客户端唯一标识,如何通过js来获取客户端的唯一性?

js获取客户端唯一标识,如何通过js来获取客户端的唯一性?js获取客户端唯一标识,如何通过js来获取客户端的唯一性?

写个服务端脚本,返回访问者的ip和mac。当然,还要支持跨域访问。客户端js只要ajax get那个脚本的url,获取信息就好了。把这些信息hash一下,存到本地,下次做验证,就知道是不是一台机器了。

js获取客户端唯一标识,如何通过js来获取客户端的唯一性?

node.js怎么获取访问者的内网ip?

js获取客户端唯一标识,如何通过js来获取客户端的唯一性?

臣妾做不到

不仅是Nodejs做不到,任何网络技术都不能做到

因为访问者的内网ip,在经过路由器的时候会做 网络地址转换(NAT),经过转换的IP已经是公网IP了,所以只能获取到访问者公网的IP.

Nodejs获取客户端公网IP的方法主要分为这几种情况:

  • Nodejs直接暴露服务

js获取客户端唯一标识,如何通过js来获取客户端的唯一性?

  • 反向代理

因为中间加了一层反向代理转发,所以

req.socket.remoteAddress

只能获取道反向代理的IP,这不是我们想要的.所以需要在反向代理转发数据时增加一个HTTP头x-real-ip,这里以nginx为例,需要配置:

proxy_set_header X-Real-IP $remote_addr

在Nodejs可以使用X-Real-IP头获取IP

js获取客户端唯一标识,如何通过js来获取客户端的唯一性?

在多层反向代理中需要除了暴露在公网的nginx设置x-real-ip头,其他后面都不要设置

JavaWeb程序如何获取客户端IP?

我是Allen 一枚JAVA程序员

这个算是比较基础的问题。

JAVAWEB,我们以servlet为例,回答如何获取客户端IP,大部分的Javaweb程序均是基于此,例如springmvc,springboot。

首先我们知道javaweb客户端与服务端的交互一般是使用HTTP/HTTPS协议,而HTTP/HTTPS是基于TCP/IP协议的,既然是基于此协议,服务端是一定有办法获取客户端请求的IP和PORT的。而一般来说,servlet请求一般格式是这样的(未封装),使用简单的Springboot程序演示。

js获取客户端唯一标识,如何通过js来获取客户端的唯一性?

包含一个servlet请求,接下来我们看下这个请求,是否为我们封装了需要的客户端信息,一般来说我们客户端用remote表示。查看HttpServletRequest源码,查看其方法,有如下方法:

js获取客户端唯一标识,如何通过js来获取客户端的唯一性?

从名字上来看,分别是获取客户端地址,获取客户端主机(名称),获取客户端端口,以及获取客户端用户,废话不多说,直接上测试代码:

js获取客户端唯一标识,如何通过js来获取客户端的唯一性?

一般本机测试会出现因为ip回环问题,导致ip都是0.0.0.0,测试不出效果,我们打包放在XX云服务器上,或者在自己的虚拟机上都可以运行测试。

访问默认端口8080,可以看到如下信息,ip,port均是如此:

js获取客户端唯一标识,如何通过js来获取客户端的唯一性?

这样,应该知道如何获取客户端IP了吧?有问题请留言,欢迎关注本号,以及相关微信号zhd5986。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 xxx@163.com 举报,一经查实,本站将立刻删除。

发表评论

登录后才能评论