详解
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`)。