HTTP请求头中表示代理IP地址的属性及获取情况
公众号:emanjusaka的编程栈
by emanjusaka from https://www.emanjusaka.com/archive/http-proxy-ip
本文为原创文章,可能会更新知识点以及修正文中的一些错误,全文转载请保留原文地址,避免产生因未即时修正导致的误导。
代理服务器类型
透明代理服务器(Transparent Proxies)
透明代理,也称为内联代理、拦截代理或强制代理,是一种位于最终用户或设备与互联网之间的服务器,可拦截所有请求和响应而不对其进行更改。
术语“透明”是指代理的操作对用户不可见;它不会修改请求或响应的内容,也不需要对用户的设备进行任何配置更改。这使得它不同于非透明代理,非透明代理可能需要在客户端设备上进行明确配置或修改通过它们的数据。
普通匿名代理服务器(Anonymous Proxies)
普通匿名代理同样可以隐藏用户的IP地址,但与高匿名代理相比不同的是普通匿名代理会改变用户的访问请求,这样的话站点服务器便有很大概率会识别出用户使用了代理。
匿名代理隐藏了您的真实IP,但是向访问对象可以检测是使用代理服务器访问他们的。会改变我们的请求信息,服务器端有可能会认为我们使用了代理。不过使用此种代理时,虽然被访问的网站不能知道你的ip地址,但仍然可以知道你在使用代理,当然某些能够侦测ip的网页也是可以查到你的ip。
欺骗性代理服务器(Distorting Proxies)
欺骗性代理是指代理服务器通过修改HTTP标头来掩盖客户端的IP地址,并向目标服务器呈现一个虚假的IP地址。
它通常用于增强隐私、添加匿名层并限制监视用户浏览活动的能力。
高匿名代理服务器(High Anonymity Proxies)
高匿名代理不改变客户机的请求,这样在服务器看来就像有个真正的客户浏览器在访问它,这时客户的真实IP是隐藏的,完全用代理服务器的信息替代了您的所有信息,就象您就是完全使用那台代理服务器直接访问对象,同时服务器端不会认为我们使用了代理。
请求头中表示代理 IP 地址的属性
REMOTE_ADDR
在没有使用代理服务器的情况下,REMOTE_ADDR会显示用户的真实IP地址。
如果使用了代理服务器,REMOTE_ADDR会显示最后一个代理服务器的IP地址。
HTTP_X_FORWARDED_FOR
HTTP_X_FORWARDED_FOR是一个 HTTP 请求头字段。它主要用于记录客户端的真实 IP 地址,在经过代理服务器或负载均衡器等中间设备转发请求时发挥重要作用。
HTTP_X_FORWARDED_FOR主要是在服务器端代码中,当使用某些特定的服务器端编程语言或框架(比如在 PHP 中通过$_SERVER['HTTP_X_FORWARDED_FOR']这种方式)去获取对应请求头信息时才会用到的名称。
也就是说,它是在服务器端内部代码层面针对X-Forwarded-For请求头进行读取操作时的一种转换后的、适配特定环境的命名。
HTTP_CLIENT_IP
HTTP_CLIENT_IP 是一个环境变量,它通常用于在服务器端获取发起 HTTP 请求的客户端的 IP 地址。
它并不是一个标准的 HTTP 请求头部(header),而是一个在服务器端环境中可能被设置的变量。
WL-Proxy-Client-IP
它用于表示通过 WebLogic Server(WL)代理的客户端的原始 IP 地址。
当客户端通过代理服务器访问 WebLogic 应用时,代理服务器会添加这个头部信息,以便应用服务器能够识别真正发起请求的客户端 IP 地址。
Proxy-Client-IP
Proxy-Client-IP 类似于 X-Real-IP,也是一个非标准的 HTTP 请求头部(header),用于在 HTTP 请求通过代理服务器转发到后端服务器时,向后端服务器传递原始客户端的 IP 地址。
这个头部并不是 HTTP 协议标准的一部分,而是由某些代理服务器或负载均衡器自定义添加的,以便后端服务器能够识别出原始请求的发起者。
X-Real-IP
X-Real-IP 是一个 HTTP 请求头部(header),用于识别通过 HTTP 代理或负载均衡器转发到后端服务器的原始客户端 IP 地址。
与 X-Forwarded-For 不同,``X-Real-IP` 通常只包含单个 IP 地址,即发起请求的客户端的真实 IP 地址。
对于支持 X-Forwarded-For 的代理服务器,它们通常会同时设置 X-Forwarded-For 和 X-Real-IP 头部。
在这种情况下,X-Forwarded-For 头部会包含完整的请求链中的 IP 地址列表,而 X-Real-IP 头部则只包含客户端的原始 IP 地址。这可以为后端服务器提供更多的上下文信息,以便进行更准确的访问控制和日志记录。
X-Forwarded-For
X-Forwarded-For 头部通常包含一个或多个 IP 地址,它们用逗号分隔。
第一个 IP 地址通常是发起请求的客户端的 IP 地址,随后的 IP 地址则代表请求所经过的代理或负载均衡器的 IP 地址。
例如,如果一个请求从客户端 IP 192.168.1.100 发出,并通过一个代理服务器 IP 192.168.2.1 转发到目标 web 服务器,那么 X-Forwarded-For 头部可能看起来像这样:
X-Forwarded-For: 192.168.1.100, 192.168.2.1
获取IP地址的几种情况
X-Forwarded-For 和 HTTP_X_FORWARDED_FOR的情况基本上是一样的。
如果有多级代理,HTTP_X_FORWARDED_FOR / X-Forwarded-For 会包含一个 IP 地址列表,从左到右依次表示:
最左边:客户端的真实 IP。
中间:经过的代理服务器的 IP。
最右边:直接向目标服务器发起请求的代理 IP。
没有使用代理服务器的情况
- REMOTE_ADDR:真实 IP 地址
- HTTP_VIA:空
- HTTP_X_FORWARDED_FOR:空
REMOTE_ADDR: 192.168.1.100
HTTP_VIA:
HTTP_X_FORWARDED_FOR:
使用透明代理服务器的情况
- REMOTE_ADDR:代理服务器 IP
- HTTP_VIA:可能会包含代理服务器的信息
- HTTP_X_FORWARDED_FOR:真实 IP 地址
REMOTE_ADDR: 203.0.113.1 (代理服务器的 IP 地址)
HTTP_VIA: 1.1 ProxyServer (说明请求经过了代理)
HTTP_X_FORWARDED_FOR: 192.168.1.100 (客户端的真实 IP 地址)
使用普通匿名代理服务器的情况
- REMOTE_ADDR:代理服务器 IP
- HTTP_VIA:可能会包含代理服务器的信息
- HTTP_X_FORWARDED_FOR:客户端的真实 IP 地址,但代理服务器可能会将这部分信息隐藏或替换为一个通用的 IP 地址。
REMOTE_ADDR: 203.0.113.1 (代理服务器的 IP 地址)
HTTP_VIA: 1.1 ProxyServer (说明请求经过了代理)
HTTP_X_FORWARDED_FOR: 203.0.113.1 (代理服务器的 IP 地址)
使用欺骗性代理服务器的情况
- REMOTE_ADDR:代理服务器 IP
- HTTP_VIA:可能会包含代理服务器的信息,但可能经过修改以隐藏其真实身份。
- HTTP_X_FORWARDED_FOR:可能包含一些毫无意义的或者伪造的 IP 信息,比如一个随机生成的 IP 地址9.9.9.9,这完全是为了误导目标服务器而设置的。
REMOTE_ADDR: 203.0.113.1 (代理服务器的 IP 地址)
HTTP_VIA: 1.1 ProxyServer (说明请求经过了代理)
HTTP_X_FORWARDED_FOR: 198.51.100.1 (伪造的 IP 地址)
使用高匿名代理服务器的情况
- REMOTE_ADDR:代理服务器 IP
- HTTP_VIA:可能会包含代理服务器的信息,但很难通过这个信息追踪到代理服务器的真实身份。
- HTTP_X_FORWARDED_FOR:为空或者不包含用户真实 IP 相关线索。与透明代理不同,高匿名代理不会通过这个字段泄露用户的真实 IP。
REMOTE_ADDR: 203.0.113.1 (代理服务器的 IP 地址)
HTTP_VIA:
HTTP_X_FORWARDED_FOR:
谦学于心,谷纳万物,静思致远,共筑收获之旅!
HTTP请求头中表示代理IP地址的属性及获取情况的更多相关文章
- 给requests模块添加请求头列表和代理ip列表
Requests 是使用 Apache2 Licensed 许可证的 基于Python开发的HTTP 库,其在Python内置模块的基础上进行了高度的封装,符合了Python语言的思想,通俗的说去繁存 ...
- HTTP 请求头中的 X-Forwarded-For(转)
原文:https://imququ.com/post/x-forwarded-for-header-in-http.html 我一直认为,对于从事 Web 前端开发的同学来说,HTTP 协议以及其他常 ...
- 论坛:获取当前原始请求中的远程IP地址
topic.setIpAddr(ServletActionContext.getRequest().getRemoteAddr());//当前原始请求中的远程IP地址
- HTTP 请求头中的 Remote_Addr,X-Forwarded-For,X-Real-IP
REMOTE_ADDR 表示发出请求的远程主机的 IP 地址,remote_addr代表客户端的IP,但它的值不是由客户端提供的,而是服务端根据客户端的ip指定的,当你的浏览器访问某个网站时,假设中间 ...
- 使用zuul实现验证自定义请求头中的token
路由:她会把外部所有对请求转发到具体的微服务实例上,是实现外部访问同一接口的基础 过滤: 就是权限的检查, 判断当前的请求是否有权限区访问那些服务集群 搭建后台网关: 导入eureka - clien ...
- post请求头中常见content-type(非常重要)
定义和用法 enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码.默认地,表单数据会编码为 "application/x-www-form-urlencoded". ...
- http请求头中的content-type属性
在HTTP请求中,我们每天都在使用Content-Type来指定不同格式的请求信息,但是却很少有人去全面了解Content-Type中允许的值有多少,因此这里来了解一下Content-Type的可用值 ...
- Http 请求头中的 Proxy-Connection
平时用 Chrome 开发者工具抓包时,经常会见到 Proxy-Connection 这个请求头.之前一直没去了解什么情况下会产生它,也没去了解它有什么含义.最近看完<HTTP 权威指南> ...
- Ajax 请求头中常见content-type
四种常见的 POST 提交数据方式 HTTP 协议是以 ASCII 码传输,建立在 TCP/IP 协议之上的应用层规范.规范把 HTTP 请求分为三个部分:状态行.请求头.消息主体.协议规定 POST ...
- 在linux中设置静态ip地址
在linux中设置静态ip地址1.在终端中输入:vi /etc/sysconfig/network-scripts/ifcfg-eth0 2.开始编辑,填写ip地址.子网掩码.网关.DNS等[root ...
随机推荐
- 深度探索C++对象模型--读书笔记
深度探索C++对象模型 第一章:关于对象 封装之后的布局成本 C++在布局以及存取时间上主要的额外负担是由virtual引起 1.VIrtual function机制:用以支持一个有效率的" ...
- 前端WebSocket的方法封装
一.封装方法 在项目根目录src下的utils中新增webSocketManager.js封装文件,代码内容如下: // webSocketManager.js /** WebSocketMessen ...
- 特殊恢复:最简单的BBED修改ASM的数据块的方法
我们的文章会在微信公众号Oracle恢复实录和博客网站同步更新 ,欢迎关注收藏,也欢迎大家转载,但是请在文章开始地方标注文章出处,谢谢! 由于博客中有大量代码,通过页面浏览效果更佳. 前天在客户现场遇 ...
- 关于Android studio项目崩溃报Binary XML file line #2: Error inflating class类错误解决办法
以上是错误, 记录一下:查找方式:1.查看LOG日志,查看错误位置,以及问题.2.查找到问题后进行翻译,翻译后没有头绪,则仔细查看该错误,定位关键词比如上面:XML.line #2.MainActiv ...
- 深入剖析开源AI阅读器项目Saga Reader基于大模型的文本转换与富文本渲染优化方案
引言 AI阅读器作为一种新型的内容消费工具,正在改变人们获取和处理信息的方式.本文将介绍Saga Reader项目中如何利用大型语言模型(LLM)进行网页内容抓取.智能优化和富文本渲染,特别是如何通过 ...
- 扎“芯”了——CP探针卡的国产替代道阻且长
这是IC男奋斗史的第19篇原创 关注公众号[IC男奋斗史],让我们一起撸起袖子加油干! 本文3810字,预计阅读10分钟. 之前在<凤姐如何变冰冰?>这篇文章中杰哥有介绍过CP测试,也提到 ...
- 我的grunt 插件
"angular-ui-router": "^0.2.18", "grunt": "^0.4.5", "gru ...
- MySQL 02 日志系统:一条SQL更新语句是如何执行的?
比如执行一条更新语句: update T set c=c+1 where ID=2; 首先,更新语句也会走一遍查询语句的流程.除此以外,更新还涉及两个日志模块,分别是redo log和binlog. ...
- 我在厂里搞wine的日子
之前工作中搞过一段时间的wine,主要是解决一些第三方应用的安装或运行问题,后面好长时间没搞了,有次电脑出问题重装系统的时候整理文档,发现之前还写过一些日志,于是找时间把日志粗略整理了一下,分享出来供 ...
- vmware15.5的解锁mac系统插件
停止虚拟机服务 执行破解 进入插件MK-Unlocker-VM15.5目录内,右键以管理员权限运行win-install.cmd 查看效果 等待如上的脚本执行完成后,再打开vm,创建虚拟机,看看就有了 ...