# HTTP、HTTPS CONNECT 和 SOCKS5 TCP 如何选择？

比较三种客户端代理协议的能力、DNS 行为和常见使用场景。

协议应根据客户端能力和目标请求选择。当前客户端接入支持 HTTP、HTTPS CONNECT 和 SOCKS5 TCP。

## HTTP

- 适合普通 HTTP 请求和支持 HTTP 代理的开发库。
- 客户端把请求交给代理网关，由网关转发到目标地址。

## HTTPS CONNECT

- 客户端通过 HTTP 代理建立 CONNECT 隧道。
- 目标站 TLS 握手在隧道内完成。

## SOCKS5 TCP

- 适合需要通用 TCP 转发或原生支持 SOCKS5 的客户端。
- 访问域名时优先使用代理侧解析选项，减少本地 DNS 泄漏。

## 选择建议

- 浏览器和常见 HTTP 库优先使用 HTTP/HTTPS CONNECT。
- 明确需要 SOCKS5 的客户端再选择 SOCKS5 TCP。
- 协议填写错误常表现为认证失败或握手失败。

## 验证步骤

1. 先用 HTTP 代理方式请求一个 HTTPS 检测地址，确认客户端能够建立 CONNECT 隧道。
2. 再用 `socks5h` 请求同一域名，确认域名解析随 SOCKS5 请求交给代理侧处理。
3. 记录每次请求所用协议、状态码、出口 IP 和耗时，不在日志中记录完整凭据。

## 预期结果

- HTTP 代理访问 HTTPS 目标时完成 CONNECT 与 TLS 握手；SOCKS5 TCP 请求能够返回同类业务响应。
- 两种协议都可用不代表出口必须相同，动态住宅调度仍按当前连接和会话规则执行。

## 失败边界

- `Unsupported proxy syntax` 等本地错误发生在客户端解析阶段，请求尚未到达网关。
- TLS 证书错误属于目标握手或本地信任链问题；只有明确的 `407` 才进入代理认证排查。
