APP天天给抓包, HTTP代理是什么弄懂了吗?

有段时间没写HTTP协议相关的文章了,突然发现文章选题池里,《实用HTTP》系列中还躺了个HTTP代理的主题没有写,那今天就来聊聊HTTP代理吧。在HTTP协议中,最基础的就是请求和响应的报文,而报文又由报文头和报文实体组成。大多数HTTP协议的使用场景,都是依赖设置不同的HTTP请求/响应的Header来实现的。既然要说到代理,先提两个问题来当主线,从问题出发讲解HTTP代理。抓包工具是如何实现HTTP抓包的。对于HTTPS流量,不安装证书的情况下,通过抓包工具,请求和响应依然正常。

今天说的HTTP代理,更多的是一种抽象概念,其中的原理才是最关键的。

二、HTTP代理

2.1什么HTTP代理?说到HTTP代理,作为客户端开发,最熟悉的就是使用Fiddler、Charles等工具进行抓包时,需要在手机上挂个代理,来方便我们排查一些网络问题,这只是代理众多使用场景中的一个。实际上,HTTP代理(Web代理)是一种存在于网络中间的实体,可以提供各种功能。如果没有HTTP代理,客户终端就要直接与终端服务器进行交互。而有了HTTP代理后,客户终端就可以与代理通信,然后由代理代表客户端与服务器进行交互。HTTP代理算是最容易理解的一个HTTP协议概念,它和我们的生活最贴近。在我们的生活中,存在各种代办的服务。例如你和女友准备出国游,一些不免签的国家,就需要提前办理签证。我们不熟悉自然觉得流程很复杂,这时就可以选择交由旅行社来代理办理签证,你只需要根据对方提供的清单准备材料,就可以很方便的获得签证。在这个过程中,你节省了时间,而旅行社赚了你一点钱。

代理服务,就是代理客户端完成事务处理的中间人,它接管客户端的事务,代替客户端与服务端交互。代理服务是一个抽象的中间实体,可以存在网络的各个中间点,浏览器、路由器、代理服务器、Web服务器的反向代理等,

2.2HTTP代理的分类

从最熟悉的抓包工具说起,Fiddler、Charles这种抓包工具,封装的都非常好,哪怕我们完全不理解HTTP代理的细节,简单配置就可以使用。在使用过程中,你会发现两种场景:对于HTTP协议请求,可以直接显示请求/响应报文的细节对于HTTPS,如果没有导入证书,请求依然可以发送至服务器,并且也可以正常返回数据,但是不会显示报文细节。

在没有导入证书的情况下,HTTPS请求我们无法获知细节,但是并不影响我们的请求和响应。这个两种不同的表现,也对应了两种不同的HTTP代理:普通代理。基于修订后的RFC2616在HTTP/1.1中被定义。这种代理扮演的是「中间人」的角色。对客户端来说,它是服务端,而对真正的服务端来说,它又是客户端,它就是负责在两端之间传递HTTP报文。隧道代理。这种一种基于TCP协议的隧道传输代理,它通过HTTP协议的CONNECT方法完成通信,以HTTP的方式,实现任意基于TCP的应用层协议代理。

接下来我们就分别对这两种代理进行讲解。

2.3普通代理

普通代理理解起来并不复杂,它是网络中的中间实体,位于客户端和服务端之间,扮演「中间人」的角色,在两端之间来回传递报文。这个「中间人」左手牵着客户端,右手牵着服务端,在收到客户端发送的请求报文时,需要正确的处理请求和连接状态,同时向服务器发送新的请求,在收到响应后,将响应结果包装成一个响应体返回给客户端。

