HTTP 代理是一種伺服器,當收到 HTTP CONNECT 請求時,會替你開啟連線。HTTPS 代理是同一種伺服器,但透過 TLS 連上,所以與代理之間的連線同樣經過加密。Potatso 可連接這兩種代理,有無使用者名稱和密碼都可以。
HTTP 代理只承載 TCP。其餘流量的處理方式請見 UDP。
你可以手動加入 HTTP 或 HTTPS 代理、使用 http:// 或 https:// 連結,或透過匯入:
- Clash 或 Mihomo 訂閱(
type: http), - Surge 設定(
http和https), - Xray 或 V2Ray 設定(
httpoutbound)。
若要手動加入 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#EncodedHTTPS 代理:
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