獲取客戶端網(wǎng)卡MAC地址和IP地址實現(xiàn)JS代碼
更新時間:2013年03月17日 10:02:02 作者:
獲取客戶端的一些信息,如IP和MAC,以結(jié)合身份驗證,相信很多人都會這樣做吧,我們這里用Javascript,這樣做的好處是不需要服務(wù)器端進(jìn)行處理,有客戶端自行獲取,感興趣的你可以參考下哈
在做B/S結(jié)構(gòu)的系統(tǒng)時,我們常常需要獲取客戶端的一些信息,如IP和MAC,以結(jié)合身份驗證。要獲取服務(wù)器端的MAC很容易,但是要獲取客戶端的MAC的地址確要花費(fèi)一翻心思,通常的做法是調(diào)用Win32API或直接調(diào)用nbtstat命令,這樣做有很多問題,而另一種方法就是直接用客戶端腳本,我們這里用Javascript,這樣做的好處是不需要服務(wù)器端進(jìn)行處理,有客戶端自行獲取,傳遞到服務(wù)器端,且速度和可靠性都比在服務(wù)器端獲取好。
具體實現(xiàn)的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>
其實最關(guān)鍵的還是用到兩個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都是系統(tǒng)自帶,不用去下載或注冊。
接下來的工作就是用腳本和ActiveX交互,腳本可以是js或Vbs都可以.
具體實現(xiàn)的html和javascript如下:
復(fù)制代碼 代碼如下:
<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>
其實最關(guān)鍵的還是用到兩個ActiveX:
復(fù)制代碼 代碼如下:
<OBJECT id=locator classid=CLSID:76A64158-CB41-11D1-8B02-00600806D9B6 VIEWASTEXT></OBJECT>
<OBJECT id=foo classid=CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223></OBJECT>
不過這兩個ActiveX都是系統(tǒng)自帶,不用去下載或注冊。
接下來的工作就是用腳本和ActiveX交互,腳本可以是js或Vbs都可以.
您可能感興趣的文章:
- ubuntu (linux)修改網(wǎng)卡名稱命令
- 詳解VirtualBox + CentOS 虛擬機(jī)網(wǎng)卡配置
- VirtualBox 配置虛擬網(wǎng)卡(橋接),實現(xiàn)主機(jī)-虛擬機(jī)網(wǎng)絡(luò)互通(圖文教程)
- VMWare Workation雙網(wǎng)卡配置IP地址的圖文教程
- linux系統(tǒng)啟動自動激活網(wǎng)卡的解決方法
- linux 雙網(wǎng)卡綁定網(wǎng)絡(luò)設(shè)置方法
- Linux系統(tǒng)下雙網(wǎng)卡配置實踐總結(jié)
- 自動生成linux網(wǎng)卡配置腳本分享
- CentOS6.2網(wǎng)卡設(shè)置
- Ubuntu虛擬機(jī)多網(wǎng)卡配置
相關(guān)文章
JavaScript判斷數(shù)組是否存在key的簡單實例
下面小編就為大家?guī)硪黄狫avaScript判斷數(shù)組是否存在key的簡單實例。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2016-08-08JS+CSS實現(xiàn)類似QQ好友及黑名單效果的樹型菜單
這篇文章主要介紹了JS+CSS實現(xiàn)類似QQ好友及黑名單效果的樹型菜單,涉及JavaScript結(jié)合鼠標(biāo)事件針對頁面元素CSS樣式的動態(tài)操作技巧,非常簡單實用,需要的朋友可以參考下2015-09-09js導(dǎo)出table數(shù)據(jù)到excel即導(dǎo)出為EXCEL文檔的方法
導(dǎo)出table為EXCEL文檔的方法有很多,在本文為大家介紹下js中時如何做到的,感興趣的朋友可以參考下2013-10-10面試判斷元素是否在可視區(qū)域中IntersectionObserver詳解
這篇文章主要為大家介紹了判斷元素是否在可視區(qū)域中IntersectionObserver面試詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-03-03swiper動態(tài)改變滑動內(nèi)容的實現(xiàn)方法
假設(shè)當(dāng)前顯示的是1,往左滑動一個遞減1,往右滑動一個遞增1。下面通過實例代碼給大家講解swiper動態(tài)改變滑動內(nèi)容的實現(xiàn)方法,感興趣的朋友一起看看吧2018-01-01