获取客户端网卡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 相关文章推荐
用htc组件制作windows选项卡
Jan 13 Javascript
jquery photoFrame 图片边框美化显示插件
Jun 28 Javascript
Iframe自适应高度绝对好使的代码 兼容IE,遨游,火狐
Jan 27 Javascript
jquery禁止输入数字以外的字符的示例(纯数字验证码)
Apr 10 Javascript
jQuery 弹出层插件(推荐)
May 24 Javascript
vue-star评星组件开发实例
Mar 01 Javascript
React路由管理之React Router总结
May 10 Javascript
微信小程序登录按钮遮罩浮层效果的实现方法
Dec 16 Javascript
js核心基础之闭包的应用实例分析
May 11 Javascript
扫微信小程序码实现网站登陆实现解析
Aug 20 Javascript
js实现无缝轮播图
Mar 09 Javascript
VsCode里的Vue模板的实现
Aug 12 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
对squid中refresh_pattern的一些理解和建议
2009/04/17 PHP
php实现下载限制速度示例分享
2014/02/13 PHP
PHP批量生成静态HTML的简单原理和方法
2014/04/20 PHP
JavaScript asp.net 获取当前超链接中的文本
2009/04/14 Javascript
js 自动播放的实例代码
2013/11/19 Javascript
jquery获得option的值和对option进行操作
2013/12/13 Javascript
jQuery中clone()方法用法实例
2015/01/16 Javascript
Jquery使用val方法读写value值
2015/05/18 Javascript
jquery获得当前html页面源码的方法
2015/07/14 Javascript
基于jquery实现的银行卡号每隔4位自动插入空格的实现代码
2016/11/22 Javascript
jq stop()和:is(:animated)的用法及区别(详解)
2017/02/12 Javascript
原生js实现放大镜特效
2017/03/08 Javascript
Vue.2.0.5实现Class 与 Style 绑定的实例
2017/06/20 Javascript
jQuery Autocomplete简介_动力节点Java学院整理
2017/07/17 jQuery
vue2 全局变量的设置方法
2018/03/09 Javascript
[02:31]DOTA2帕克 英雄基础教程
2013/11/26 DOTA
在Django中创建第一个静态视图
2015/07/15 Python
深度定制Python的Flask框架开发环境的一些技巧总结
2016/07/12 Python
python数字图像处理之高级形态学处理
2018/04/27 Python
python3对拉勾数据进行可视化分析的方法详解
2019/04/03 Python
Python序列化与反序列化pickle用法实例
2019/11/11 Python
Python如何使用Gitlab API实现批量的合并分支
2019/11/27 Python
Python计算机视觉里的IOU计算实例
2020/01/17 Python
Python 存取npy格式数据实例
2020/07/01 Python
浅谈python锁与死锁问题
2020/08/14 Python
pytho matplotlib工具栏源码探析一之禁用工具栏、默认工具栏和工具栏管理器三种模式的差异
2021/02/25 Python
解析浏览器的一些“滚动”行为鉴赏
2019/09/16 HTML / CSS
The North Face北面美国官网:美国著名户外品牌
2018/09/15 全球购物
以工厂直接定价的传奇性能:Ben Hogan Golf
2019/01/04 全球购物
美国排名第一的泳池用品直接来源:In The Swim
2019/09/23 全球购物
采购部部长岗位职责
2014/02/06 职场文书
成人继续教育实施方案
2014/03/01 职场文书
廉政文化进校园广播稿
2014/10/20 职场文书
2014年残疾人工作总结
2014/12/06 职场文书
大学生个人学习总结
2015/02/15 职场文书
一文了解Java动态代理的原理及实现
2022/07/07 Java/Android