获取客户端网卡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中的相等与不等运算
Apr 25 Javascript
基于jQuery实现以手风琴方式展开和折叠导航菜单
Jan 28 Javascript
javascript数组对象常用api函数小结(连接,插入,删除,反转,排序等)
Sep 20 Javascript
前端编码规范(3)JavaScript 开发规范
Jan 21 Javascript
Javascript实现的StopWatch功能示例
Jun 13 Javascript
移动前端图片压缩上传的实例
Dec 06 Javascript
浅谈JS对象添加getter与setter的5种方法
Jun 09 Javascript
解决JS表单验证只有第一个IF起作用的问题
Dec 04 Javascript
Vue使用localStorage存储数据的方法
May 27 Javascript
vue 二维码长按保存和复制内容操作
Sep 22 Javascript
Flexible.js可伸缩布局实现方法详解
Nov 13 Javascript
微信小程序实现通讯录列表展开收起
Nov 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设计模式中的工厂模式
2008/06/12 PHP
2014年10个最佳的PHP图像操作库
2014/07/14 PHP
php实现的替换敏感字符串类实例
2014/09/22 PHP
php与Mysql的一些简单的操作
2015/02/26 PHP
PHP执行SQL文件并将SQL文件导入到数据库
2015/09/17 PHP
thinkPHP5框架实现基于ajax的分页功能示例
2018/06/12 PHP
PHP PDOStatement::errorCode讲解
2019/01/31 PHP
使用javascript实现简单的选项卡切换
2015/01/09 Javascript
浅谈javascript中call()、apply()、bind()的用法
2015/04/20 Javascript
jquery uploadify如何取消已上传成功文件
2017/02/08 Javascript
基于element-ui的rules中正则表达式
2018/09/04 Javascript
改变layer confirm弹窗按钮的颜色方法
2019/09/12 Javascript
vue2.x数组劫持原理的实现
2020/04/19 Javascript
[02:40]2014DOTA2 国际邀请赛中国区预选赛 四大豪门抵达华西村
2014/05/23 DOTA
Python在信息学竞赛中的运用及Python的基本用法(详解)
2017/08/15 Python
Python实现返回数组中第i小元素的方法示例
2017/12/04 Python
python入门教程 python入门神图一张
2018/03/05 Python
解决pip install xxx报错SyntaxError: invalid syntax的问题
2018/11/30 Python
使用pip安装python库的多种方式
2019/07/31 Python
python网络爬虫 CrawlSpider使用详解
2019/09/27 Python
tensorflow获取预训练模型某层参数并赋值到当前网络指定层方式
2020/01/24 Python
python-docx文件定位读取过程(尝试替换)
2020/02/13 Python
python使用信号量动态更新配置文件的操作
2020/04/01 Python
python库skimage给灰度图像染色的方法示例
2020/04/27 Python
Python 爬虫的原理
2020/07/30 Python
基于CSS3的CSS 多栏(Multi-column)实现瀑布流源码分享
2014/06/11 HTML / CSS
基于HTML5陀螺仪实现ofo首页眼睛移动效果的示例
2017/07/31 HTML / CSS
英国在线女鞋目的地:SIMMI
2018/12/27 全球购物
strstr()的简单实现
2013/09/26 面试题
Java如何支持I18N?
2016/10/31 面试题
师范大学应届生求职信
2013/11/21 职场文书
校园安全广播稿范文
2014/09/25 职场文书
王兆力在市委党的群众路线教育实践活动总结大会上的讲话稿
2014/10/25 职场文书
python 批量压缩图片的脚本
2021/06/02 Python
Python虚拟环境virtualenv是如何使用的
2021/06/20 Python
为什么MySQL不建议使用SELECT *
2022/04/03 MySQL