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 ...
随机推荐
- WPF 由TreeView想到的 DataTemplate,HierarchicalDataTemplate
DataTemplate简而言之,解决的就是后台代码中的类以怎么样的形式展现在xaml前台代码中的问题. 所以DataTemplate一般都要指定DataType,一般放在resource中,而Hie ...
- svchost.exe占用端口
事情是这样的,我写的某个程序基于tcp协议与其他程序进行通信,但每隔一段时间,该程序就不能与其他程序正常交流,用 telnet 127.0.0.1 1000 显示连接失败,但是程序的确开启,应该在监听 ...
- footer固定在页面底部的几种方法(转载)
几种非常不错的方法,收藏学习:原文见https://blog.csdn.net/m0_37070714/article/details/77587753 方法一:footer高度固定+绝对定位 < ...
- 浅析领域驱动模型VO、DTO、BO、PO 等的概念、区别及其用法
摘要:浅析POJO.DTO.DO.VO.BO.PO和Entity等的概念.区别及其用法. 名词解释 领域模型中的实体类分为四种模型:VO.DTO.DO和PO,各种实体类用于不同业务层次间的交互,并 ...
- Spring Boot中如何读取resources目录下的文件
在Java编码过程中,我们常常希望读取项目内的配置文件,按照Maven的习惯,这些文件一般放在项目的src/main/resources下.因此,我们把合同的PDF模板存放于resources/tem ...
- keepalived使用方法及原理介绍
原理访问:http://www.yunweipai.com/35350.html Nginx双机高可用案例访问:https://www.jianshu.com/p/a6b5ab36292a
- python 利用librosa库变声,声音变速
wav文件可自定义,将wav文件放置在代码的同一目录下 文件要改名为gg. wav 声音变速: import librosa y,sr = librosa.load("gg.wav" ...
- 「Log」做题记录 2023.9.25-2023.10.29
\(2023.9.25-2023.10.1\) \(\color{limegreen}{P3524}\) 考虑删掉两个不相连的点,这两个点必定一个在团内一个在团外,删掉 \(\frac{n}{3}\) ...
- 用网页计数器来说明application和session
jsp的代码: 1 <body> 2 <h1>网页计数器</h1> 3 <% 4 //第一次访问数据为空 5 Object obj=application.g ...
- 好多分钟了解下java虚拟机--03
垃圾回收 引用计数法和可达性分析 引用计数法 即记录对象的 reference count 若≠0则保留 a, b对象相互引用, 不可回收, 造成内存泄露 可达性分析(JVM主流使用) 从GC Roo ...