获取客户端网卡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 相关文章推荐
基于jquery实现的移入页面上空文本框时,让它变为焦点,移出清除焦点
Jul 26 Javascript
node.js中的path.extname方法使用说明
Dec 09 Javascript
JavaScript实现鼠标点击后层展开效果的方法
May 13 Javascript
js漂浮广告实现代码
Aug 15 Javascript
原生JavaScript实现滚动条效果
Mar 24 Javascript
JavaScript中循环遍历Array与Map的方法小结
Mar 12 Javascript
AngularJS的脏检查深入分析
Apr 22 Javascript
node+vue实现用户注册和头像上传的实例代码
Jul 20 Javascript
微信小程序wx.getImageInfo()如何获取图片信息
Jan 26 Javascript
jQuery实现input[type=file]多图预览上传删除等功能
Aug 02 jQuery
何时/使用 Vue3 render 函数的教程详解
Jul 25 Javascript
Vue Object.defineProperty及ProxyVue实现双向数据绑定
Sep 02 Javascript
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的urlencode()URL编码函数浅析
2011/08/09 PHP
PHP实现将浏览历史页面网址保存到cookie的方法
2015/01/26 PHP
thinkPHP中多维数组的遍历方法
2016/01/09 PHP
PHP单例模式应用示例【多次连接数据库只实例化一次】
2018/12/18 PHP
JavaScript delete操作符应用实例
2009/01/13 Javascript
JavaScript 获取当前时间戳的代码
2010/08/05 Javascript
hover的用法及live的用法介绍(鼠标悬停效果)
2013/03/29 Javascript
深入理解ECMAScript的几个关键语句
2016/06/01 Javascript
AngularJs 国际化(I18n/L10n)详解
2016/09/01 Javascript
微信小程序  checkbox组件详解及简单实例
2017/01/10 Javascript
对存在JavaScript隐式类型转换的四种情况的总结(必看篇)
2017/08/31 Javascript
JS中原始值和引用值的储存方式示例详解
2018/03/23 Javascript
Vue实现类似Spring官网图片滑动效果方法
2019/03/01 Javascript
简单通过settimeout看javascript的运行机制
2019/05/10 Javascript
Layui table field初始化加载时进行隐藏的方法
2019/09/19 Javascript
聊聊Vue中provide/inject的应用详解
2019/11/10 Javascript
JavaScript实现弹出窗口效果
2020/12/09 Javascript
简单介绍Python的Django框架的dj-scaffold项目
2015/05/30 Python
Python+django实现文件下载
2016/01/17 Python
Windows下Python2与Python3两个版本共存的方法详解
2017/02/12 Python
python 实现UTC时间加减的方法
2018/12/31 Python
如何为Python终端提供持久性历史记录
2019/09/03 Python
Python调用Windows命令打印文件
2020/02/07 Python
PyCharm GUI界面开发和exe文件生成的实现
2020/03/04 Python
python+opencv实现移动侦测(帧差法)
2020/03/20 Python
详解Python+Selenium+ChromeDriver的配置和问题解决
2021/01/19 Python
全球最大的服务市场:Fiverr
2017/01/03 全球购物
英国和爱尔兰最大的地毯零售商:Kukoon
2018/12/17 全球购物
外贸英语毕业生自荐信
2013/11/14 职场文书
眼镜促销方案
2014/03/15 职场文书
个人自荐材料
2014/05/23 职场文书
结对共建协议书
2014/08/20 职场文书
2014年超市工作总结
2014/11/19 职场文书
2014年小学少先队工作总结
2014/12/18 职场文书
远程教育学习心得体会
2016/01/23 职场文书
python3.9之你应该知道的新特性详解
2021/04/29 Python