IE浏览器通过ActiveX方式获取客户端IP地址

微笑、不失礼 提交于 2020-04-06 19:45:09

描述:

最近遇到一个需求,要进行日志记录,其中包含了IE浏览器客户端IP地址的记录。在尝试了从request中获取IP地址后,在没有出现代理IP的情况下,可以正常获取。即:局域网下,可以收集客户端IP成功。但一旦出现代理IP的情况,就获取不到我们正确的IP地址了。

分析:

方式一:从request中取IP。若客户端是直接IP进行访问,此时获取IP地址成功;一旦客户端的网络是通过代理IP进行访问的情况下,此时从request中会获取多个IP地址,尝试了几种方法均未能获取到正确的IP。或许有其他的方法,暂未发现。【优点:无须安装或设置IE浏览器的ActiveX控件,缺点:并不是一直适用】

方式二:ActiveX方式取IP。因为ActiveX控件是安装在IE浏览器,也就是客户端机器上的,此时获取的客户端机器上的IP地址是没有问题的。【优点:获取为真实IP,缺点:需要进行浏览器设置】

解决方式:

此时,还是采用了ActiveX控件的方式来获取客户端IP地址:

代码Demo如下:

<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

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!