代理协议 · 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 认证。若上游无需认证,删除 usernamepassword;若上游是明文 HTTP 代理,删除 tlssni

  • 出现 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