在普通代理的流程中,代理两端都是有可能察觉不到「中间人」的存在。举个例子,我们要访问A网站,实际上我们是向代理服务器发送请求,而代理服务器又再向A网站发起请求,最终将响应体通过代理服务器,返回给我们。在我们的角度,我们正常的向一个网站服务器发起请求,并且对方也返回给我们正确的数据,在这个过程中,我作为客户端,会认为代理服务器就是A网站的服务器,而A网站的服务器,又认为代理服务器是一个真实的用户。这里说到,代理服务器作为「中间人」是可以保护安全访问自己的存在,但是如果我们作为一个“守规矩”的代理服务器,想要将客户端的IP传递给服务端,可以通过X-Forwarded-IP这个自定义的Header,来告诉服务端真正的客户端IP地址。HTTP协议作为一种松散的协议,服务器在接收到X-Forwarded-IP这个请求头时,是无法验证其真伪的。它可能是代理服务器伪造的,也可能是真实的。所以服务端从HTTP头部获取IP时,就需要格外小心。普通代理很好理解,但是它也有缺陷,它只适用于HTTP协议。在普通代理模式下,所有请求响应的数据,对于代理这个「中间人」来说,都是透明并且可以任意操作,这就会带来各种数据安全的隐患。说到网络数据安全,首先想到的就是HTTPS,但是HTTPS这种证书认证的机制,又是中间人劫持的克星。严格上来说,HTTPS下不存在中间人攻击,除非是人为的犯错了,没有对证书严格校验,或者证书被泄露。在普通的HTTPS请求中,服务端不验证客户端的证书,中间人可以作为客户端与服务端完成TLS握手。但是由于代理中间人没有证书密钥,也就无法伪造服务端和客户端简历的TLS连接,这会导致请求失败。这个场景,对标到抓包工具的工作流程中,你会发现,如果想用Charles(或Fiddler)抓HTTPS的网络数据包,就需要在手机上安装一个Charles的CA证书,让手机设备信任此证书,才可以完成抓包,此时走的就是普通代理的模式。那换个角度,假如在手机上没有安装Charles提供的证书,也并没有影响到请求和响应,Charles只是无法解密HTTPS数据,这是如何做到的呢?这就需要用到隧道代理

2.4隧道代理

隧道代理,又称为Web隧道(Webtunnel),这种方式可以通过HTTP连接发送非HTTP流量,这样可以在HTTP上捎带其他协议的数据。隧道代理是利用HTTP的CONNECT方法建立起来的。CONNECT方法,最初并不是HTTP/1.1的核心规范,但却是一种得到广泛使用的扩展,它在2014年发布的HTTP/1.1修订版中,才对CONNECT及隧道代理有了清晰的描述。HTTP隧道代理的工作流程是什么样的?一次普通的HTTP请求,Header部分以连续的两组CRLF(\r\n)作为结束标记,如果后面还有内容,就是Content部分的内容,也称为请求/响应体(Body),如果存在Content内容,就需要在Header中增加Content-Length来标记Content部分的长度。接收方(服务端)会根据这个长度来读取数据。CONNECT报文的请求,是没有Content部分的,只有Request-Line和Header,他们仅供代理服务器使用,并不会传递给终端服务器。请求的Header部分一旦结束(两组连续的CRLF),后面的所有数据,都被视为应该转发给终端服务器的数据,代理需要把他们无脑的直接转发,并且不允许访问公开数据长度,直到从客户端的TCP读通道关闭。CONNECT的响应报文,在代理服务器和终端服务器建立连接后,可以向客户端返回一个200Connectestablished的状态码,以此表示和终端服务器的连接,建立成功。这个200Connectestablished的Header部分一旦结束(两组连续的CRLF),后面所有的数据均为远端服务器返回的数据,同理,代理服务器会直接转发终端服务器的数据给客户端,直到终端服务器的TCP读通道关闭。

了解清楚HTTP隧道的工作流程之后,就知道CONNECT方法请求隧道网管创建一条到达任意目的服务器和端口的TCP连接,并对客户端和服务端之间的后续数据,进行无脑的盲转发。通过隧道代理,代理服务器不再作为中间人,不再需要改写浏览器的请求,而是把浏览器和终端服务器的数据,原样转发,这样浏览器就可以直接和终端服务器进行TLS握手,并传输加密的数据。2.4导入证书后,Charles抓HTTPS流程Charles作为抓包工具,在手机上没有导入证书的时候,是通过隧道代理来保证数据的传输。一旦导入证书之后,Charles就又切换到普通代理的工作模式,此时我们就可以解析HTTPS的流量数据。这里简单说一下原理。在导入证书后,请求时手机就会信任Charles伪造的证书,而Charles又保护安全访问成真实的客户端与服务端之间建立正确的TLS连接。此时,Charles作为「中间人」,两端的TLS流量都是可以被解密的。三、总结时刻

