获取客户端网卡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实现的简单二级菜单效果代码
Sep 22 Javascript
javascript实现在网页中运行本地程序的方法
Feb 03 Javascript
模拟javascript中的sort排序(简单实例)
Aug 17 Javascript
BootStrap下拉框在firefox浏览器界面不友好的解决方案
Aug 18 Javascript
JS去掉字符串前后空格、阻止表单提交的实现代码
Jun 08 Javascript
Vue.js实现按钮的动态绑定效果及实现代码
Aug 21 Javascript
关于react中组件通信的几种方式详解
Dec 10 Javascript
vue+Element-ui实现分页效果实例代码详解
Dec 10 Javascript
如何用JavaScript实现功能齐全的单链表详解
Feb 11 Javascript
Js逆向实现滑动验证码图片还原的示例代码
Mar 10 Javascript
如何配置vue.config.js 处理static文件夹下的静态文件
Jun 19 Javascript
在Vue中使用Echarts可视化库的完整步骤记录
Nov 18 Vue.js
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
在线增减.htpasswd内的用户
2006/10/09 PHP
php流量统计功能的实现代码
2012/09/29 PHP
php实现检查文章是否被百度收录
2015/01/27 PHP
PHP实现自动识别Restful API的返回内容类型
2015/02/07 PHP
PHP7新增运算符用法实例分析
2016/09/26 PHP
php使用gearman进行任务分发操作实例详解
2020/02/26 PHP
jquery autocomplete自动完成插件的的使用方法
2010/08/07 Javascript
JQuery拖拽元素改变大小尺寸实现代码
2012/12/10 Javascript
Jquery加载时从后台读取数据绑定到dropdownList实例
2013/06/09 Javascript
JS面向对象基础讲解(工厂模式、构造函数模式、原型模式、混合模式、动态原型模式)
2014/08/16 Javascript
CSS3,HTML5和jQuery搜索框集锦
2014/12/02 Javascript
JavaScript设计模式之单件模式介绍
2014/12/28 Javascript
详解jquery事件delegate()的使用方法
2016/01/25 Javascript
详解Backbone.js框架中的模型Model与其集合collection
2016/05/05 Javascript
Bootstrap基本样式学习笔记之表单(3)
2016/12/07 Javascript
JavaScript控制输入框中只能输入中文、数字和英文的方法【基于正则实现】
2017/03/03 Javascript
JS 学习总结之正则表达式的懒惰性和贪婪性
2017/07/03 Javascript
基于JavaScript+HTML5 实现打地鼠小游戏逻辑流程图文详解(附完整代码)
2017/11/02 Javascript
详解webpack babel的配置
2018/01/09 Javascript
vue.js系列中的vue-fontawesome使用
2018/02/10 Javascript
详解React native fetch遇到的坑
2018/08/30 Javascript
Vue-cli assets SubDirectory及PublicPath区别详解
2020/08/18 Javascript
Python判断变量是否已经定义的方法
2014/08/18 Python
Python数据结构与算法之图的最短路径(Dijkstra算法)完整实例
2017/12/12 Python
Python功能点实现:函数级/代码块级计时器
2019/01/02 Python
python 如何对logging日志封装
2020/12/02 Python
美国隐形眼镜网:Major Lens
2018/02/09 全球购物
巴黎一票通:The Paris Pass
2018/02/10 全球购物
斐乐美国官方网站:FILA美国
2019/03/01 全球购物
.NET程序员的数据库面试题
2012/10/10 面试题
学校卫生检查制度
2014/02/03 职场文书
关于是否需要写商业计划书
2014/02/07 职场文书
全运会口号
2014/06/20 职场文书
旅游饭店管理专业自荐书
2014/06/28 职场文书
劳模先进事迹材料
2014/12/24 职场文书
2015年世界环境日演讲稿
2015/03/18 职场文书