代理協定 · 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