获取客户端网卡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 相关文章推荐
js取得url地址参数实例
Feb 22 Javascript
node.js中的fs.lstat方法使用说明
Dec 16 Javascript
JavaScript中的getTimezoneOffset()方法使用详解
Jun 10 Javascript
javascript 应用小技巧方法汇总
Jul 05 Javascript
javascript下使用Promise封装FileReader
Feb 19 Javascript
JQuery学习总结【二】
Dec 01 Javascript
利用jQuery来动态为属性添加或者删除属性的简单方法
Dec 02 Javascript
JS中用childNodes获取子元素换行会产生一个子元素
Dec 08 Javascript
js实现从左向右滑动式轮播图效果
Jul 07 Javascript
node.js的Express服务器基本使用教程
Jan 09 Javascript
vue 指令和过滤器的基本使用(品牌管理案例)
Nov 04 Javascript
js prototype深入理解及应用实例分析
Nov 25 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
第八节--访问方式
2006/11/16 PHP
php实现paypal 授权登录
2015/05/28 PHP
PHP递归实现文件夹的复制、删除、查看大小操作示例
2017/08/11 PHP
PHP实现打包下载文件的方法示例
2017/10/07 PHP
PHP实现从PostgreSQL数据库检索数据分页显示及根据条件查找数据示例
2018/06/09 PHP
基于jquery的loading 加载提示效果实现代码
2011/09/01 Javascript
input输入框的自动匹配(原生代码)
2013/03/19 Javascript
js仿百度有啊通栏展示效果实现代码
2013/05/28 Javascript
分享十五款 jQuery 社交网络分享插件
2015/05/16 Javascript
JavaScript中的this关键字使用详解
2015/08/14 Javascript
Bootstrap轮播插件简单使用方法介绍
2016/06/21 Javascript
微信小程序 action-sheet底部菜单详解
2016/10/27 Javascript
jQuery插件版本冲突的处理方法分析
2017/01/16 Javascript
详解Angular路由 ng-route和ui-router的区别
2017/05/22 Javascript
微信小程序 侧滑删除(左滑删除)
2017/05/23 Javascript
node作为中间服务层如何发送请求(发送请求的实现方法详解)
2018/01/02 Javascript
vue element-ui table表格滚动加载方法
2018/03/02 Javascript
angularJS开发注意事项
2018/05/26 Javascript
vue 中使用 watch 出现了如下的报错的原因分析
2019/05/21 Javascript
在Vue中使用icon 字体图标的方法
2019/06/14 Javascript
layui时间控件选择时间范围的实现方法
2019/09/28 Javascript
vue data恢复初始化数据的实现方法
2019/10/31 Javascript
vue+element UI实现树形表格
2020/12/29 Vue.js
[04:49]期待西雅图之战 2016国际邀请赛中国区预选赛WINGS战队赛后采访
2016/06/29 DOTA
Python多线程编程(一):threading模块综述
2015/04/05 Python
Python中生成器和yield语句的用法详解
2015/04/17 Python
Python 实现简单的shell sed替换功能(实例讲解)
2017/09/29 Python
详解Django+Uwsgi+Nginx的生产环境部署
2018/06/25 Python
Keras预训练的ImageNet模型实现分类操作
2020/07/07 Python
公共事业管理本科生求职信
2013/10/07 职场文书
项目合作协议书范本
2014/04/16 职场文书
信电学院毕业生自荐书
2014/05/24 职场文书
立春观后感
2015/06/18 职场文书
健康教育主题班会
2015/08/14 职场文书
小学语文教师研修感悟
2015/11/18 职场文书
大学生创业,为什么都会选择快餐饮?
2019/08/08 职场文书