Java获取浏览器端MAC地址
JS获取客户端IP地址、MAC和主机名的7个方法汇总

JS获取客户端IP地址、MAC和主机名的7个⽅法汇总今天在搞JS(javascript)获取客户端IP的⼩程序,上⽹搜了下,好多在现在的系统和浏览器中的都⽆效,很⽆奈,在Chrome、FireFox中很少搞到直接利⽤ActiveX获取IP等的JS脚本。
下⾯的代码是我在所有windowsNT5.0及以上的系统上都测试通过的,给出代码:⼀、使⽤JS获取客户端IP的⼏个⽅法⽅法⼀(只针对IE且客户端的IE允许AcitiveX运⾏,通过平台:XP,SERVER03,2000)。
获取客户端IP代码:复制代码代码如下:<HTML><HEAD><TITLE>GetLocalIP</TITLE></HEAD><BODY>获取IP:<script language="JavaScript"> function GetLocalIPAddr(){ var oSetting = null; var ip = null; try{ oSetting = new ActiveXObject("rcbdyctl.Setting"); ip = oSetting.GetIPAddress; if (ip.length == 0){ return "没有连接到Internet"; } oSetting = null; }catch(e){ return ip; } return ip; } document.write(GetLocalIPAddr()+"<br/>") </script></BODY></HTML>⽅法⼆(所有的平台及浏览器):获取客户端处在⽹络中的IP,前提是客户得联⽹。
使⽤的是新浪接⼝。
复制代码代码如下:<html><head><meta http-equiv="Content-Type" content="text/html; charset=gb2312"><title>JavaScript获取客户端IP[利⽤新浪接⼝]</title></head><body><script type="text/javascript" src="/ip/" charset="gb2312"></script> <!--获取接⼝数据,注意charset --><script type="text/javascript">document.writeln("IP地址:"+ILData[0]+"<br />"); //输出接⼝数据中的IP地址document.writeln("地址类型:"+ILData[1]+"<br />"); //输出接⼝数据中的IP地址的类型document.writeln("地址类型:"+ILData[2]+"<br />"); //输出接⼝数据中的IP地址的省市document.writeln("地址类型:"+ILData[3]+"<br />"); //输出接⼝数据中的IP地址的document.writeln("地址类型:"+ILData[4]+"<br />"); //输出接⼝数据中的IP地址的运营商</script></body></html>⽅法三(所有的平台及浏览器):使⽤的搜狐接⼝复制代码代码如下:<script src="/cityjson?ie=utf-8"></script><script type="text/javascript">document.write(returnCitySN["cip"]+','+returnCitySN["cname"])</script>⽅法四:太平洋电脑⽹IP查询接⼝:把0.0.0.0换成IP地址,页⾯上还有其他⽆关内容,这些内容是告诉我们哪些接⼝可以调⽤、接⼝调⽤参数和使⽤⽅法等通过上边的js接⼝调⽤就可以判断⽤于属于哪个城市,直接显⽰该城市的相关信息了,对于需要城市切换的⽹站,⾸次判断⽤户来源⾮常有帮助。
JAVA如何获取客户端IP地址和MAC地址

