获取客户端网卡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入门教程(6) Window窗口对象
Jan 31 Javascript
原生Js实现按的数据源均分时间点幻灯片效果(已封装)
Dec 28 Javascript
JavaScript实现网页图片等比例缩放实现代码及调用方式
Feb 25 Javascript
运算符&amp;&amp;的三个不同层次
Apr 07 Javascript
jquery做的一个简单的屏幕锁定提示框
Mar 26 Javascript
原生js实现新闻列表展开/收起全文功能
Jan 20 Javascript
vue2.0实战之基础入门(1)
Mar 27 Javascript
浅谈Vue SSR 的 Cookies 问题
Nov 20 Javascript
node.js基础知识小结
Feb 26 Javascript
JS实现自定义弹窗功能
Aug 08 Javascript
Javascript实现时间倒计时功能
Nov 17 Javascript
如何让node运行es6模块文件及其原理详解
Dec 11 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
destoon各类调用汇总
2014/06/20 PHP
js sort 二维数组排序的用法小结
2014/01/24 Javascript
控制文字内容的显示与隐藏示例
2014/06/11 Javascript
JavaScript代码应该放在HTML代码哪个位置比较好?
2014/10/16 Javascript
javascript限制用户只能输汉字中文的方法
2014/11/20 Javascript
jQuery对checkbox 复选框的全选全不选反选的操作
2016/08/09 Javascript
使用node.js中的Buffer类处理二进制数据的方法
2016/11/26 Javascript
js实现文字向上轮播功能
2017/01/13 Javascript
vue的Virtual Dom实现snabbdom解密
2017/05/03 Javascript
Vue实现数字输入框中分割手机号码的示例
2017/10/10 Javascript
浅谈JS和jQuery的区别
2019/03/27 jQuery
Nodejs封装类似express框架的路由实例详解
2020/01/05 NodeJs
javascript实现前端成语点击验证优化
2020/06/24 Javascript
[14:50]2018DOTA2亚洲邀请赛开幕式
2018/04/03 DOTA
python实现批量改文件名称的方法
2015/05/25 Python
Python正则替换字符串函数re.sub用法示例
2017/01/19 Python
利用Python实现Windows定时关机功能
2017/03/21 Python
python多进程实现进程间通信实例
2017/11/24 Python
python用BeautifulSoup库简单爬虫实例分析
2018/07/30 Python
在Python中表示一个对象的方法
2019/06/25 Python
django表单的Widgets使用详解
2019/07/22 Python
python计算导数并绘图的实例
2020/02/29 Python
pyecharts调整图例与各板块的位置间距实例
2020/05/16 Python
python爬虫使用requests发送post请求示例详解
2020/08/05 Python
聊聊python中的循环遍历
2020/09/07 Python
基于HTML5实现类似微信手机摇一摇功能(计算摇动次数)
2017/07/24 HTML / CSS
意大利自行车商店:Cingolani Bike Shop
2019/09/03 全球购物
成人继续教育实施方案
2014/03/01 职场文书
化妆品活动策划方案
2014/05/23 职场文书
电焊工岗位工作职责
2014/07/09 职场文书
城南旧事读书笔记
2015/06/29 职场文书
公司酒会主持词
2015/07/02 职场文书
2019求职信:应届生求职信范文
2019/04/24 职场文书
HTML页面滚动时部分内容位置固定不滚动的实现
2021/04/14 HTML / CSS
springcloud整合seata
2022/05/20 Java/Android