词汇表

什么是 HTTP Proxy?

HTTP proxy 是一种能够理解并转发 HTTP(以及通过 CONNECT 方法转发 HTTPS)流量的代理服务器,运行于应用层,能够对纯 HTTP 的请求和响应数据进行检查、修改或缓存。

了解 HTTP proxy 与 SOCKS5 的区别、HTTP CONNECT 的作用,以及为何 HTTP proxy 是大多数爬虫和 HTTP 客户端默认支持的协议。

详解

HTTP代理是最常见的代理服务器类型。它在应用层理解HTTP:当您的客户端发送请求时,代理可以读取URL、请求头,以及(对于明文HTTP)请求体,然后再将请求转发到目标地址。对于HTTPS,代理使用CONNECT方法向目标建立TCP隧道,之后仅转发加密字节而无法查看内容。

大多数商业代理服务——包括住宅、ISP和数据中心提供商——都暴露HTTP代理端点,因为每个HTTP客户端和库都原生支持它们。设置`HTTP_PROXY`和`HTTPS_PROXY`环境变量、向Python的`requests`传递`proxies={...}`,或在Playwright中配置启动参数,均可直接使用形如`http://user:pass@gate.shifter.io:10000`的HTTP代理URL,开箱即用。

HTTP与SOCKS5的区别主要在于架构层面。HTTP代理工作在应用层(可解析HTTP);SOCKS5工作在传输层(仅转发TCP/UDP字节)。对于HTTPS抓取,两者的区别几乎可以忽略——最终都是对加密字节进行隧道传输——而HTTP代理在各类工具中的支持更为普遍。

工作原理

对于普通 HTTP,客户端向代理发送完整请求(使用绝对 URL 的 `GET http://example.com/path HTTP/1.1`),代理读取 URL,与目标建立连接,转发请求,并将响应中继回来。对于 HTTPS,客户端首先向代理发送 `CONNECT example.com:443` 请求,代理向目标打开一条 TCP 隧道,此后客户端与服务器通过代理进行端到端的 TLS 通信,代理仅负责转发加密字节。

身份验证通常通过 `Proxy-Authorization` 请求头(使用 用户名:密码 的 Basic 认证)或将凭据编码在代理 URL 中(`http://user:pass@host:port`)来实现。商业服务中的地理定向和会话参数通常编码在用户名中(`customer-USER-country-us-session-12345`)。

类型

正向 HTTP Proxy

商业代理服务的常见形态。位于客户端前方,代表客户端与外部互联网通信。客户端需显式配置代理地址。

反向 HTTP Proxy

位于后端服务器前方,用于负载均衡、缓存和 SSL 终止(如 Nginx、HAProxy、Cloudflare)。客户端无感知反向代理的存在。

HTTP CONNECT 隧道

HTTP proxy 处理 HTTPS 的机制。客户端请求代理向目标建立隧道,随后通过隧道与目标进行端到端的 TLS 通信。

HTTPS 代理

通过 TLS 与之通信的 HTTP proxy。客户端到代理的连接经过加密(在通过 CONNECT 隧道进行端到端 TLS 的基础上额外加密)。较少见,常用于注重隐私的配置场景。

常见使用场景

抓取 HTTP/HTTPS 内容(最主要的使用场景)
通过固定 IP 出口访问 API
企业内部出口流量过滤
缓存静态内容以节省带宽
集中认证出站流量
开发/测试环境中的按应用 HTTP 路由
常见问题

常见问题

关于以下内容的常见问题 http 代理.

HTTP proxy 运行于应用层,能够解析 HTTP 请求;SOCKS5 proxy 运行于传输层,转发原始 TCP/UDP 数据。对于 HTTPS,两者的区别主要是表面上的——最终都是在隧道中传输加密字节。当需要代理非 HTTP 协议(如 FTP、SMTP、BitTorrent、游戏流量)时,SOCKS5 更具优势。