Skip to content

HTTP 與 HTTPS

Potatso 支援的 HTTP 與 HTTPS 代理選項、連結與功能。

Updated 以 Markdown 檢視

HTTP 代理是一種伺服器,當收到 HTTP CONNECT 請求時,會替你開啟連線。HTTPS 代理是同一種伺服器,但透過 TLS 連上,所以與代理之間的連線同樣經過加密。Potatso 可連接這兩種代理,有無使用者名稱和密碼都可以。

HTTP 代理只承載 TCP。其餘流量的處理方式請見 UDP。

你可以手動加入 HTTP 或 HTTPS 代理、使用 http:// 或 https:// 連結,或透過匯入:

  • Clash 或 Mihomo 訂閱(type: http),
  • Surge 設定(http 和 https),
  • Xray 或 V2Ray 設定(http outbound)。

若要手動加入 HTTPS 代理,請選擇 HTTP 並開啟 TLS。

設定

設定 說明
伺服器、連接埠 代理的位址與連接埠。IPv6 位址也可以使用。
使用者名稱、密碼 選填。以 Basic 驗證傳送。
TLS HTTPS 代理需開啟。
伺服器名稱 僅限 HTTPS,選填。TLS 交握中傳送、並用來比對憑證的名稱。留空則使用伺服器位址。
略過憑證驗證 僅限 HTTPS。接受任何憑證。僅用於測試。
憑證釘選 僅限 HTTPS,選填。代理憑證的 SHA-256 指紋,以 64 個十六進位數字表示。設定釘選後,Potatso 只接受被釘選的憑證(包含自簽憑證),不接受其他任何憑證。

密碼可以包含任何字元,包括 : 和非 ASCII 字母。使用者名稱不可包含 :。

自訂標頭

Clash、Mihomo 或 Xray 設定可以在 CONNECT 請求中加入標頭,例如服務商要求的 User-Agent。Potatso 匯入代理時會保留它們,並在每個連線上傳送。Host 標頭會取代 Potatso 傳送的標頭。你無法在 App 中新增或編輯標頭。

憑證

HTTPS 代理需要你的裝置信任的憑證,除非你設定了憑證釘選或開啟略過憑證驗證。

Potatso 不支援:

  • HTTPS 代理的自訂 CA 憑證:請改為釘選代理的憑證,
  • TLS 用戶端憑證(Clash 的 certificate 和 private-key):Potatso 不會匯入需要它的代理,
  • ALPN 清單:Potatso 一律以 HTTP/1.1 與代理通訊。

UDP

HTTP 代理只承載 TCP,所以 Potatso 絕不會把 UDP 傳給它。QUIC、語音與視訊通話和許多遊戲都使用 UDP。

  • 使用規則時,如果規則把 UDP 導向 HTTP 或 HTTPS 代理,Potatso 會略過該規則,由下一條符合的規則決定。沒有其他規則符合的 UDP 會直接傳送。
  • 在全域模式下,UDP 無法運作,因為所有流量都必須經由代理。

若要讓 UDP 也經過代理,請使用協定支援 UDP 的伺服器,例如 SOCKS5 或 Shadowsocks。

功能支援

功能 支援
連到 IPv4、IPv6 與網域目標的 CONNECT 通道(RFC 9110 §9.3.6) ✅
Basic 驗證(RFC 7617),UTF-8 密碼 ✅
Digest 驗證(RFC 7616) ❌
HTTPS 代理(HTTP over TLS) ✅ 支援伺服器名稱、憑證釘選與略過憑證驗證
自訂 CONNECT 標頭 ✅ 來自匯入
IPv6 代理位址 ✅
HTTP/2 CONNECT(RFC 9113 §8.5) ❌
HTTP/3 CONNECT(RFC 9114 §4.4) ❌
透過代理傳送 UDP(CONNECT-UDP,RFC 9298) ❌
不使用 CONNECT 的純 HTTP 轉送(absolute-form 請求) ❌ Potatso 的每個連線都使用 CONNECT
TLS 用戶端憑證、自訂 CA、ALPN ❌

每一項支援的功能都用真實的代理伺服器測試過:tinyproxy、sing-box、Xray 和 Mihomo。

請使用伺服器的 CONNECT 連接埠,而不是只轉送一般網頁請求的網頁連接埠。有些代理只允許 CONNECT 到 443 連接埠。如果透過你的代理只有部分網站可用,請詢問服務商是否限制了 CONNECT 連接埠。

http:// 或 https:// 連結用一行就包含整個代理:

http://user:password@host:port#name
https://user:password@host:port?sni=…&insecure=1#name
部分 說明
user:password 選填。密碼中的 :、@ 與其他特殊字元請使用百分比編碼,例如 p:ss 寫成 p%3Ass。
host 代理位址。IPv6 位址請放在方括號中,例如 [2001:db8::1]。
port 代理連接埠。
sni 僅限 HTTPS,選填。伺服器名稱。Potatso 也會讀取 peer 和 servername。
insecure 僅限 HTTPS,選填。1 表示開啟略過憑證驗證。Potatso 也會讀取 allowInsecure 和 skip-cert-verify。
name 選填。代理在 Potatso 中的名稱。

連結無法包含憑證釘選或自訂標頭。Potatso 也會匯入較舊的形式,也就是 :// 與 # 之間的所有內容都以 Base64 編碼:

http://base64(user:password@host:port)#name

沒有密碼的代理:

http://proxy.example.com:8080#Open

使用者名稱為 alice、密碼為 s3cret 的代理:

http://alice:s3cret@proxy.example.com:8080#Basic

密碼 p:ss wörd 經過百分比編碼:

http://alice:p%3Ass%20w%C3%B6rd@proxy.example.com:8080#Encoded

HTTPS 代理:

https://alice:s3cret@proxy.example.com:443#TLS

透過 IP 位址連上的 HTTPS 代理,憑證名稱為 proxy.example.com:

https://alice:s3cret@203.0.113.10:443?sni=proxy.example.com#SNI

使用自簽憑證的 HTTPS 代理:

https://proxy.example.com:443?insecure=1#Self-signed

使用 IPv6 位址的代理:

http://[2001:db8::1]:8080#IPv6

基本代理的較舊形式:

http://YWxpY2U6czNjcmV0QHByb3h5LmV4YW1wbGUuY29tOjgwODA#Legacy
導覽

Type to search…

↑↓ navigate↵ selectEsc close