获取客户端网卡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 相关文章推荐
IE 下的只读 innerHTML
Aug 21 Javascript
使用JavaScript构建JSON格式字符串实现步骤
Mar 22 Javascript
详细分析使用AngularJS编程中提交表单的方式
Jun 19 Javascript
Bootstrap中表单控件状态(验证状态)
Aug 04 Javascript
jquery实现自适应banner焦点图
Feb 16 Javascript
js实现rem自动匹配计算font-size的示例
Nov 18 Javascript
WebPack配置vue多页面的技巧
May 15 Javascript
浅谈Vue.js中如何实现自定义下拉菜单指令
Jan 06 Javascript
简单了解JavaScript中的执行上下文和堆栈
Jun 24 Javascript
Vue 用Vant实现时间选择器的示例代码
Oct 25 Javascript
js实现无缝轮播图插件封装
Jul 31 Javascript
vue 出现data-v-xxx的原因及解决
Aug 04 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
linux命令之调试工具strace的深入分析
2013/06/03 PHP
使用PHP静态变量当缓存的方法
2013/11/13 PHP
php实现将Session写入数据库
2015/07/26 PHP
关于laravel-admin ueditor 集成并解决刷新的问题
2019/10/21 PHP
JS网页播放声音实现代码兼容各种浏览器
2013/09/22 Javascript
JavaScript利用正则表达式去除日期中的“-”
2014/07/01 Javascript
判断window.onload是否多次使用的方法
2014/09/21 Javascript
Ajax清除浏览器js、css、图片缓存的方法
2015/08/06 Javascript
整理Javascript数组学习笔记
2015/11/29 Javascript
angular ng-click防止重复提交实例
2017/06/16 Javascript
jQuery+vue.js实现的九宫格拼图游戏完整实例【附源码下载】
2017/09/12 jQuery
微信小程序实现滚动消息通知
2018/02/02 Javascript
JS求1到任意数之间的所有质数的方法详解
2019/05/20 Javascript
微信小程序引入模块中wxml、wxss、js的方法示例
2019/08/09 Javascript
JavaScript实现手风琴效果
2021/02/18 Javascript
python函数参数*args**kwargs用法实例
2013/12/04 Python
python实用代码片段收集贴
2015/06/03 Python
对python中的pop函数和append函数详解
2018/05/04 Python
Python两个字典键同值相加的几种方法
2019/03/05 Python
python代码实现逻辑回归logistic原理
2019/08/07 Python
基于Python爬取爱奇艺资源过程解析
2020/03/02 Python
Python3实现飞机大战游戏
2020/04/24 Python
Python faker生成器生成虚拟数据代码实例
2020/07/20 Python
浅谈html5之sse服务器发送事件EventSource介绍
2017/08/28 HTML / CSS
德国在线订购鲜花:Fleurop
2018/08/25 全球购物
大三在校生电子商务求职信
2013/10/29 职场文书
《乞巧》教学反思
2014/02/27 职场文书
供货协议书范本
2014/04/22 职场文书
全国文明单位申报材料
2014/05/31 职场文书
党员学习中共十八大报告思想汇报
2014/09/15 职场文书
领导干部“四风”问题批评与自我批评材料
2014/09/24 职场文书
销售员未完成销售业绩的检讨书
2014/10/12 职场文书
《分数乘法》教学反思
2016/02/24 职场文书
Windows11插耳机没反应怎么办? win11耳机没声音的多种解决办法
2021/11/21 数码科技
vue实现input输入模糊查询的三种方式
2022/08/14 Vue.js
Apache SkyWalking 监控 MySQL Server 实战解析
2022/09/23 Servers