当前位置:文档之家› Java获取浏览器端MAC地址

Java获取浏览器端MAC地址

192.168.1.100 用户真实 IP 为: 192.168.1.110
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++) {
//所以又第二个 if 判断 你可先在你机器上 cmd 测试下 nbtstat -A 命令 当然得有 一个你可以 ping 通的 //网络 ip 地址,然后根据你得到的结果中 mac 地址显示方式来确定这个循环取值
} } } catch (IOException e) { e.printStackTrace(System.out); } return macAddress; } 附: 通过代理了的客户端 ip 地址获取方式 于是可得出获得客户端真实 IP 地址的方法一: public String getRemortIP(HttpServletRequest request) { if (request.getHeader("x-forwarded-for") == null) { return request.getRemoteAddr(); } return request.getHeader("x-forwarded-for"); }
str = input.readLine(); if (str != null) {
if (str.indexOf("MAC Address") > 1) { macAddress = str.substring(str.indexOf("MAC
Address") + 14, str.length()); break;
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,
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 地址的方法二: public String getIpAddr(HttpServletRequest request) {
String ip = request.getHeader("x-forwarded-for"); if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {
} if (str.indexOf("MAC பைடு நூலகம்ddress") > 1) {
macAddress = str.substring(str.indexOf("MAC 地 址") + 14, str.length());
break; } //以上有个判断,不同系统 cmd 命令执行的返回结果展示方式不一样,我测试的 win7 是 MAC 地址
1 人同问 求获取客户端 mac 地址 java 代码,急需急需,麻烦了
2012-06-15 20:21 提问者: 董超 73
我来帮他解答
满意回答
2012-06-18 14:47
通过 ip 获取指定 ip 地址的 mac 地址,ip 可以通过请求 request 获取, request.getRemoteAddr(); (当然获取 ip 也不是在任何情况下都有效的) 通过了 Apache,Squid 等反向代理软件就不能获取到客户端的真实 IP 地址。 您也许需要通过其他的方式获取,(见附) //获取 mac 如下 (nbtstat -A IPAddress 是对给定的 IP 地址解析其主机名。如果 不能正常解析它的主机 //名的话,有可能是防火墙屏蔽了。也可能是在 DNS 中将 NetBios 解析选项屏 蔽了。) public String getMACAddress(String ip){
相关主题