【温馨提醒】本文内容收集整理于网络,仅供参考!如需了解“高防IP如何获取客户端真实IP地址”等有关服务器、云主机租用、托管、配置、价格问题,请随时咨询Red3客服,获取最新优惠!

代理服务器客户端

这篇文章主要介绍了关于PHP、Java获取客户端真实IP地址的方法,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下。

仅适用于网站类转发规则

经过代理以后,由于在客户端和服务之间增加了中间层,因此服务器无法直接拿到客户端的IP,服务器端应用也无法直接通过转发请求的地址返回给客户端。但是在转发请求的HTTP头信息中,增加了X-FORWARDED-FOR 、X-Real-IP信息。用以跟踪原有的客户端IP地址和原来客户端请求的服务器地址。

先说说这些请求头的意思

X-Forwarded-For

这是一个 Squid 开发的字段,只有在通过了HTTP代理或者负载均衡服务器时才会添加该项。

格式为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

【热搜产品】台湾云主机新加坡CN2专线服务器存储服务器租用

【主机问答】nat是什么意思?通过此文你便能理解