到这里就了解清楚HTTP代理的细节,其实很抽象的概念,也很好理解。简单来说,HTTP代理可以分为两类,普通代理和隧道代理。普通代理作为「中间人」存在,在一次请求中,客户端明文请求代理服务器,在收到请求后,代理服务器又明文去请求终端服务器。在这整个过程中,数据都是明文传输,中间人可以对其中传递的数据进行改写,这就是著名的中间人攻击,可见其有多不安全。这就引申出了支持HTTPS的隧道代理,此时代理服务器就不再作为中间人,无法改写客户端的请求,而仅仅是在建立连接后,将客户端的请求,通过建立好的隧道,无脑的转发给终端服务器。

本文来自网络投稿,不代表kookeey立场,如有问题请联系我们

(0)
kookeeykookeey
上一篇 11月 17, 2023 4:07 上午
下一篇 11月 17, 2023 6:19 上午

相关推荐

  • 住宅代理与数据中心有什么不同

    每个互联网用户都曾在某个时候遇到过限制。无论是地理封锁还是访问某些网站的问题,挑战都可能是巨大的。一种提供网络自由的可行解决方案是使用代理IP. 什么是住宅代理? 住宅代理充当用户和目标网站之间的桥梁,确保匿名性和更高级别的安全性。 数据中心对比住宅代理 两种类型的代理都有各自的用例,但存在明显的差异。 住宅代理如何运作 住宅代理的运作既复杂又有趣。 住宅代…

    2月 4, 2024
  • Socks5代理IP的优势与应用场景

    在当今数字化时代,网络安全与隐私保护日益受到重视。SOCKS5代理作为一种高级网络代理协议,因其强大的功能和灵活性,成为保护网络隐私和提升网络性能的优选工具。本文将深入探讨SOCKS5代理的工作原理、独特优势及其在不同场景下的应用。 一、SOCKS5代理概述 SOCKS5代理是一种通用的网络代理协议,它不仅支持TCP连接,还兼容UDP协议,甚至支持IPv6等…

    8月 27, 2024
  • 国外问卷调查怎么赚钱?为什么需要IP代理的加持?

    随着互联网的普及,越来越多的人开始在网上寻找赚钱的机会。国外问卷调查是一个非常受欢迎的赚钱方式,通过填写问卷来获取奖励或者现金。然而,对于一些想要尝试这种赚钱方式的人来说,他们可能会发现自己无法接受问卷调查,或者收到的奖励很少,这时候,使用IP代理可能会成为解决方案。 国外问卷调查真的可以赚钱吗? 在回答这个问题之前,我们需要了解一下国外问卷调查的一些基本情…

    12月 20, 2023
  • 海外直播专线的优势及其可开展业务

    在当今全球化的时代,海外直播已成为连接世界各地观众的重要桥梁。海外直播专线,以其独特的优势,正逐渐成为跨国直播的首选方案。本文将深入探讨海外直播专线的几大优势,并分析这些优势如何助力开展多样化的业务。 一、稳定性与低延迟 海外直播专线的首要优势在于其出色的稳定性和低延迟。专线传输避免了公网传输的波动和拥堵,确保直播信号的稳定传输。低延迟则让观众能够实时感受到…

    6月 24, 2024
  • 海外代理IP在跨境电商中的五大应用场景

    在我国跨境电商的发展中,海外代理IP的应用日益广泛,它不仅帮助商家成功打入国际市场,还为他们在多变的全球电商竞争中保持优势。下面是海外代理IP在跨境电商中五个关键的应用场景。 1、精准的市场分析 了解目标市场的消费者行为、产品趋势以及竞争对手的动态对于跨境电商至关重要。通过海外代理IP,商家可以绕过地理位置限制,直接访问目标市场的电商平台和相关网站,进行市场…

    3月 14, 2024