获取客户端网卡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 相关文章推荐
MSN消息提示类
Sep 05 Javascript
javascript克隆对象深度介绍
Nov 20 Javascript
JavaScript中解析JSON数据的三种方法
Jul 03 Javascript
谈谈我对JavaScript DOM事件的理解
Dec 18 Javascript
浅谈jQuery 选择器和dom操作
Jun 07 Javascript
仿Angular Bootstrap TimePicker创建分钟数-秒数的输入控件
Jul 01 Javascript
jQuery插件HighCharts绘制2D饼图效果示例【附demo源码下载】
Mar 21 jQuery
JS实现简单的星期格式转换功能示例
Jul 23 Javascript
vue.js 实现评价五角星组件的实例代码
Aug 13 Javascript
react结合bootstrap实现评论功能
May 30 Javascript
js实现ajax的用户简单登入功能
Jun 18 Javascript
JavaScript 如何在浏览器中使用摄像头
Dec 02 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之CodeIgniter学习笔记
2013/06/17 PHP
php压缩和解压缩字符串的方法
2015/03/14 PHP
Yii快速入门经典教程
2015/12/28 PHP
2017年最好用的9个php开发工具推荐(超好用)
2017/10/23 PHP
基于prototype的validation.js发布2.3.4新版本,让你彻底脱离表单验证的烦恼
2006/12/06 Javascript
artdialog的图片/标题以及关闭按钮不显示的解决方法
2013/06/27 Javascript
JavaScript验证图片类型(扩展名)的函数分享
2014/05/05 Javascript
关于编写性能高效的javascript事件的技术
2014/11/28 Javascript
jQuery DOM删除节点操作指南
2015/03/03 Javascript
基于MVC+EasyUI的web开发框架之使用云打印控件C-Lodop打印页面或套打报关运单信息
2016/08/29 Javascript
canvas绘制七巧板
2017/02/03 Javascript
Node.js与Sails redis组件的使用教程
2017/02/14 Javascript
ES6新特性之Symbol类型用法分析
2017/03/31 Javascript
详解vue 配合vue-resource调用接口获取数据
2017/06/22 Javascript
jQuery查找和过滤_动力节点节点Java学院整理
2017/07/04 jQuery
纯html+css+javascript实现楼层跳跃式的页面布局(实例代码)
2017/10/25 Javascript
详解nodejs 配置文件处理方案
2019/01/02 NodeJs
详细分析Node.js 多进程
2020/06/22 Javascript
Vue-CLI 3 scp2自动部署项目至服务器的方法
2020/07/24 Javascript
js 数组当前行添加数据方法详解
2020/07/28 Javascript
python继承和抽象类的实现方法
2015/01/14 Python
python实现将文件夹下面的不是以py文件结尾的文件都过滤掉的方法
2018/10/21 Python
Python3实现爬虫爬取赶集网列表功能【基于request和BeautifulSoup模块】
2018/12/05 Python
python用plt画图时,cmp设置方法
2018/12/13 Python
Python FTP文件定时自动下载实现过程解析
2019/11/12 Python
pytorch数据预处理错误的解决
2020/02/20 Python
Python同时迭代多个序列的方法
2020/07/28 Python
英国网上花店:Bunches
2016/11/29 全球购物
商务英语专业应届毕业生求职信
2013/10/28 职场文书
就业推荐表自我鉴定
2013/10/29 职场文书
高一家长会邀请函
2014/01/12 职场文书
12月红领巾广播稿
2014/02/13 职场文书
《卖木雕的少年》教学反思
2014/04/11 职场文书
三年级班级文化建设方案
2014/05/04 职场文书
小学教师个人先进事迹材料
2014/05/17 职场文书
2014年教师节红领巾广播稿
2014/09/10 职场文书