获取客户端网卡MAC地址和IP地址实现JS代码


Posted in Javascript onMarch 17, 2013

在做B/S结构的系统时,我们常常需要获取客户端的一些信息,如IP和MAC,以结合身份验证。要获取服务器端的MAC很容易,但是要获取客户端的MAC的地址确要花费一翻心思,通常的做法是调用Win32API或直接调用nbtstat命令,这样做有很多问题,而另一种方法就是直接用客户端脚本,我们这里用Javascript,这样做的好处是不需要服务器端进行处理,有客户端自行获取,传递到服务器端,且速度和可靠性都比在服务器端获取好。
具体实现的html和javascript如下

<HTML> 
<HEAD> 
<TITLE>WMI Scripting HTML</TITLE> 
<META http-equiv=Content-Type content="text/html; charset=gb2312"> 
<SCRIPT language=JScript event="OnCompleted(hResult,pErrorObject, pAsyncContext)" for=foo> 
document.forms[0].txtMACAddr.value=unescape(MACAddr); 
document.forms[0].txtIPAddr.value=unescape(IPAddr); 
document.forms[0].txtDNSName.value=unescape(sDNSName); 
//document.formbar.submit(); 
</SCRIPT> 
<SCRIPT language=JScript event=OnObjectReady(objObject,objAsyncContext) for=foo> 
if(objObject.IPEnabled != null && objObject.IPEnabled != "undefined" && objObject.IPEnabled == true) 
{ 
if(objObject.MACAddress != null && objObject.MACAddress != "undefined") 
MACAddr = objObject.MACAddress; 
if(objObject.IPEnabled && objObject.IPAddress(0) != null && objObject.IPAddress(0) != "undefined") 
IPAddr = objObject.IPAddress(0); 
if(objObject.DNSHostName != null && objObject.DNSHostName != "undefined") 
sDNSName = objObject.DNSHostName; 
} 
</SCRIPT> 
<META content="MSHTML 6.00.2800.1106" name=GENERATOR></HEAD> 
<BODY> 
<OBJECT id=locator classid=CLSID:76A64158-CB41-11D1-8B02-00600806D9B6 VIEWASTEXT></OBJECT> 
<OBJECT id=foo classid=CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223></OBJECT> 
<SCRIPT language=JScript> 
var service = locator.ConnectServer(); 
var MACAddr ; 
var IPAddr ; 
var DomainAddr; 
var sDNSName; 
service.Security_.ImpersonationLevel=3; 
service.InstancesOfAsync(foo, 'Win32_NetworkAdapterConfiguration'); 
</SCRIPT> 
<FORM id=formfoo name=formbar method=post> 
<INPUT type="text" name=txtMACAddr> 
<INPUT type="text" name=txtIPAddr> 
<INPUT type="text" name=txtDNSName> 
</FORM> 
</BODY> 
</HTML>

其实最关键的还是用到两个ActiveX
<OBJECT id=locator classid=CLSID:76A64158-CB41-11D1-8B02-00600806D9B6 VIEWASTEXT></OBJECT> 
<OBJECT id=foo classid=CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223></OBJECT>

不过这两个ActiveX都是系统自带,不用去下载或注册。
接下来的工作就是用脚本和ActiveX交互,脚本可以是js或Vbs都可以.
Javascript 相关文章推荐
从面试题学习Javascript 面向对象(创建对象)
Mar 30 Javascript
jQuery 动态云标签插件
Nov 11 Javascript
用JavaScript显示浏览器客户端信息的超相近教程
Jun 18 Javascript
jquery siblings获取同辈元素用法实例分析
Jul 25 Javascript
AngularJS中$apply方法和$watch方法用法总结
Dec 13 Javascript
bootstrap table单元格新增行并编辑
May 19 Javascript
Vue精简版风格指南(推荐)
Jan 30 Javascript
IE9 elementUI文件上传的问题解决
Oct 17 Javascript
详解如何使用nvm管理Node.js多版本
May 06 Javascript
如何获取vue单文件自身源码路径
May 06 Javascript
快速搭建Node.js(Express)用户注册、登录以及授权的方法
May 09 Javascript
vue+echarts实现多条折线图
Mar 21 Vue.js
Javascript跨域请求的4种解决方式
Mar 17 #Javascript
两种方法实现文本框输入内容提示消失
Mar 17 #Javascript
js 自制滚动条的小例子
Mar 16 #Javascript
JavaScript创建一个欢迎cookie弹出窗实现代码
Mar 15 #Javascript
js加强的经典分页实例
Mar 15 #Javascript
Jquery刷新页面背景图片随机变换的实现方法
Mar 15 #Javascript
jQuery方法简洁实现隔行换色及toggleClass的使用
Mar 15 #Javascript
You might like
PHP中redis的用法深入解析
2014/02/20 PHP
jQuery动态添加、删除元素的方法
2014/01/09 Javascript
js控制iframe的高度/宽度让其自适应内容
2014/04/09 Javascript
JavaScript实现同一页面内两个表单互相传值的方法
2015/08/12 Javascript
js实现select跳转菜单新窗口效果代码分享(超简单)
2015/08/21 Javascript
学习JavaScript鼠标响应事件
2015/12/25 Javascript
js实现有过渡渐变效果的图片轮播相册(兼容IE,ff)
2016/01/19 Javascript
Node.js中使用jQuery的做法
2016/08/17 Javascript
js仿小米手机上下滑动效果
2017/02/05 Javascript
基于JSONP原理解析(推荐)
2017/12/04 Javascript
JS实现快递单打印功能【推荐】
2018/06/21 Javascript
layui结合form,table的全选、反选v1.0示例讲解
2018/08/15 Javascript
微信小程序实现一张或多张图片上传(云开发)
2019/09/25 Javascript
vue使用recorder.js实现录音功能
2019/11/22 Javascript
jQuery操作元素追加内容示例
2020/01/10 jQuery
JS面试题中深拷贝的实现讲解
2020/05/07 Javascript
js编写简易的计算器
2020/07/29 Javascript
[02:46]完美世界DOTA2联赛PWL DAY4集锦
2020/11/03 DOTA
Saltstack快速入门简单汇总
2016/03/01 Python
Python使用smtplib模块发送电子邮件的流程详解
2016/06/27 Python
python实现连续图文识别
2018/12/18 Python
python实现超市商品销售管理系统
2019/10/25 Python
python scrapy重复执行实现代码详解
2019/12/28 Python
TensorFlow学习之分布式的TensorFlow运行环境
2020/02/05 Python
python3.6中anaconda安装sklearn踩坑实录
2020/07/28 Python
python实现无边框进度条的实例代码
2020/12/30 Python
施华洛世奇德国官网:SWAROVSKI德国
2017/02/01 全球购物
英国女性时尚鞋类的潮流制造者:Koi Footwear
2018/10/19 全球购物
香奈儿美国官网:CHANEL美国
2020/05/20 全球购物
元旦联欢会主持词
2014/03/26 职场文书
五好家庭申报材料
2014/12/20 职场文书
安全承诺书格式范本
2015/04/28 职场文书
开工典礼致辞
2015/07/29 职场文书
2016年党建工作简报
2015/11/26 职场文书
python 经纬度求两点距离、三点面积操作
2021/06/03 Python
Redis 哨兵机制及配置实现
2022/03/25 Redis