REMOTE_ADDR 和HTTP_CLIENT_IP,HTTP_X_FORWARDED_FOR

REMOTE_ADDR 是你的客户端跟你的服务器“握手”时候的IP。如果使用了“匿名代理”,REMOTE_ADDR将显示代理服务器的IP。 
HTTP_CLIENT_IP 是代理服务器发送的HTTP头。如果是“超级匿名代理”,则返回none值。同样,REMOTE_ADDR也会被替换为这个代理服务器的IP。
$_SERVER['REMOTE_ADDR']; //访问端(有可能是用户,有可能是代理的)IP
$_SERVER['HTTP_CLIENT_IP']; //代理端的(有可能存在,可伪造)
$_SERVER['HTTP_X_FORWARDED_FOR']; //用户是在哪个IP使用的代理(有可能存在,也可以伪造)

三个值区别如下:

一、没有使用代理服务器的情况:

REMOTE_ADDR = 您的 IP
HTTP_VIA = 没数值或不显示
HTTP_X_FORWARDED_FOR = 没数值或不显示

二、使用透明代理服务器的情况:Transparent Proxies

REMOTE_ADDR = 最后一个代理服务器 IP 
HTTP_VIA = 代理服务器 IP
HTTP_X_FORWARDED_FOR = 您的真实 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

这类代理服务器还是将您的信息转发给您的访问对象,无法达到隐藏真实身份的目的。

三、使用普通匿名代理服务器的情况:Anonymous Proxies

REMOTE_ADDR = 最后一个代理服务器 IP 
HTTP_VIA = 代理服务器 IP
HTTP_X_FORWARDED_FOR = 代理服务器 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

隐藏了您的真实IP,但是向访问对象透露了您是使用代理服务器访问他们的。

四、使用欺骗性代理服务器的情况:Distorting Proxies

REMOTE_ADDR = 代理服务器 IP 
HTTP_VIA = 代理服务器 IP 
HTTP_X_FORWARDED_FOR = 随机的 IP ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

告诉了访问对象您使用了代理服务器,但编造了一个虚假的随机IP代替您的真实IP欺骗它。

五、使用高匿名代理服务器的情况:High Anonymity Proxies (Elite proxies)

REMOTE_ADDR = 代理服务器 IP
HTTP_VIA = 没数值或不显示
HTTP_X_FORWARDED_FOR = 没数值或不显示 ,经过多个代理服务器时,这个值类似如下:203.98.182.163, 203.98.182.163, 203.129.72.215。

完全用代理服务器的信息替代了您的所有信息,就象您就是完全使用那台代理服务器直接访问对象。

//获取用户IP
$ip = '';
foreach (array('HTTP_CLIENT_IP', 'HTTP_X_FORWARDED_FOR', 'HTTP_FROM', 'REMOTE_ADDR') as $v) {
   if (isset($_SERVER[$v])) {
       if (! preg_match('/^\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}$/', $_SERVER[$v])) {
                continue;
   } 
          $ip = $_SERVER[$v];
   }
}

uset($ip,$v);

PHP获取真实客户端的真实IP相关推荐

  1. Java获取请求客户端的真实IP地址

    整理网友的材料,最后有源码,亲测能解决所有java获取IP真实地址的问题 整理的这里: 1.链接1 2.链接2 JSP里,获取客户端的IP地址的方法是: request.getRemoteAddr() ...

  2. 多级反向代理下,Java获取请求客户端的真实IP地址多中方法整合

    在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid等反向代理软件就不能获取到客户端的真实I ...

  3. java 获取请求客户端的真实IP地址

    转载自:http://leiyongping88.iteye.com/blog/1545930 用request.getRemoteAddr(); 方法获取的IP地址是:127.0.0.1或192.1 ...

  4. PHP获得真实客户端的真实IP REMOTE_ADDR,HTTP_CLIENT_IP,HTTP_X_FORWARDED_FOR

    REMOTE_ADDR 是你的客户端跟你的服务器"握手"时候的IP.如果使用了"匿名代理",REMOTE_ADDR将显示代理服务器的IP. HTTP_CLIEN ...

  5. 如何获取客户端的真实IP

    原文地址:http://blog.csdn.net/zhangyaoming2004/article/details/6792695 问题引出: <hr/> 在JSP里,获取客户端的IP地 ...

  6. 通过Request获取客户端的真实IP

    我们在做项目的时候经常需要获取客户端的真实ip去进行判断,为此搜索了相关文章,以下这个讲解的比较明白,直接拿来 https://blog.csdn.net/yin_jw/article/details ...

  7. 后台获取访问端的真实ip地址

    在JSP里,获取客户端的IP地址的方法是:request.getRemoteAddr(),这种方法在大部分情况下都是有效的.但是在通过了Apache,Squid,nginx等反向代理软件就不能获取到客 ...

  8. nginx curl命令有效 curl_setopt无效_日志分析系列(外传一):Nginx透过代理获取真实客户端IP...

    本系列中的故事纯属虚构,如有雷同实属巧合 小B是Q公司的安全攻城狮,为了完成任务小B开始做起了调研(欲知背景如何,且听下回分说). 首先小B弄明白了Q公司的应用系统架构是:Client --> ...

  9. PHP获取客户端的真实IP

    REMOTE_ADDR只能获取访问者本地连接中设置的IP,如中南民族大学校园网中自己设置的10.X.XXX.XXX系列IP,而这个函数获取的是局域网网关出口的IP地址, 如果访问者使用代理服务器,将不 ...

最新文章

  1. MikroTik RouterOS使用SATA光驱安装时提示:no CD-ROM found press ENTER to reboot
  2. Vue2.0配置mint-ui踩过的那些坑
  3. linux下zip2
  4. 替换弹窗中字段显示的值
  5. 邮件服务器收件人数量限制,邮件服务器DBMail
  6. 用ProGet搭建本地私有NuGet仓库
  7. 抖音数据统计_26万条抖音数据背后的推荐逻辑以及严重失调的男女比例
  8. STM32的RTC万年历显示问题
  9. lpv4的地址格式由多少个字节组成_我们为什么有这么多字符编码格式?
  10. 固态硬盘开卡软件_有一种软件号称能让固态硬盘速度飞起,到底靠不靠谱?
  11. 6-10 阶乘计算升级版(20 分)
  12. .NET微信公众号开发系列 - 项目介绍
  13. python中self和cls的区别
  14. 《查理·芒格的100个思维模型》
  15. BitTorrent协议规范(BitTorrent Protocol Specification)之Peer Wire协议(Peer Wire Protocol)-第四部分
  16. RAR文件设置密码和清除密码的方法
  17. pytorch一小时速成
  18. 基于nodejs+vue+elementui酒店民宿客房预订管理系统
  19. 计算机系统变更注意事项,电脑更换cpu注意事项
  20. 阿狸(Hans设计卡通形象)的幸福生活 ---- 充满趣味性(可自定义更改)

热门文章

  1. 天龙固件U盘更新_2020年的无线音响好用不?用HEOS体验天龙HOME250
  2. 微信小程序-常用api
  3. [经验分享] 覃超线上直播课 如何快速搞定秋招算法面试
  4. linux关闭ipv6dns,dns关闭ipv6
  5. QT6在线安装下载速度慢的解决办法,QT6,QT5.15.1,QT5.15.0及旧版本都支持
  6. oracle时间平均,Oracle SQL的平均时间
  7. 爱普迪供应CS连接器,适用400G传输
  8. 小程序好看卡片式轮播
  9. Louvain 算法
  10. 罗克韦尔自动化收购工业自动化系统模拟与仿真的领先软件开发商Emulate3D