`

java获取客户端IP地址以及mac地址

阅读更多
1、在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。如果使用了反向代理软件,用request.getRemoteAddr()方法获取的IP地址是:127.0.0.1或192.168.1.110,而并不是客户端的真实IP。

      经过代理以后,由于在客户端和服务之间增加了中间层,因此服务器无法直接拿到客户端的 IP,服务器端应用也无法直接通过转发请求的地址返回给客户端。但是在转发请求的HTTP头信息中,增加了X-FORWARDED-FOR信息。用以跟踪原有的客户端 IP地址和原来客户端请求的服务器地址。当我们访问index.jsp/时,其实并不是我们浏览器真正访问到了服务器上的index.jsp文件,而是先由代理服务器去访问index.jsp ,代理服务器再将访问到的结果返回给我们的浏览器,因为是代理服务器去访问index.jsp的,所以index.jsp中通过 request.getRemoteAddr()的方法获取的IP实际上是代理服务器的地址,并不是客户端的IP地址。

  于是可得出获得客户端真实IP地址的方法一:
public String getRemortIP(HttpServletRequest request) {
    if (request.getHeader("x-forwarded-for") == null) {
        return request.getRemoteAddr();
    }
    return request.getHeader("x-forwarded-for");
}

    获得客户端真实IP地址的方法二:
public String getIpAddr(HttpServletRequest request) {
    String ip = request.getHeader("x-forwarded-for");
    if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
        ip = request.getHeader("Proxy-Client-IP");
    }
    if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
        ip = request.getHeader("WL-Proxy-Client-IP");
    }
    if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
        ip = request.getRemoteAddr();
    }
    return ip;
}

  可是,如果通过了多级反向代理的话,X-Forwarded-For的值并不止一个,而是一串IP值,究竟哪个才是真正的用户端的真实IP呢?

  答案是取X-Forwarded-For中第一个非unknown的有效IP字符串。如:
X-Forwarded-For:192.168.1.110, 192.168.1.120, 192.168.1.130, 192.168.1.100
用户真实IP为: 192.168.1.110
         
2、获取客户端MAC地址
调用window的命令,在后台Bean里实现 通过ip来获取mac地址。方法如下:

    public String getMACAddress(String ip){
        String str = "";
        String macAddress = "";
        try {
            Process p = Runtime.getRuntime().exec("nbtstat -A " + ip);
            InputStreamReader ir = new InputStreamReader(p.getInputStream());
            LineNumberReader input = new LineNumberReader(ir);
            for (int i = 1; i < 100; i++) {
                str = input.readLine();
                if (str != null) {
                    if (str.indexOf("MAC Address") > 1) {
                        macAddress = str.substring(str.indexOf("MAC Address") + 14, str.length());
                        break;
                    }
                }
            }
        } catch (IOException e) {
            e.printStackTrace(System.out);
        }
        return macAddress;
    }
1
0
分享到:
评论
2 楼 gangzi162 2012-04-20  
java获取外网客户端MAC地址怎么获取呢?
1 楼 dingoc 2009-10-09  
这个对于通过路由器上网的客户端,取到每个客户端的mac地址不可能吧.

相关推荐

    java 获取客户端ip mac地址

    ### Java 获取客户端 IP 和 MAC 地址 在Java Web开发中,有时我们需要获取客户端的IP地址甚至是MAC地址,以便进行安全验证、用户行为追踪等操作。本文将详细介绍如何通过Java来实现这一功能。 #### 一、获取客户端...

    java获取客户端ip及mac地址

    ### Java 获取客户端 IP 地址 在 Web 开发中,获取客户端 IP 地址是一项非常重要的功能,尤其是在需要记录用户活动、实现地理位置定位...以上就是关于如何在 Java 中获取客户端 IP 地址及 MAC 地址的相关知识点介绍。

    java中获取客户端IP MAC信息

    可以通过java获取客户端IPMAC主机名等信息。下载就能用,欢迎下载!

    Java获取客户端IP及Mac地址(同网段).rar

    在Controller类获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的。但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实IP地址了。如果使用了反向代理软件,用...

    JAVA如何获取客户端IP地址和MAC地址

    JAVA获取客户端IP地址和MAC地址 在JAVA中获取客户端的IP地址和MAC地址是非常重要的,特别是在服务器端需要记录客户端的信息时。下面我们将详细介绍如何获取客户端的IP地址和MAC地址。 一、获取客户端IP地址 在...

    java编程实现获取服务器IP地址及MAC地址的方法

    在Java编程中,获取服务器的IP地址和MAC地址是常见的需求,特别是在网络通信和系统管理中。本篇文章将详细介绍如何使用Java实现这一功能,包括针对单网卡和多网卡环境的情况。 首先,获取服务器的IP地址通常涉及到`...

    获取客户端IP地址

    获取客户端提交申请时的ip地址,例如用于微信支付的获取客户端ip,根据配置不不同,有可能ipv4或ipv6,当服务器在自己电脑上,做测试是,可以使用127.0.0.1替代localhost

    通过客户端IP地址获取客户端MAC地址

    通过客户端的ip地址获取mac地址,本文文件本人测过,可用,请大家放心下载,绝不骗积分

    java中通过request获取IP以及MAC地址.java

    获取用户请求IP地址 根据IP地址获取mac地址

    获取客户端IP、MAC

    首先,获取客户端IP地址通常涉及到服务器端的编程。在Java中,可以通过`java.net`包中的`Socket`或`HttpServletRequest`类来获取。当客户端发起HTTP请求时,服务器可以接收到请求对象,从中提取出客户端的IP地址。...

    通过java获取远程机器mac地址

    在对网内主机进行监控时需要通过java获取远程机器的mac地址

    js获取客户端的IP mac地址

    #### 二、获取客户端IP地址 ##### 1. 使用JavaScript获取IP地址 在Web端获取客户端的IP地址可以通过多种方式实现,最常用的方法是利用HTTP请求发送到服务器端处理,然后再由服务器返回给客户端。这种方式可以避免...

    web端不限制浏览器获取客户端MAC+IP地址进行权限安全校验

    web端项目通过浏览器访问的项目获取客户端mac地址及ip地址,进行登录权限校验; web端通过浏览器访问的项目增加权限; 本次项目由于对数据安全性要求较为严格,所以增加了用户在登录时对于客户端电脑的ip地址和mac...

    java获取linux服务器上的IP操作

    在本文中,我们将详细介绍Java获取Linux服务器上的IP操作,包括Linux服务器上的网络接口、回环接口、获取IP地址的方法等。 Linux服务器上的网络接口 在Linux服务器上,网络接口是用来发送和接受数据包的基本设备...

    asp.net获取客户端mac地址

    然而,由于HTTP协议的设计原因,直接通过服务器端代码获取客户端的MAC地址并不像获取其他客户端信息(如IP地址)那样直接。以下是一些获取客户端MAC地址的方法和相关知识点: 1. **JavaScript方法**: - 由于...

    使用JAVA获取客户端MAC地址.pdf

    在Java编程环境中,获取客户端的MAC(Media Access Control)地址是一项常见的需求,特别是在网络通信或者设备识别等场景中。MAC地址是硬件级别的唯一标识符,它对应于网络接口控制器(NIC),在网络通信中用于标识...

    java通过ip获取mac地址的工具

    java中通过ip获取远程客户端的mac地址,支持跨平台

    java根据本地IP获取mac地址的方法

    此外,在获取客户端请求地址时,我们可以使用HttpServletRequest对象的getHeader()方法获取客户端的IP地址。我们可以使用"x-forwarded-for"、"Proxy-Client-IP"、"WL-Proxy-Client-IP"等header来获取客户端的IP地址...

    java通过ip获取客户端Mac地址的小例子

    以下是一个简单的Java示例,展示如何通过IP地址获取客户端的Mac地址: 首先,我们需要理解这个例子的基本流程: 1. 执行操作系统命令:通常,我们不能直接通过Java API获取Mac地址,而是需要借助操作系统提供的命令...

    一件获取本机IP、主机名、和Mac地址小工具

    在IT领域,了解和操作计算机网络的基本信息是至关重要的,其中IP地址、主机名和MAC地址是网络通信的基础。本文将详细阐述这三个概念及其在实际应用中的重要性。 首先,让我们来谈谈IP(Internet Protocol)地址。IP...

Global site tag (gtag.js) - Google Analytics