博客:https://www.emanjusaka.com

公众号: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-ForX-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:

谦学于心,谷纳万物,静思致远,共筑收获之旅!

原文地址: https://www.emanjusaka.com/archive/http-proxy-ip

HTTP请求头中表示代理IP地址的属性及获取情况的更多相关文章

  1. 给requests模块添加请求头列表和代理ip列表

    Requests 是使用 Apache2 Licensed 许可证的 基于Python开发的HTTP 库,其在Python内置模块的基础上进行了高度的封装,符合了Python语言的思想,通俗的说去繁存 ...

  2. HTTP 请求头中的 X-Forwarded-For(转)

    原文:https://imququ.com/post/x-forwarded-for-header-in-http.html 我一直认为,对于从事 Web 前端开发的同学来说,HTTP 协议以及其他常 ...

  3. 论坛:获取当前原始请求中的远程IP地址

    topic.setIpAddr(ServletActionContext.getRequest().getRemoteAddr());//当前原始请求中的远程IP地址

  4. HTTP 请求头中的 Remote_Addr,X-Forwarded-For,X-Real-IP

    REMOTE_ADDR 表示发出请求的远程主机的 IP 地址,remote_addr代表客户端的IP,但它的值不是由客户端提供的,而是服务端根据客户端的ip指定的,当你的浏览器访问某个网站时,假设中间 ...

  5. 使用zuul实现验证自定义请求头中的token

    路由:她会把外部所有对请求转发到具体的微服务实例上,是实现外部访问同一接口的基础 过滤: 就是权限的检查, 判断当前的请求是否有权限区访问那些服务集群 搭建后台网关: 导入eureka - clien ...

  6. post请求头中常见content-type(非常重要)

    定义和用法 enctype 属性规定在发送到服务器之前应该如何对表单数据进行编码.默认地,表单数据会编码为 "application/x-www-form-urlencoded". ...

  7. http请求头中的content-type属性

    在HTTP请求中,我们每天都在使用Content-Type来指定不同格式的请求信息,但是却很少有人去全面了解Content-Type中允许的值有多少,因此这里来了解一下Content-Type的可用值 ...

  8. Http 请求头中的 Proxy-Connection

    平时用 Chrome 开发者工具抓包时,经常会见到 Proxy-Connection 这个请求头.之前一直没去了解什么情况下会产生它,也没去了解它有什么含义.最近看完<HTTP 权威指南> ...

  9. Ajax 请求头中常见content-type

    四种常见的 POST 提交数据方式 HTTP 协议是以 ASCII 码传输,建立在 TCP/IP 协议之上的应用层规范.规范把 HTTP 请求分为三个部分:状态行.请求头.消息主体.协议规定 POST ...

  10. 在linux中设置静态ip地址

    在linux中设置静态ip地址1.在终端中输入:vi /etc/sysconfig/network-scripts/ifcfg-eth0 2.开始编辑,填写ip地址.子网掩码.网关.DNS等[root ...

随机推荐

  1. 【公众号搬运】React-Native开发鸿蒙NEXT(5)

    .markdown-body { line-height: 1.75; font-weight: 400; font-size: 16px; overflow-x: hidden; color: rg ...

  2. AI 制作游戏美术素材流程分享(程序员方向粗糙版)

    AI 制作游戏美术素材分享(程序员方向粗糙版) 视频讲解: 抖音:https://www.douyin.com/user/self?from_tab_name=main&modal_id=75 ...

  3. mac ssh 总是自动断开

    创建一个ssh配置文件: vi ~/.ssh/config 写入以下内容: Host * ServerAliveInterval 120 TCPKeepAlive no

  4. Go中的interface(接口)

    接口 接口(interface)定义了一个对象的行为规范,之定义规范不实现,由具体的对象来实现规范的细节. 接口类型 在Go语言中接口(interface)是一种类型,一种抽象的类型. interfa ...

  5. 在Avalonia中使用相对单位

    Avalonia目前不具备相对单位功能,要使用相对单位需要安装RelativeControl.Avalonia包 RelativeControl.Avalonia 开始使用 添加NuGet包: dot ...

  6. java多线程压力测试接口

    1.定义一个controller,里面写个测试方法,用于postman测试 1 @GetMapping("/toTestThread") 2 public void demosen ...

  7. F-47(copy 邓大顾)

    *&---------------------------------------------------------------------* *& F-47过账 *&--- ...

  8. 用Java获取本机IP或者请求用户的真正IP地址

    一.在Web请求中获取请求用户的IP地址 public static String getUserRealIP(HttpServletRequest request) throws UnknownHo ...

  9. Golang基础笔记六之流程控制

    本文首发于公众号:Hunter后端 原文链接:Golang基础笔记六之流程控制 本篇笔记介绍 Golang 里流程控制相关的一些语法,以下是本篇笔记目录: 条件语句 循环语句 1.条件语句 1. if ...

  10. Elastic学习之旅 (5) 倒排索引和Analyzer分词

    大家好,我是Edison. 上一篇:ES文档的CRUD操作 重要概念1:倒排索引 在学习ES时,倒排索引是一个非常重要的概念.要了解倒排索引,就得先知道什么是正排索引.举个简单的例子,书籍的目录页(从 ...