代理协议 · Clash文档

HTTP / HTTPS 出站代理

Clash 生态 HTTP 出站配置参考,以当前 Mihomo 字段为准,涵盖 CONNECT 隧道、代理认证、HTTPS 上游与证书校验。

  • CONNECT
  • TLS
  • SNI
  • 证书校验
  • mTLS
代理协议
本文章节

HTTP 出站如何建立连接

客户端先连接 server:port 指定的上游代理,再发送 HTTP CONNECT 请求建立到目标主机的 TCP 隧道。目标站点使用 HTTP 还是 HTTPS,不会改变这里的节点类型。

type: http 默认表示以明文连接上游代理。只有设置 tls: true,客户端到上游代理这一段才会使用 TLS。HTTP 出站本身不提供 UDP 转发。

最小必填字段

以下四项构成一个无需认证的最小 HTTP 出站。节点名称用于策略组和规则引用,不能与其他节点重名。

name必填
节点名称,后续在 proxy-groups 或规则中使用。
type必填
固定填写 http。
server必填
上游 HTTP 代理的域名或 IP 地址。
port必填
上游代理监听端口,端口号本身不决定是否启用 TLS。

认证与 CONNECT 请求头

上游需要 Basic 代理认证时同时填写用户名和密码。headers 会加入 CONNECT 请求,可按网关要求覆盖默认的 Host、User-Agent 或 Proxy-Connection 等请求头。

username按需
上游代理认证用户名。当前实现只有用户名和密码都非空时才发送 Basic 认证。
password按需
与 username 配套的代理认证密码。
headers按需
键值形式的 CONNECT 请求头。不要把目标网站的普通请求头配置在这里。

HTTPS 上游与证书校验

开启 TLS 后,SNI、证书名称和证书链都针对上游代理,而不是最终访问的网站。正常情况下应保留证书校验。

tls按需
设为 true 后,以 TLS 连接上游 HTTP 代理。
sni按需
TLS 握手中的服务器名称,省略时使用 server。
name-cert-verify按需
单独指定证书 DNSName 校验目标,不会修改 SNI。
skip-cert-verify谨慎
跳过证书校验,仅适合明确了解风险的临时排错。
fingerprint按需
完整证书的 SHA-256 指纹,不是浏览器客户端指纹。
certificate / private-key按需
成对填写时启用 mTLS,支持 PEM 内容或对应文件路径。

HTTPS 认证节点示例

示例同时启用上游 TLS 和 Basic 认证。若上游无需认证,删除 username 与 password;若上游是明文 HTTP 代理,删除 tls 与 sni。

  • 出现 TLS 握手错误时,先确认上游是否真的提供 HTTPS 代理服务。
  • 出现 407 Proxy Authentication Required 时,核对账号、密码和上游允许的认证方式。
  • 出现 CONNECT method not allowed 时,上游可能不是正向代理,或未允许 CONNECT 方法。
YAML
proxies:
  - name: http-upstream
    type: http
    server: proxy.example.com
    port: 443
    username: user
    password: pass
    tls: true
    sni: proxy.example.com