JAVA如何获取客户端IP地址和MAC地址本⽂介绍了JAVA如何获取客户端IP地址和MAC地址,分享给⼤家,具体如下:1.获取客户端IP地址public String getIp(HttpServletRequest request) throws Exception {String ip = request.getHeader("X-Forwarded-For");if (ip != null) {if (!ip.isEmpty() && !"unKnown".equalsIgnoreCase(ip)) {int index = ip.indexOf(",");if (index != -1) {return ip.substring(0, index);} else {return ip;}}}ip = request.getHeader("X-Real-IP");if (ip != null) {if (!ip.isEmpty() && !"unKnown".equalsIgnoreCase(ip)) {return ip;}}return request.getRemoteAddr();}为什么不直接使⽤request.getRemoteAddr();⽽要在之前判断两个请求头"X-Forwarded-For"和"X-Real-IP"X-Forwarded-For: client1, proxy1, proxy2, proxy3其中的值通过⼀个逗号+空格把多个IP地址区分开, 最左边(client1)是最原始客户端的IP地址, 代理服务器每成功收到⼀个请求,就把请求来源IP地址添加到右边。
所有我们只取第⼀个IP地址X-Real-IP,⼀般只记录真实发出请求的客户端IP解决⽤localhost访问ip为0:0:0:0:0:0:0:1的问题public String getIp(HttpServletRequest request) throws Exception {String ip = request.getHeader("X-Forwarded-For");if (ip != null) {if (!ip.isEmpty() && !"unKnown".equalsIgnoreCase(ip)) {int index = ip.indexOf(",");if (index != -1) {return ip.substring(0, index);} else {return ip;}}}ip = request.getHeader("X-Real-IP");if (ip != null) {if (!ip.isEmpty() && !"unKnown".equalsIgnoreCase(ip)) {return ip;}}ip = request.getHeader("Proxy-Client-IP");if (ip != null) {if (!ip.isEmpty() && !"unKnown".equalsIgnoreCase(ip)) {return ip;}}ip = request.getHeader("WL-Proxy-Client-IP");if (ip != null) {if (!ip.isEmpty() && !"unKnown".equalsIgnoreCase(ip)) {return ip;}}ip = request.getRemoteAddr();return ip.equals("0:0:0:0:0:0:0:1") ? "127.0.0.1" : ip;}2.获取客户端MAC地址UdpGetClientMacAddr umac = new UdpGetClientMacAddr(sip);String smac = umac.GetRemoteMacAddr();添加⼀个获取MAC的时间限制final UdpGetClientMacAddr umac = new UdpGetClientMacAddr(sip);//---长时间获取不到MAC地址则放弃ExecutorService exec = Executors.newFixedThreadPool(1);Callable<String> call = new Callable<String>() {public String call() throws Exception {return umac.GetRemoteMacAddr();}};try {Future<String> future = exec.submit(call);String smac = future.get(1000 * 1, LISECONDS);loginMonitor.setMacAddress(smac);} catch (TimeoutException ex) {loginMonitor.setMacAddress("获取失败");("获取MAC地址超时");}// 关闭线程池exec.shutdown();//---需要先获取IP地址作为参数构造⼀个UdpGetClientMacAddrUdpGetClientMacAddr.javapackage monsys.security.controller;import java.io.IOException;import .DatagramPacket;import .DatagramSocket;import .InetAddress;/*** 主机A向主机B发送“UDP-NetBIOS-NS”询问包,即向主机B的137端⼝,发Query包来询问主机B的NetBIOS Names信息。
java useragent 正则

java useragent 正则
JavaUserAgent是指客户端的浏览器、操作系统、设备等信息的字符串。
通过识别UserAgent,网站可以根据客户端的不同特征来做出不同的响应,例如优化网页、提供不同的下载链接等。
以下是一些常见的Java UserAgent正则表达式:
1. 匹配IE浏览器:
'MSIE [0-9]+(.[0-9]+)?;'
2. 匹配Firefox浏览器:
'Firefox/[0-9]+(.[0-9]+)?'
3. 匹配Chrome浏览器:
'Chrome/[0-9]+(.[0-9]+)?'
4. 匹配Safari浏览器:
'Version/[0-9]+(.[0-9]+)? Safari/'
5. 匹配Android设备:
'Android [0-9]+(.[0-9]+)?'
6. 匹配iOS设备:
'iPhone OS [0-9]+(_[0-9]+)?'
7. 匹配Windows操作系统:
'Windows [NT|nt][0-9]+.[0-9]+'
8. 匹配Mac操作系统:
'Mac OS X [0-9]+(_[0-9]+)?'
以上正则表达式可以用于Java中的Pattern和Matcher类来进
行匹配。
在实际应用中,用户代理字符串可能会有不同的格式和版本,因此需要根据需要进行修改和调整。
E n i g m a 算 法 详 解

