HTTP_X_FORWARDED_FOR 和 REMOTE_ADDR 的区别
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 的区别相关推荐
- PHP获得真实客户端的真实IP REMOTE_ADDR,HTTP_CLIENT_IP,HTTP_X_FORWARDED_FOR
REMOTE_ADDR 是你的客户端跟你的服务器"握手"时候的IP.如果使用了"匿名代理",REMOTE_ADDR将显示代理服务器的IP. HTTP_CLIEN ...
- 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 ...
- php 转义md5 和java 转译的区别_CTF|PHP中的命令参数注入
直奔主题,首先来了解两个 PHP 函数的定义. 命令参数注入 escapeshellarg 把字符串转码为可以在 shell 命令里使用的参数. escapeshellcmd 对字符串中可能会欺骗 s ...
- Nginx 获取客户端真实IP $remote_addr与X-Forwarded-For
nginx配置 首先,一个请求肯定是可以分为请求头和请求体的,而我们客户端的IP地址信息一般都是存储在请求头里的.如果你的服务器有用Nginx做负载均衡的话,你需要在你的location里面配置X-R ...
- Nginx 细说proxy_set_header $remote_addr和X-Forwarded-For
先来看下proxy_set_header的语法 语法: proxy_set_header field value; 默认值: proxy_set_header Host $proxy_host; pr ...
- C#获取客户端IP地址
客户端ip: Request.ServerVariables.Get("Remote_Addr").ToString(); 客户端主机名: Request.ServerVariab ...
- php获取客户端真实ip
php获取客户端ip地址小结: 微信官方文档:https://pay.weixin.qq.com/wiki/doc/api/H5.php?chapter=15_5 此外的三个值区别如下: 一.没有使用 ...
- PHP获取真实客户端的真实IP
REMOTE_ADDR 和HTTP_CLIENT_IP,HTTP_X_FORWARDED_FOR REMOTE_ADDR 是你的客户端跟你的服务器"握手"时候的IP.如果使用了&q ...
- HTTP 请求头中的 X-Forwarded-For,X-Real-IP(nginx)
转发:https://www.cnblogs.com/diaosir/p/6890825.html 在使用nginx做反向代理时,我们为了记录整个的代理过程,我们往往会在配置文件中做如下配置: loc ...
- BUUCTF Web 第二页全部Write ups
更多笔记,可以关注yym68686.top 目录 [强网杯 2019]高明的黑客 [BUUCTF 2018]Online Tool [RoarCTF 2019]Easy Java [GXYCTF201 ...
最新文章
- MATLAB实战系列(二十九)-头脑风暴优化(BSO)算法求解旅行商问题(TSP)-交叉算子
- [云炬ThinkPython阅读笔记]1.4 算术运算符
- if else if语句的用法python_Python笔记3---if语句、if-elif-else 结构、使用if语句处理列表...
- kali Linux/Linux 忘记root密码强行修理方法
- VS Code + ML.NET 玩转交互式机器学习
- 差异基因 p log2foldchange_拟南芥的基因ID批量转换?差异基因,GO/KEGG数据库注释(转录组直接送你全套流程)...
- 系统架构师学习笔记-开发管理
- 设计模式--观察者模式--Java实现
- 配置数据库连接池的时候。
- 机器学习基础(四十九)—— 总结
- primefaces教程_Primefaces日历组件示例教程
- 高级与低级编程语言的解释,哪一种更容易上手?
- Zemax操作23--衍射光栅仿真(上)
- 领英封号怎么办,如何避免封号?
- Typora无法在applist里找到
- java 与数据库连接失败_java链接不上数据库,怎么解决!
- 安全绳使用方法图解_安全带和安全绳的正确使用方法
- java springMVC demo 事例 注解模式 例子 完整事例
- [转] 金山CEO求伯君今退休 老一代程序员时代结束
- 电子商务平台简介——Makingware
热门文章
- 在SharePoint 2010中创建联系人Web数据库网站
- 微服务自动化部署(ansible playbook)干货之--zookeeper部署
- 50 years, 50 colors HDU - 1498(最小点覆盖或者说最小顶点匹配)
- 板邓:wordpress编辑器发布文章自动首行缩进
- python培训拾遗
- NSURLRequest 使用(网络文摘)
- 一步步写俄罗斯方块(二)
- MongoDB应用上的坑
- JMETER 不同线程组 变量值 的参数传递(转)
- (9.19更新:八戒退款) 砸进七万块,没想到你是这样的猪八戒网