获取客户端网卡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将文本转化成JSON对象需要注意的问题
May 09 Javascript
ASP.NET jQuery 实例3 (在TextBox里面阻止复制、剪切和粘贴事件)
Jan 13 Javascript
用js实现输入提示(自动完成)的实例代码
Jun 14 Javascript
iframe实用操作锦集
Apr 22 Javascript
JS实现很酷的EMAIL地址添加功能实例
Feb 28 Javascript
微信小程序 定位到当前城市实现实例代码
Feb 23 Javascript
input 标签实现输入框带提示文字效果(两种方法)
Oct 09 Javascript
js操作二进制数据方法
Mar 03 Javascript
Vue 事件处理操作实例详解
Mar 05 Javascript
vue中typescript装饰器的使用方法超实用教程
Jun 17 Javascript
layer.prompt输入层的例子
Sep 24 Javascript
node.js +mongdb实现登录功能
Jun 18 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+DBM的同学录程序(2)
2006/10/09 PHP
PHP的拦截器实例分析
2014/11/03 PHP
php is_writable判断文件是否可写实例代码
2016/10/13 PHP
PHP中的use关键字及文件的加载详解
2016/11/28 PHP
cakephp常见知识点汇总
2017/02/24 PHP
PHP多进程编程实例详解
2017/07/19 PHP
使用PHP json_decode可能遇到的坑与解决方法
2017/08/03 PHP
phpQuery采集网页实现代码实例
2020/04/02 PHP
js arguments.callee的应用代码
2009/05/07 Javascript
基于jquery的15款幻灯片插件
2011/04/10 Javascript
基于jQuery+HttpHandler实现图片裁剪效果代码(适用于论坛, SNS)
2011/09/02 Javascript
Jquery为单选框checkbox绑定单击click事件
2012/12/18 Javascript
JavaScript实现的浮动层框架用法实例分析
2015/10/10 Javascript
jQuery实现宽屏图片轮播实例教程
2015/11/24 Javascript
javascript中setAttribute兼容性用法分析
2016/12/12 Javascript
关于vue.js发布后路径引用的问题解决
2017/08/15 Javascript
微信小程序实现轮播图效果
2017/09/07 Javascript
vue-resource:jsonp请求百度搜索的接口示例
2019/11/09 Javascript
详解Python中contextlib上下文管理模块的用法
2016/06/28 Python
pyQT5 实现窗体之间传值的示例
2019/06/20 Python
用Python实现将一张图片分成9宫格的示例
2019/07/05 Python
python读写csv文件并增加行列的实例代码
2019/08/01 Python
余弦相似性计算及python代码实现过程解析
2019/09/18 Python
Python作用域与名字空间原理详解
2020/03/21 Python
详解H5本地储存Web Storage
2017/07/03 HTML / CSS
Boston Proper官网:美国女装品牌
2017/10/30 全球购物
中国跨境电子商务网站:NewFrog
2018/03/10 全球购物
免税水晶:Duty Free Crystal
2019/05/13 全球购物
XML文档定义有几种形式?它们之间有何本质区别?解析XML文档有哪几种方式?
2016/01/12 面试题
新闻学专业应届生求职信
2013/11/08 职场文书
自我鉴定注意事项
2014/01/19 职场文书
竞选大学学委演讲稿
2014/09/13 职场文书
城管执法人员个人对照检查材料思想汇报
2014/09/29 职场文书
罚站检讨书
2015/01/29 职场文书
导游词之无锡东林书院
2019/12/11 职场文书
Python软件包安装的三种常见方法
2022/07/07 Python