首页 > 产品服务 > 服务器租用 > 用户的访问IP如何通过高防IP获取?

用户的访问IP如何通过高防IP获取?

服务器租用admin2022-05-21 02:56:59A+A-

通过代理商之后,因为在服务端和服务项目中间提高了内层,因而网络服务器没法立即取得手机客户端的IP,服务端运用也没法同时根据分享要求的详细地址回到给手机客户端。可是在分享要求的HTTP头信息内容中,提升了X-FORWARDED-FOR、X-Real-IP信息内容。(高防IP机房租用联系QQ:404634181,电话:18300003210)用于追踪原来的手机客户端IP地址和原先手机客户端要求的服务器ip。下面介绍一下PHP、Java获取访问用户的真是ip地址。

先说说这种请求头的含意

X-Forwarded-For

这是一个Squid开发设计的字段名,仅有在根据了HTTP代理商或是web服务远程服务器才会加上此项。

文件格式为X-Forwarded-For:client1,proxy1,proxy2,一般情形下,第一个ip为手机客户端真正ip,后边的为通过的代理商服务器ip。如今绝大多数的代理商都是会再加上这一请求头。

X-Real-IP

nginx代理商一般会再加上此请求头。(推荐:增值电信业务经营许可证含有的类别

php获得手机客户端IP地方式如下所示

1、REMOTE_ADDR

2、HTTP_X_FORWARDED_FOR

3、HTTP_CLIENT_IP

4、HTTP_X_REAL_IP

REMOTE_ADDR就是你的手机客户端跟你的网络服务器“握手”情况下的IP。假如采用了“密名代理商”,REMOTE_ADDR将表明服务器代理的IP。

HTTP_CLIENT_IP是代理商服务器发送的HTTP头。如果是“非常密名代理商”,则回到none值。一样,REMOTE_ADDR也会被更换为这一服务器代理的IP。

$_SERVER['REMOTE_ADDR'];//浏览端(有可能是客户,有可能是代办的)IP

$_SERVER['HTTP_X_FORWARDED_FOR'];//客户是在哪个IP应用的代理商(有可能存有,还可以仿冒)

$_SERVER['HTTP_CLIENT_IP'];//代理商端(有可能存有,可仿冒)

一、沒有应用服务器代理的状况:

REMOTE_ADDR=您的IP

HTTP_X_FORWARDED_FOR=没数据或无法显示

二、应用服务器代理的状况:

REMOTE_ADDR=最后一个服务器代理IP

HTTP_X_FORWARDED_FOR=您的真正IP,通过好几个服务器代理时,这一值相近如下所示:203.98.182.163,203.98.182.163,203.129.72.215。

获得手机客户端真正的IP地址案例:

/**

*获得手机客户端ip

*/

function getClientIP(){

$ip="unknown";

/*

*浏览时要localhost浏览的,读出的是“::1”是正常的状况。

*::1表明打开了ipv6适用,这也是ipv6下的当地回环地址的表明。

*应用ip详细地址浏览或是关掉ipv6适用都能够无法显示这一。

**/

if(isset($_SERVER)){

if(isset($_SERVER["HTTP_X_FORWARDED_FOR"])){

$ip=$_SERVER["HTTP_X_FORWARDED_FOR"];

}elseif(isset($_SERVER["HTTP_X_REAL_IP"])){

$ip=$_SERVER["HTTP_X_REAL_IP"];

}elseif(isset($_SERVER["HTTP_CLIENT_ip"])){

$ip=$_SERVER["HTTP_CLIENT_ip"];

}else{

$ip=$_SERVER["REMOTE_ADDR"];

}

}else{

if(getenv('HTTP_X_FORWARDED_FOR')){

$ip=getenv('HTTP_X_FORWARDED_FOR');

}elseif(getenv('HTTP_X_REAL_IP')){

$ip=getenv('HTTP_X_REAL_IP');

}elseif(getenv('HTTP_CLIENT_ip')){

$ip=getenv('HTTP_CLIENT_ip');

}else{

$ip=getenv('REMOTE_ADDR');

}

}

if(trim($ip)=="::1"){

$ip="127.0.0.1";

}

return$ip;

}

Java获得手机客户端真正IP地址方式

在JSP里,获得手机客户端的IP地址的办法是:request.getRemoteAddr(),这类方式在大多数情形下是合理的。可是在根据了Apache,Squid等端口转发手机软件就不可以获得到手机客户端的真正IP地址了。

下边是一个参照获得手机客户端IP地址的方式:

public String getClientIP(HttpServletRequest request){

String ip=request.getHeader("x-forwarded-for");

if(ip==null||ip.length()==0||"unknown".equalsIgnoreCase(ip)){

ip=request.getHeader("Proxy-Client-IP");

}

if(ip==null||ip.length()==0||"unknown".equalsIgnoreCase(ip)){

ip=request.getHeader("WL-Proxy-Client-IP");

}

if(ip==null||ip.length()==0||"unknown".equalsIgnoreCase(ip)){

ip=request.getRemoteAddr()

}

return ip;

}


点击这里复制本文地址 以上内容由木准科技整理呈现,请务必在转载分享时注明本文地址!如对内容有疑问,请联系我们,谢谢!

相关内容

0条评论

支持Ctrl+Enter提交

木准科技 © All Rights Reserved.  
Powered by 木准科技 粤ICP备2022104150号 统计代码
IP地址| 工商服务| 仪器设备| 办理icp许可证公司

qrcode
在线客服
服务热线

服务热线

18300003210

微信咨询
木准科技
返回顶部
X木准科技

截屏,微信识别二维码

微信号:WX8888

(点击微信号复制,添加好友)

  打开微信

微信号已复制,请打开微信添加咨询详情!