1.REMOTE_ADDR:浏览当前页面的用户计算机的ip地址

2.HTTP_X_FORWARDED_FOR: 浏览当前页面的用户计算机的网关

3.HTTP_CLIENT_IP:客户端的ip

在PHP 中使用 $_SERVER["REMOTE_ADDR"] 来取得客户端的 IP 地址,但如果客户端是使用代理服务器来访问,那取到的就是代理服务器的 IP 地址,而不是真正的客户端 IP 地址。要想透过代理服务器取得客户端的真实 IP 地址,就要使用 $_SERVER["HTTP_X_FORWARDED_FOR"] 来读取。

不过要注意的事,并不是每个代理服务器都能用 $_SERVER["HTTP_X_FORWARDED_FOR"] 来读取客户端的真实 IP,有些用此方法读取到的仍然是代理服务器的 IP。

还有一点需要注意的是:如果客户端没有通过代理服务器来访问,那么用$_SERVER["HTTP_X_FORWARDED_FOR"] 取到的值将是空的。

if ($_SERVER['HTTP_X_FORWARDED_FOR'] && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/',$_SERVER['HTTP_X_FORWARDED_FOR'])) {

$onlineip = $_SERVER['HTTP_X_FORWARDED_FOR'];

} elseif  ($_SERVER['HTTP_CLIENT_IP']  && preg_match('/^([0-9]{1,3}\.){3}[0-9]{1,3}$/',$_SERVER['HTTP_CLIENT_IP'])) {

$onlineip = $_SERVER['HTTP_CLIENT_IP'];

}

获取用户IP地址的三个属性的区别 (HTTP_X_FORWARDED_FOR,HTTP_VIA,REMOTE_ADDR)

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

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。

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

转载于:https://www.cnblogs.com/zhongbin/p/3214249.html

HTTP_X_FORWARDED_FOR 和 REMOTE_ADDR 的区别相关推荐

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

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

  2. nginx配置中$http_host、$host、$host:$proxy_port和$host:$server_port区别

    1.proxy_set_header设置的请求头是传递给后端服务器的 ngixn反向代理中proxy_set_header的设置: proxy_set_header Host $http_host;p ...

  3. php 转义md5 和java 转译的区别_CTF|PHP中的命令参数注入

    直奔主题,首先来了解两个 PHP 函数的定义. 命令参数注入 escapeshellarg 把字符串转码为可以在 shell 命令里使用的参数. escapeshellcmd 对字符串中可能会欺骗 s ...

  4. Nginx 获取客户端真实IP $remote_addr与X-Forwarded-For

    nginx配置 首先,一个请求肯定是可以分为请求头和请求体的,而我们客户端的IP地址信息一般都是存储在请求头里的.如果你的服务器有用Nginx做负载均衡的话,你需要在你的location里面配置X-R ...

  5. Nginx 细说proxy_set_header $remote_addr和X-Forwarded-For

    先来看下proxy_set_header的语法 语法: proxy_set_header field value; 默认值: proxy_set_header Host $proxy_host; pr ...

  6. C#获取客户端IP地址

    客户端ip: Request.ServerVariables.Get("Remote_Addr").ToString(); 客户端主机名: Request.ServerVariab ...

  7. php获取客户端真实ip

    php获取客户端ip地址小结: 微信官方文档:https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=15_5 此外的三个值区别如下: 一.没有使用 ...

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

    REMOTE_ADDR 和HTTP_CLIENT_IP,HTTP_X_FORWARDED_FOR REMOTE_ADDR 是你的客户端跟你的服务器"握手"时候的IP.如果使用了&q ...

  9. HTTP 请求头中的 X-Forwarded-For,X-Real-IP(nginx)

    转发:https://www.cnblogs.com/diaosir/p/6890825.html 在使用nginx做反向代理时,我们为了记录整个的代理过程,我们往往会在配置文件中做如下配置: loc ...

  10. BUUCTF Web 第二页全部Write ups

    更多笔记,可以关注yym68686.top 目录 [强网杯 2019]高明的黑客 [BUUCTF 2018]Online Tool [RoarCTF 2019]Easy Java [GXYCTF201 ...

最新文章

  1. MATLAB实战系列(二十九)-头脑风暴优化(BSO)算法求解旅行商问题(TSP)-交叉算子
  2. [云炬ThinkPython阅读笔记]1.4 算术运算符
  3. if else if语句的用法python_Python笔记3---if语句、if-elif-else 结构、使用if语句处理列表...
  4. kali Linux/Linux 忘记root密码强行修理方法
  5. VS Code + ML.NET 玩转交互式机器学习
  6. 差异基因 p log2foldchange_拟南芥的基因ID批量转换?差异基因,GO/KEGG数据库注释(转录组直接送你全套流程)...
  7. 系统架构师学习笔记-开发管理
  8. 设计模式--观察者模式--Java实现
  9. 配置数据库连接池的时候。
  10. 机器学习基础(四十九)—— 总结
  11. primefaces教程_Primefaces日历组件示例教程
  12. 高级与低级编程语言的解释,哪一种更容易上手?
  13. Zemax操作23--衍射光栅仿真(上)
  14. 领英封号怎么办,如何避免封号?
  15. Typora无法在applist里找到
  16. java 与数据库连接失败_java链接不上数据库,怎么解决!
  17. 安全绳使用方法图解_安全带和安全绳的正确使用方法
  18. java springMVC demo 事例 注解模式 例子 完整事例
  19. [转] 金山CEO求伯君今退休 老一代程序员时代结束
  20. 电子商务平台简介——Makingware

热门文章

  1. 在SharePoint 2010中创建联系人Web数据库网站
  2. 微服务自动化部署(ansible playbook)干货之--zookeeper部署
  3. 50 years, 50 colors HDU - 1498(最小点覆盖或者说最小顶点匹配)
  4. 板邓:wordpress编辑器发布文章自动首行缩进
  5. python培训拾遗
  6. NSURLRequest 使用(网络文摘)
  7. 一步步写俄罗斯方块(二)
  8. MongoDB应用上的坑
  9. JMETER 不同线程组 变量值 的参数传递(转)
  10. (9.19更新:八戒退款) 砸进七万块,没想到你是这样的猪八戒网