Skip to content

HTTP 和 HTTPS

iPhone 版 Potatso 支持的 HTTP 和 HTTPS 代理选项、链接和功能,包括 Basic 认证、TLS、证书固定和 CONNECT 头部。

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 出站)。

手动添加 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。

  • 使用规则时,Potatso 会跳过把 UDP 发往 HTTP 或 HTTPS 代理的规则,由下一条匹配的规则决定。没有其他规则匹配的 UDP 会直接发送。
  • 在全局模式下,UDP 无法使用,因为所有流量都必须经过代理。

如果也要让 UDP 经过代理,请使用协议支持 UDP 的服务器,如 SOCKS5 或 Shadowsocks。

功能支持

功能 支持情况
到 IPv4、IPv6 和域名目标的 CONNECT 隧道(RFC 9110 §9.3.6) ✅
Basic 认证(RFC 7617),UTF-8 密码 ✅
Digest 认证(RFC 7616) ❌
HTTPS 代理(基于 TLS 的 HTTP) ✅ 支持服务器名称、证书固定和跳过证书验证
自定义 CONNECT 头部 ✅ 来自导入
IPv6 代理地址 ✅
HTTP/2 CONNECT(RFC 9113 §8.5) ❌
HTTP/3 CONNECT(RFC 9114 §4.4) ❌
通过代理传输 UDP(CONNECT-UDP,RFC 9298) ❌
不使用 CONNECT 的纯 HTTP 转发(绝对形式请求) ❌ 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%3Ass 表示 p:ss。
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 地址访问、证书名称为 proxy.example.com 的 HTTPS 代理:

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