描述:javascript
最近遇到一個需求,要進行日誌記錄,其中包含了IE瀏覽器客戶端IP地址的記錄。在嘗試了從request中獲取IP地址後,在沒有出現代理IP的狀況下,能夠正常獲取。即:局域網下,能夠收集客戶端IP成功。但一旦出現代理IP的狀況,就獲取不到咱們正確的IP地址了。html
分析:java
方式一:從request中取IP。若客戶端是直接IP進行訪問,此時獲取IP地址成功;一旦客戶端的網絡是經過代理IP進行訪問的狀況下,此時從request中會獲取多個IP地址,嘗試了幾種方法均未能獲取到正確的IP。或許有其餘的方法,暫未發現。【優勢:無須安裝或設置IE瀏覽器的ActiveX控件,缺點:並非一直適用】瀏覽器
方式二:ActiveX方式取IP。由於ActiveX控件是安裝在IE瀏覽器,也就是客戶端機器上的,此時獲取的客戶端機器上的IP地址是沒有問題的。【優勢:獲取爲真實IP,缺點:須要進行瀏覽器設置】安全
解決方式:服務器
此時,仍是採用了ActiveX控件的方式來獲取客戶端IP地址:網絡
代碼Demo以下:.net
<html> <head> <title></title> </head> <body> <object classid="CLSID:76A64158-CB41-11D1-8B02-00600806D9B6" id="locator" style="display:none;visibility:hidden"></object> <object classid="CLSID:75718C9A-F029-11d1-A1AC-00C04FB6C223" id="foo" style="display:none;visibility:hidden"></object> <form name="myForm"> <br/>MAC地址:<input type="text" name="macAddress"> <br/>IP地址:<input type="text" name="ipAddress"> <br/>主機名:<input type="text" name="hostName"> </form> </body> </html> <script language="javascript"> var sMacAddr=""; var sIPAddr=""; var sDNSName=""; var service = locator.ConnectServer(); service.Security_.ImpersonationLevel=3; service.InstancesOfAsync(foo, 'Win32_NetworkAdapterConfiguration'); </script> <script FOR="foo" EVENT="OnObjectReady(objObject,objAsyncContext)" LANGUAGE="JScript"> if(objObject.IPEnabled != null && objObject.IPEnabled != "undefined" && objObject.IPEnabled == true){ if(objObject.IPEnabled && objObject.IPAddress(0) !=null && objObject.IPAddress(0) != "undefined") sIPAddr = objObject.IPAddress(0); if(objObject.MACAddress != null &&objObject.MACAddress != "undefined") sMacAddr = objObject.MACAddress; if(objObject.DNSHostName != null &&objObject.DNSHostName != "undefined") sDNSName = objObject.DNSHostName; } </script> <script FOR="foo" EVENT="OnCompleted(hResult,pErrorObject, pAsyncContext)" LANGUAGE="JScript"> myForm.macAddress.value=sMacAddr; myForm.ipAddress.value=sIPAddr; myForm.hostName.value=sDNSName; </script>
IE瀏覽器設置方法:
打開瀏覽器的「Internet 選項」,找到「安全」,「可信任站點」,把系統的訪問IP或域名添加到可信任站點,並取消服務器驗證,而後找到「自定義級別」,找到「ActiveX控件和插件」設置選項的第三項,勾選爲「啓用」。關閉設置,完成瀏覽器設置。插件
【注:若不進行瀏覽器設置,IE瀏覽器會默認攔截ActiveX控件的使用】代理
原文:https://blog.csdn.net/qq_31302091/article/details/78222737