成为专业程序员路上用到的各种优秀资料、神器及框架本文是鄙人工作这几年随手收集整理的一些自认为还不错的资料,成长的道理上需要积累,这么长时间了,是时候放出来分享下了,或许能帮助到你。
欢迎点赞,让更多人看到,让福利普照。
因为本文以后不会更新,但项目依旧会更新。
所以,更好的做法是,请到GitHub上Star:stanzhai-be-a-professional-programmer成为一名专业程序员的道路上,需要坚持练习、学习与积累,技术方面既要有一定的广度,更要有自己的深度。
笔者作为一位tool mad,将工作以来用到的各种优秀资料、神器及框架整理在此,毕竟好记性不如烂键盘,此项目可以作为自己的不时之需。
本人喜欢折腾,记录的东西也比较杂,各方面都会有一些,内容按重要等级排序,大家各取所需。
这里的东西会持续积累下去,欢迎Star,也欢迎发PR给我。
技术站点必看书籍大牛博客GitHub篇工具篇平台工具常用工具第三方服务爬虫相关(好玩的工具)安全相关Web服务器性能-压力测试工具-负载均衡器大数据处理-数据分析-分布式工具Web前端语言篇C游戏开发相关日志聚合,分布式日志收集RTP,实时传输协议与音视频技术站点在线学习:Coursera、edX、Udacity?-way to explore国内老牌技术社区:OSChina、博客园、CSDN、51CTO 免费的it电子书:ITeBooks - Free Download - Big Library在线学习:UdemyCrowd-sourced code mentorship. and Practicecoding with fun programming challenges - CodinGameDevStore:开发者服务商店MSDN:微软相关的官方技术集中地,主要是文档类必看书籍SICP(Structureand Interpretation of Computer Programs)深入理解计算机系统代码大全2人件人月神话软件随想录算法导论(麻省理工学院出版社)离散数学及其应用设计模式编程之美黑客与画家编程珠玑The Little SchemerSimply Scheme_Introducing_Computer_ScienceC++ PrimeEffective C++TCP-IP详解Unix 编程艺术技术的本质软件随想录计算机程序设计艺术职业篇:程序员的自我修养,程序员修炼之道,高效能程序员的修炼《精神分析引论》弗洛伊德《失控》《科技想要什么》《技术元素》凯文凯利程序开发心理学天地一沙鸥搞定:无压力工作的艺术大牛博客云风(游戏界大牛): 云风的Tian (binghe)R大【干货满满】RednaxelaFX写的文章-回答的导航帖陈皓-左耳朵耗子:酷壳 - CoolShellJeff Atwood(国外知名博主): CodingHorror阮一峰(黑客与画家译者,Web):RuanYiFeng’s Personal Website廖雪峰(他的Python、Git教-程不少人都看过):HomeGitHub篇Awesome:这是个Awesome合集,常见的资料这里面都能找到Awesome2:类似第一个Awesome杂七杂八、有用没用的Awesome合集非常不错的语言类学习资料集合:Awesomenessawesome-ios-uiawesome-android-uiAwesome-MaterialDesi gnawesome-public-datasetsawesome-AppSec(系统安全)awesome-datascience书籍资料free-programming-books中文版免费的编程中文书籍索引《程序员编程艺术—面试和算法心得》GoBooksPapersLearning)深入学习(Deep Learning)资料Docker资料合集学习使用StromHadoopInternalsSparkInternals大数据时代的数据分析与数据挖掘in DatabasesDataScience blogs日志:每个软件工程师都应该知道的有关实时数据的统一概念AndroidCode PathAndroidLearn NotesPHP类库框架,资料集合优秀项目Design开源项目Android开源项目分类汇总前端 Node.jsGuide的中文分支Angular2学习资料AngularJS应用的最佳实践和风格指南React-Native学习指南七天学会NodeJSnode.js中文资料导航Nodejs学习路线图如何学习nodejs工作,工具系统管理员工具集合ProGitNginx开发从入门到精通Google全球 IP 地址库收集整理远程工作相关的资料Colorschemes for hackers游戏开发工具集,MagicTools开发者工具箱, free-for-devGitHub秘籍Git风格指南Bast-App平台工具常用工具Mac下的神兵利器asciinema:- 免费在线作图,实时协作Origami: 次世代交互设计神器百度脑图:百度脑图第三方服务DnsPod:一个不错的只能DNS服务解析提供商DigitalOcean:海外的云主机提供商,价格便宜,磁盘是SSD的,用过一段时间整体上还可以,不过毕竟是海外的,网速比较慢。
Java八股文——网络协议

