获取客户端网卡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 相关文章推荐
“不能执行已释放的Script代码”错误的原因及解决办法
Sep 09 Javascript
js综合应用实例简单的表格统计
Sep 03 Javascript
javascript操作excel生成报表示例
May 08 Javascript
使用PHP+JavaScript将HTML页面转换为图片的实例分享
Apr 18 Javascript
深入剖析JavaScript中的函数currying柯里化
Apr 29 Javascript
JQuery的Pager分页器实现代码
May 03 Javascript
JavaScript中的Reflect对象详解(ES6新特性)
Jul 22 Javascript
自带气泡提示的vue校验插件(vue-verify-pop)
Apr 07 Javascript
vue+vux实现移动端文件上传样式
Jul 28 Javascript
基于React+Redux的SSR实现方法
Jul 03 Javascript
vue利用v-for嵌套输出多层对象,分别输出到个表的方法
Sep 07 Javascript
javascript 使用sleep函数的常见方法详解
Apr 26 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
用来解析.htpasswd文件的PHP类
2012/09/05 PHP
hadoop中一些常用的命令介绍
2013/06/19 PHP
php计算给定时间之前的函数用法实例
2015/04/03 PHP
Laravel5.1 框架响应基本用法实例分析
2020/01/04 PHP
JS 面向对象的5钟写法
2009/07/31 Javascript
可以用鼠标拖动的DIV实现思路及代码
2013/10/21 Javascript
解析jquery中的ajax缓存问题
2013/12/19 Javascript
使用javascript做的一个随机点名程序
2014/02/13 Javascript
JavaScript实现存储HTML字符串示例
2014/04/21 Javascript
讲解JavaScript的Backbone.js框架的MVC结构设计理念
2016/02/14 Javascript
jQuery获取cookie值及删除cookie用法实例
2016/04/15 Javascript
详解AngularJs HTTP响应拦截器实现登陆、权限校验
2017/04/11 Javascript
详解使用create-react-app快速构建React开发环境
2018/05/16 Javascript
微信小程序js文件改变参数并在视图上及时更新【推荐】
2018/06/11 Javascript
详解Webpack-dev-server的proxy用法
2018/09/08 Javascript
layui对工具条进行选择性的显示方法
2019/09/19 Javascript
利用JavaScript模拟京东按键输入功能
2020/12/01 Javascript
[01:31:22]DOTA2-DPC中国联赛定级赛 LBZS vs Magma BO3第二场 1月10日
2021/03/11 DOTA
Python+django实现文件下载
2016/01/17 Python
Python 转义字符详细介绍
2017/03/21 Python
Django入门使用示例
2017/12/12 Python
python用列表生成式写嵌套循环的方法
2018/11/08 Python
对django的User模型和四种扩展/重写方法小结
2019/08/17 Python
TensorFlow绘制loss/accuracy曲线的实例
2020/01/21 Python
python 如何使用find和find_all爬虫、找文本的实现
2020/10/16 Python
Pytest测试框架基本使用方法详解
2020/11/25 Python
Python 可视化神器Plotly详解
2020/12/26 Python
python工具快速为音视频自动生成字幕(使用说明)
2021/01/27 Python
如何给HTML标签中的文本设置修饰线
2019/11/18 HTML / CSS
加拿大鞋子连锁店:Town Shoes
2016/09/26 全球购物
国家地理在线商店:Shop National Geographic
2018/06/30 全球购物
MediaMarkt比利时:欧洲最大电器连锁店
2020/12/21 全球购物
EJB包括(SessionBean,EntityBean)说出他们的生命周期,及如何管理事务的?
2013/02/17 面试题
导游词之上海东方明珠塔
2019/09/25 职场文书
golang 如何用反射reflect操作结构体
2021/04/28 Golang
MySQL的索引你了解吗
2022/03/13 MySQL