HTTPS 代理的工作原理
客户端首先请求代理打开一条通往网站端口(通常为 443)的 TCP 连接:
CONNECT example.com:443 HTTP/1.1
Host: example.com:443
HTTP/1.1 200 Connection Established
代理返回 200 后,客户端通过该连接与 example.com 开始 TLS 握手。代理转发加密字节,网站记录的是代理出口 IP,而不是用户自己的 IP。
除非启用了 TLS 检查,否则代理无法读取隧道内的 URL 路径、请求头或响应正文。
HTTPS 代理与 HTTP 代理的区别
| 特性 | 通过 CONNECT 访问 HTTPS | 通过代理访问纯 HTTP |
|---|---|---|
| 目标 URL | https://example.com/ |
http://example.com/ |
| 代理方法 | CONNECT,随后转发字节 | GET、POST 或其他 HTTP 方法 |
| 内容是否可见 | 受网站 TLS 保护,代理无法读取 | 代理可读取 |
这些名称并不一定代表不同的产品。HTTP 代理 只要支持 CONNECT,也可能称为 HTTPS 代理。另外,https:// 代理端点会使用 TLS 保护客户端与代理之间的连接,从而保护这段链路上的 CONNECT 请求和代理认证信息。
HTTPS 代理会暴露哪些信息
- 网站看到的是代理 IP。 通过代理建立连接后,网站不会收到用户的直接公网 IP。
- 代理可以看到连接元数据。 包括用户 IP、目标主机或 IP、连接时间和流量大小。
- TLS 检查会改变信息的可见范围。 如果设备信任受管代理的证书颁发机构,该代理就能终止并重新建立 TLS 连接。
- 客户端特征仍然可见。 网站仍可检查 Cookie、行为和 TLS 指纹。代理不会让自动化程序呈现得像普通浏览器。
如何配置 HTTPS 代理
-
确认支持 CONNECT。 代理必须允许连接所需的目标端口。
-
检查端点协议。 只有服务支持受 TLS 保护的代理连接时,代理地址才能使用
https://。 -
正确添加认证信息。 如果缺少代理认证信息或信息无效,代理通常会返回 407 Proxy Authentication Required。
-
测试一个 HTTPS 请求。 如果代理支持受 TLS 保护的端点,可以使用 curl 测试:
curl --proxy https://proxy.example.com:8443 --proxy-user USER:PASSWORD https://example.com/
隧道连接成功并不意味着网站的访问规则会失效。请遵守网站条款、robots.txt 指令和限速要求。
常见问题
HTTPS 代理会加密我的所有流量吗?
不会。只有已配置使用该代理的应用所发送的流量会经过代理。HTTPS 目标使用 TLS 加密,但纯 HTTP 流量离开代理后仍未加密。
HTTPS 代理能读取我的密码吗?
使用普通 CONNECT 隧道连接 HTTPS 网站时不能。如果客户端信任代理的证书,执行 TLS 检查的代理就能读取密码;此外,客户端与代理之间的连接也必须受到保护,才能安全传输代理认证信息。
HTTPS 代理与 HTTP 代理相同吗?
通常相同。HTTP 代理可以通过 CONNECT 传输 HTTPS 流量。https:// 代理端点还会为客户端与代理之间的连接增加 TLS 保护。