当您想要控制系统如何与互联网通信,或者互联网如何与您通信时,您需要一个超文本传输协议 (HTTP) 代理服务器。
由于其配置方式,HTTP 代理可以查看任何 Web 请求的内部结构。这意味着您可以检查、阻止、限制或重写流量。接下来我们来谈谈 HTTP 代理及其工作原理。
如果不先了解HTTP的基础知识,就无法深入理解HTTP代理的工作原理。但要理解HTTP,就需要了解它的工作原理,这就需要用到开放系统互连(OSI)模型。该模型将数字通信划分为七个不同的层。
第七层 – 应用层:与应用程序(例如您的网络浏览器)的接口。HTTP 和 HTTPS 都位于此层。
第 6 层 – 表示层:处理数据格式化,包括加密和压缩。
第五层 – 会话层:管理会话和连接。例如登录令牌和 cookie。
第四层——传输层:确保数据完整有序地传输。传输控制协议 (TCP) 位于此层。
第 3 层 – 网络层:处理 IP 地址和数据包路由。
第 2 层 – 数据链路层:处理设备级标识符,例如 MAC 地址。
第 1 层 – 物理层:传输数据所需的电缆、无线电波和电源。
当你发出任何类型的请求时,处理过程都从第七层开始。在这里,你的客户端会使用你指定的协议来构建请求。它可以是 SOCKS5、FTP、HTTPS,或者像我们这里一样,是 HTTP。
HTTP 代表超文本传输协议。以下是您需要了解的关于它的信息:
它是无国籍的。
每个请求都是独立的。服务器不会记住来自同一客户端的过往请求。如果需要记忆,可以使用 cookie、请求头或令牌来实现。
它是基于文本的
HTTP 消息是纯文本格式。如果有人拦截了请求,他们无需解码即可逐行读取。
它是请求-响应驱动的。
您(客户端)发送请求。服务器处理请求并返回响应。这就是整个通信过程。
现在我们来谈谈代理。
代理服务器是请求-响应链中的中间人。根据其配置,它会拦截你的请求,终止该请求,并构建一个新的请求发送给目标服务器。目标服务器将代理服务器视为客户端并响应它;然后代理服务器将响应返回给你。
市面上有很多种代理服务器。选择使用哪种代理服务器时,你需要考虑一些因素,例如IP地址的来源、是静态的还是轮换的,以及(就我们的情况而言)它们支持的协议。
通过我们之前讨论过的HTTP协议路由请求的代理服务器被称为HTTP代理。如果您通过HTTP代理发送HTTP请求,它会将您的请求通过HTTP协议重新路由到目标服务器。
即使是HTTP代理也有很多种形式。它们可以根据在HTTP请求-响应链中的位置以及隐藏客户端原始IP地址的程度进行分类。
每一次互联网请求中,都涉及三个关键角色:
你的网页浏览器(或你使用的任何客户端)
您正在连接的服务器
请求本身
在此链中插入 HTTP 代理的位置决定了您处理的是正向 HTTP 代理还是反向代理。
前向代理
正向HTTP代理是一种面向客户端的HTTP工具。它位于客户端和开放互联网之间,在请求到达服务器之前对其进行检查和修改。
你需要将浏览器或系统配置为首先向代理服务器发送请求。然后,代理服务器就充当客户端,至少从互联网的角度来看是这样。
由于这一切都发生在 HTTP 协议的第 7 层(数据层),代理服务器可以完全了解请求的结构和含义。假设您在配置为使用正向 HTTP 代理的浏览器中搜索“住宅代理”。根据您的代理配置方式,它可以检查和记录以下内容:
HTTP 方法:客户端发送的 HTTP 请求类型。
目标主机:请求尝试访问的完整域名或 IP 地址,通常来自主机头。
路径:您输入的完整网址和搜索查询。
标头:标头,包括 User-Agent、Host 和 Accept。
请求体:PUT、PATCH 和 POST 请求的完整体。
转发型HTTP代理可以做什么?
利用转发式 HTTP 代理提供的请求可见性,您可以做很多事情。以下是一些常见的用例:
绕过限制
当您通过位于其他国家/地区的代理服务器路由流量时,目标网站看到的是代理服务器的 IP 地址,而不是您的 IP 地址。这有助于您绕过基本的地理限制。
访问和控制过滤
正向 HTTP 代理服务器让您可以完全了解每个出站请求的结构。您可以阻止对特定路径(例如 /downloads 或 /games)的请求,同时允许其他路径的请求通过。
策略执行和日志记录
组织使用转发 HTTP 代理来记录传出的请求,以用于策略执行或审计目的。
缓存和带宽节省
当一个客户端下载文件时,代理服务器会在本地存储一份副本。如果其他客户端请求同一个文件,它们会直接从代理服务器获取,而不是从互联网获取。这样可以节省带宽并提高速度。
反向代理
正向HTTP代理位于客户端和互联网之间,而反向HTTP代理则运行在另一端。它位于后端服务器和外部世界之间,代表后端服务器处理所有传入的请求。
当用户通过您的网站访问网络内容时,反向代理会接收他们的流量,检查请求的完整结构,并决定由其背后的哪个服务器来响应。
如果您运营高流量网站或 API,请配置此代理设置,以隐藏您的真实基础设施,并在任何数据访问后端之前应用访问控制。由于代理服务器位于第 7 层,因此它可以识别所有 HTTP 方法、路径和标头,从而使您能够配置代理逻辑以实现安全扩展。
那么,反向HTTP代理在实践中是如何工作的呢?
从客户端的角度来看,他们向您的网站发送了一个请求。但实际上,该请求会被路由到反向代理服务器,反向代理服务器会终止连接,读取请求,然后接管后续操作。根据您配置代理服务器的方式,可能会出现以下情况:
移除授权标头并注入已签名的令牌以供内部服务使用。
将文件上传请求路由到专用的上传处理程序,而不是默认应用程序。
如果 IP 地址与拒绝列表匹配或路径触发速率限制,则阻止请求。
添加标头以保护客户端 IP,同时对后端保持透明。
提供缓存版本,而不是唤醒您的基础设施。
只有在应用这些规则之后,反向代理才会打开与内部服务的新连接。它会转发修改后的请求,收集响应,并将其发送回客户端,就好像请求直接来自源服务器一样。
反向代理能为您的网站带来什么好处?
以下是您可能需要为网站配置反向代理的原因:
负载均衡
反向HTTP代理可以将传入流量分配到多个后端服务器上。
缓存
当客户端请求静态或半静态内容,例如 /docs、/pricing 甚至整个 HTML 页面时,反向代理可以拦截请求并直接返回缓存版本。后端服务器无需参与,从而节省资源并大幅缩短响应时间。
访问控制
如果您只想让特定用户访问网站的特定部分,可以配置反向 HTTP 代理来强制执行此操作。代理会检查请求头、Cookie 或路径,并丢弃任何不匹配的内容。您还可以通过基于 IP 地理位置拒绝请求,从而在请求到达后端之前阻止整个地区的访问。
您还可以根据 HTTP 代理处理 IP 地址的方式来选择代理:
透明代理
透明代理会将您的请求转发到目标服务器,而不会隐藏代理的存在。它会传递您的原始 IP 地址,并保留完整的 HTTP 标头。这些代理并非为保护隐私而设计。它们通常用于访问控制、内容过滤、流量监控以及通过缓存节省带宽。
匿名代理
匿名代理会在不暴露您的 IP 地址的情况下转发您的请求,但目标服务器仍然可以检测到使用了代理。这些代理可用于基本的公共数据抓取、绕过地理限制以及隔离流量以进行测试或监控。
精英代理人
顶级代理服务器提供最高级别的隐私保护。它们会隐藏您的 IP 地址以及使用代理服务器的事实,使请求看起来像是来自合法客户端。它们是敏感交易、绕过地理限制、高级网页抓取以及其他需要高度隐蔽性的任务的理想选择。
为了最大程度地保护隐私,请选择住宅代理。它们使用真实设备的 IP 地址,因此比数据中心代理更难被检测到,也更可靠。
HTTP代理会根据其是否隐藏或暴露您的IP地址以及在连接路径中的位置而带来风险和限制。让我们来分析一下使用HTTP代理的主要限制:
基于报头的检测
由于代理服务器会添加标头,因此它们留下的任何痕迹都会让服务器识别出你使用的代理服务器。
IP信誉
HTTP代理的来源和信誉至关重要。如果有人将代理的IP地址列入滥用目录,或者目标服务器将其标记为恶意服务器,无论您选择哪个位置,都会被屏蔽。
安全风险
HTTP协议本身的设计就是不加密的,所以当你使用HTTP代理访问URL时,整个请求都会以明文形式发送。任何监控流量的人(无论是在你的设备和代理之间,还是在代理和目标服务器之间)都可以看到所有内容。这就是为什么你不应该使用HTTP代理来传输敏感信息的原因。
HTTP代理本身无法检查HTTPS流量。它们最适合数据泄露风险较低的安全环境。对于更敏感的应用场景,HTTPS代理是更合适的选择。
尽管名称如此,HTTPS代理并不会代表您发送HTTPS请求。它处理的是一种名为CONNECT的特殊HTTP方法,该方法指示代理打开一条到目标服务器的原始TCP隧道。隧道建立后,您的客户端会通过该隧道发送加密流量。代理无法看到请求内容——它只知道您连接的是哪个主机和端口。
这就是HTTP代理和HTTPS代理最大的区别。HTTP代理可以读取和重写请求的每个部分,而HTTPS代理则不能。它们对请求头、路径、方法和请求体一无所知。它们所做的只是在客户端和服务器之间传输加密数据包。
当隐私比控制更重要时,请使用HTTPS代理。
如果您要发送敏感信息、抓取 HTTPS 网站或在不受信任的网络环境中工作,请配置代理设置以支持 HTTPS 隧道。HTTPS 隧道可以确保您的网络流量全程加密。这样,无论是代理服务器还是中间攻击者都无法读取您的网络活动。
如果您需要控制网络流量,HTTP 代理仍然是首选工具。您可以使用它们来控制网络流量、阻止或重写请求以及记录活动。但是,如果您优先考虑的是在不泄露隐私的情况下安全访问网络内容,则应将代理配置为支持 HTTPS。
现在您已经了解了什么是 HTTP 代理服务器以及它如何控制 Web 请求。当您需要控制 Web 流量时,请使用 HTTP 代理;当数据安全是首要考虑因素时,请使用 HTTPS 代理。如需了解如何为您的用例选择合适的 HTTP 代理服务器