Java⼋股⽂——⽹络协议1. HTTP协议⼀次http请求的过程⽤户输⼊url,浏览器本地解析url,如果在host⽂件中存有对应ip则访问对应ip,否则将域名交给DNS服务器,DNS服务器返回对应IP地址,应⽤层向ip地址发送http请求,然后是传输层TCP的三次握⼿确认连接,第⼀次是客户端向服务器发送syn,第⼆次是服务器发送syn和ack到客户端,第三次是客户端发送syn与ack确认,此时TCP握⼿成功,然后到⽹络层,通过ARP协议,使⽤ip解析出MAC地址,然后通过MAC地址在数据链路层传输数据,服务器接收到数据包后,由web服务器处理该请求,查找客户端请求的资源,并返回响应报⽂。
断开连接需要TCP4次挥⼿,任意⼀⽅可开始,机器1发送fin=1到机器2表⽰数据传输完毕,断开请求,机器2返回ack=1确认收到关闭请求,等待机器2的信息传送完毕后,机器2发送fin=1到机器1,此时机器2会有定时器等待机器1返回ack=1,如果没有返回,会重发fin=1,机器1返回ack=1确认关闭请求。
http与https的区别https需要去CA申请证书http运⾏在TCP之上,所有传输内容都是明⽂,HTTPS运⾏在SSL/TLS之上,SSL/TLS运⾏在TCP之上,所有传输内容都是加密的http默认端⼝80,HTTPS默认端⼝443GET和POST区别GET⽅法是从服务器获取资源POST⽅法是向指定URI提交数据,数据放在body中GET请求的URL有长度限制,⽽POST请求数据会放在消息体中,没有长度限制GET请求会被浏览器主动cache,⽽post不会GET请求在发送过程中产⽣⼀个TCP数据包,POST请求会产⽣两个数据包。
对于GET请求,浏览器会将header和data⼀起发送,服务器返回响应,⽽POST请求,浏览器是先发送header,服务器响应100 continue,浏览器再发送data。
Java最著名的开源项目

IBATIS 【持久层框架】
使用ibatis 提供的ORM机制,对业务逻辑 实现人员而言,面对的是纯粹的Java对 象。 相对Hibernate等 “全自动”ORM机制而 言,ibatis 以SQL开发的工作量和数据库 移植性上的让步,为系统 设计提供了更 大的自由空间。
2
WebWork 【Web框架】
WebWork是由OpenSymphony组织开发 的,致力于组件化和代码重用的拉出式 MVC模式J2EE Web框架。 在WebWork2.2中添加了对AJAX的支 持,这个支持是构建在DWR与Dojo这两 个框架的基础之上.
南开大学软件学院 框架】
南开大学软件学院 Java高级技术 32
JMagallanes 【报表制作】 :开源项目 JMagallanes是一个用Java/J2EE开发的 Olap和动态报表应用程序
南开大学软件学院 Java高级技术
33
JoBo 【Java开源 Web爬虫】:JoBo是 一个用于下载整个Web站点的简单工 具。它本质是一个Web Spider。与其它 下载工具相比较它的主要优势是能够自 动填充form(如:自动登录)和使用 cookies来处理session。JoBo还有灵活的 下载规则(如:通过网页的URL,大小, MIME类型等)来限制下载。
南开大学软件学院 Java高级技术
21
opencrx 【ERP与客户关系管理】
opencrx很容易与你现存的系统集成 (ERP, IVR, CTI, ...)是你对你以前投资的最大保 护 openCRX支持大多数通用技术,例如 RMI, CORBA, JMS, SOAP, 以及 JCA
南开大学软件学院 Java高级技术
java实现获取用户的MAC地址

