集成 · 协议
HTTP、HTTPS 和 SOCKS5,以及网关处理各协议的确切方式。
采用标准协议,无需自定义客户端。本页为需要了解网络传输细节的用户准确说明各项行为。
速查表#
| 目标 | 客户端中的代理 URL | 端口 |
|---|---|---|
http:// 和 https:// URL | http://USER:[email protected]:9000 | 9000 |
| 任何基于 TCP 的流量,主机名由出口解析 | socks5h://USER:[email protected]:9001 | 9001 |
| 同上,但主机名由本机解析 | socks5://USER:[email protected]:9001 | 9001 |
| 专用地址,HTTP(S) | http://USER:[email protected]:8000 | 8000 |
| 专用地址,SOCKS5 | socks5h://USER:[email protected]:8001 | 8001 |
HTTP#
对于普通的 http:// 目标,客户端会把带有绝对 URI 和 Proxy-Authorization 标头的请求发送到 9000 端口。网关会移除该标头,通过出口转发请求,并以流式方式返回响应。支持采用 keep-alive 的 HTTP/1.1;保持活动的连接会继续使用同一出口(参见轮换)。
HTTPS#
对于 https:// 目标,客户端发送 CONNECT host:443,网关则从出口建立原始隧道。TLS 握手通过该隧道在客户端与目标之间完成:网关不会解密、检查或重新签名任何内容,你所验证的证书就是目标本身的证书。在隧道内协商的 HTTP/2 和 HTTP/3-over-TCP 回退机制与直连时行为相同。
SOCKS5#
- 支持 RFC 1928,可使用用户名/密码身份验证(RFC 1929),白名单地址也可以免验证。
- 可通过
CONNECT连接除 25 之外的任何 TCP 端口。不支持BIND和UDP ASSOCIATE:不支持 UDP,也不支持入站连接。 - 发送主机名(地址类型 0x03),让出口负责解析;在 curl、Python 和 Node 中,
socks5h://表示的正是这种方式。如果客户端在本地解析并发送 IP,请求仍能工作,但 DNS 查询发生在你的设备上。 - 非 HTTP 的 TCP 协议以及仅支持 SOCKS 的客户端应选择 SOCKS5;对于 Web 流量,HTTP 端口的效果相同。
标头#
网关会移除 Proxy-Authorization 和 Proxy-Connection,且不会添加任何内容:没有 Via、X-Forwarded-For 或 X-Real-IP。目标收到的是出口设备原样发出的请求,这正是该网络的用途。请自行设置 User-Agent、Accept-Language 及其他标头,使其与出口所在国家一致。
不支持的功能#
- 任何形式的 UDP(配置代理后,所有浏览器中的 QUIC 都会回退到 TCP)。
- IPv6 目标:出口使用 IPv4。
- 直接与代理端口建立 TLS(即将
https://用作代理协议)。到网关这一段不加密;参见端点。 - FTP、使用 25 端口的 SMTP,以及需要代理反向连接到你的协议。