java实现获取⽤户的MAC地址⽅法⼀:将本机地址与局域⽹内其他机器区分开来/*** 根据IP地址获取mac地址* @param ipAddress 127.0.0.1* @return* @throws SocketException* @throws UnknownHostException*/public static String getLocalMac(String ipAddress) throws SocketException,UnknownHostException {// TODO Auto-generated method stubString str = "";String macAddress = "";final String LOOPBACK_ADDRESS = "127.0.0.1";// 如果为127.0.0.1,则获取本地MAC地址。
if (LOOPBACK_ADDRESS.equals(ipAddress)) {InetAddress inetAddress = InetAddress.getLocalHost();// 貌似此⽅法需要JDK1.6。
byte[] mac = NetworkInterface.getByInetAddress(inetAddress).getHardwareAddress();// 下⾯代码是把mac地址拼装成StringStringBuilder sb = new StringBuilder();for (int i = 0; i < mac.length; i++) {if (i != 0) {sb.append("-");}// mac[i] & 0xFF 是为了把byte转化为正整数String s = Integer.toHexString(mac[i] & 0xFF);sb.append(s.length() == 1 ? 0 + s : s);}// 把字符串所有⼩写字母改为⼤写成为正规的mac地址并返回macAddress = sb.toString().trim().toUpperCase();return macAddress;} else {// 获取⾮本地IP的MAC地址try {System.out.println(ipAddress);Process p = Runtime.getRuntime().exec("nbtstat -A " + ipAddress);System.out.println("===process=="+p);InputStreamReader ir = new InputStreamReader(p.getInputStream());BufferedReader br = new BufferedReader(ir);while ((str = br.readLine()) != null) {if(str.indexOf("MAC")>1){macAddress = str.substring(str.indexOf("MAC")+9, str.length());macAddress = macAddress.trim();System.out.println("macAddress:" + macAddress);break;}}p.destroy();br.close();ir.close();} catch (IOException ex) {}return macAddress;}}我们再来看下⽅法⼆:package com.alpha.test;import java.io.BufferedReader;import java.io.IOException;import java.io.InputStream;import java.io.InputStreamReader;public class GetMac {/*** java获取客户端⽹卡的MAC地址** @param args*/public static void main(String[] args) {GetMac get = new GetMac();System.out.println("1="+get.getMAC());System.out.println("2="+get.getMAC("127.0.0.1"));}// 1.获取客户端ip地址( 这个必须从客户端传到后台):// jsp页⾯下,很简单,request.getRemoteAddr() ;// 因为系统的VIew层是⽤JSF来实现的,因此页⾯上没法直接获得类似request,在bean⾥做了个强制转换 // public String getMyIP() {// try {// FacesContext fc = FacesContext.getCurrentInstance();// HttpServletRequest request = (HttpServletRequest) fc// .getExternalContext().getRequest();// return request.getRemoteAddr();// } catch (Exception e) {// e.printStackTrace();// }// return "";// }// 2.获取客户端mac地址// 调⽤window的命令,在后台Bean⾥实现通过ip来获取mac地址。
28181新版调测软件使用方法.

软件安装 (2)1.1 JDK的安装配置 (2)1.2 调测软件安装 (6)1.3 运行环境要求 (6)2软件配置 (8)2.1 配置文件参数说明 (8)2.2 配置文件参数修改 (10)3程序启动和终止 (11)3.1 程序启动 (11)3.2 程序终止 (12)4软件操作说明 (13)5调试消息说明 (14)5.1设备连接(注册及校时) (15)5.2心跳 (15)5.3注销 (16)5.4实时点播 (16)5.5遥控消息 (18)5.6回放 (19)5.7下载 (20)5.8手动录像(开启和停止) (20)5.9录像文件检索 (21)5.10目录查询 (21)5.11布\撤防 (21)5.12报警 (22)5.13报警复位 (22)5.14设备状态查询 (22)5.15设备属性查询 (23)5.16设备远程启动 (23)1.软件安装1.1 JDK的安装配置1)进入Oracle的官方网站,下载JDK。
调测软件的运行需要JDK1.5以上的版本。
2)按照提示进行JDK的安装。
3)JDK安装完成以后,进行JAVA_HOME环境变量的配置,在“我的电脑”上右键,选择“属性”。
4)在“系统属性”窗口中选择“高级”,“环境变量”。
5)在“环境变量”“系统变量”窗口中点击“新建”按钮,添加“JAVA_HOME”变量,值为JDK安装根目录,例如“C:\Program Files\Java\jdk1.5.0_12”,点击“确定”按钮保存。
注:必须先配置JAVA_HOME环境变量,再将JAVA_HOME下的bin目录配置到Path系统变量中,否则会导致系统无法启动。
6)在“环境变量”“系统变量”窗口中修改“path”的值,添加Java可执行程序的安装路径,值为“%JAVA_HOME%\bin”,点击“确定”按钮保存修改。
7)测试JDK安装配置是否正确。
选择“开始”菜单->“运行”,键入“cmd”。
在控制台窗口中键入命令“java -version”,出现下图画面与所安装的JDK版本一致,说明JDK安装配置成功。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
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){