iOS 代理设置:为什么 iPhone 和 iPad 的 Wi-Fi 代理仅支持 HTTP,以及如何使用 SOCKS5
iOS Wi-Fi 代理设置没有 SOCKS5 选项,只有服务器和端口。下面说明这个 HTTP 代理能做什么、不能做什么,支持 SOCKS5 的应用在 iOS 上如何工作,以及如何验证你没有发生泄漏。
iOS 代理设置看起来很简单:一个服务器、一个端口和一个密码。它们没有提供的是 SOCKS5 选项。这让想要通过 SOCKS5 代理路由 iPhone 或 iPad 流量的用户感到意外。本指南解释内置 Wi-Fi 代理能做什么、为什么 SOCKS5 在 iOS 上需要不同的方法,以及如何验证你的流量确实走了代理。
iOS Wi-Fi 代理设置实际支持什么
在 iPhone 或 iPad 上,前往“设置”>“Wi-Fi”,轻点已连接网络旁边的信息按钮,然后选择“配置代理”。你可以选择“关闭”、“手动”或“自动”。“手动”会要求填写:
- 服务器
- 端口
- 认证信息(如需要)
没有用于选择 HTTP、HTTPS、SOCKS4 或 SOCKS5 的协议下拉菜单。内置设置是 HTTP 代理。它可以处理 HTTP 请求,并且通常通过 HTTP CONNECT 方法处理 HTTPS 流量,但它不是 SOCKS5 代理。
用内置 HTTP 代理可以做什么
当你有一个支持 HTTPS 隧道的 HTTP 代理时,内置代理很有用。它可用于尊重 iOS 系统代理的浏览器和应用。然而:
- 它不接受 SOCKS5 凭据或 SOCKS5 特有选项。
- 它可能无法覆盖所有应用。有些应用使用自己的网络栈,并忽略系统代理设置。
- 与桌面操作系统相比,它的绕过控制有限。
- 当你需要远程 DNS 和更广泛的流量路由时,它不能替代 VPN 或支持 SOCKS5 的应用。
为什么 SOCKS5 在 iOS 上需要不同的方法
iOS 应用处于沙盒环境中。普通应用无法轻松创建一个其他所有应用都能使用的本地 SOCKS5 监听器。要通过 SOCKS5 路由系统范围的流量,你通常需要一个能创建 Network Extension 或 Personal VPN 配置描述文件的应用。这些应用可以接受 SOCKS5 服务器,并根据规则路由流量。
常见示例包括 Shadowrocket、Quantumult 和 Potatso,但它们的功能、可用性以及在 App Store 的上架情况因地区而异,并且会随时间变化。在依赖某一款应用之前,请查看当前的应用列表和文档。本指南不背书任何特定的付费应用,也不声称任何应用适合所有用例。
在 VPN 配置描述文件应用中设置 SOCKS5 代理
具体步骤取决于应用,但总体流程相似:
- 安装一款明确支持 SOCKS5 的信誉良好的应用。
- 添加新的代理或服务器配置。
- 输入主机、端口和认证信息。
- 如果应用询问,选择 SOCKS5 作为协议。
- 在全局路由和基于规则的路由之间做出选择。
- 当 iOS 提示你时,允许 VPN 配置。
- 启用配置描述文件并进行测试。
请记住,该应用可以看到连接元数据。使用可信的提供商,保持应用更新,并避免通过你无法控制的代理发送敏感数据。
你能在 iPhone 上使用 SSH 动态转发吗?
iOS 上的 SSH 客户端可以创建本地端口转发,但这些端口通常只能在同一应用内使用。由于沙盒机制,你通常无法从另一个 SSH 应用将 Safari 或其他应用指向 127.0.0.1:1080。一些代理应用直接集成 SSH 隧道;如果你需要该功能,请查看应用的文档,而不是想当然地认为它可以工作。
如何在 iPhone 和 iPad 上验证代理
- 打开 Safari,在启用代理的情况下检查你的公网 IP。
- 关闭 Wi-Fi,再通过移动数据检查 IP。
- 运行 DNS 泄漏测试,查看 DNS 查询是否在你预期的位置解析。
- 测试你关心的特定应用,而不仅仅是 Safari。
- 检查 WebRTC 或其他浏览器功能是否会暴露绕过代理的 IP 地址。
- 禁用代理或 VPN 配置描述文件,并确认流量恢复正常。
常见的 iOS 代理错误
- 期望 Wi-Fi 代理对话框接受 SOCKS5。
- 为只支持 SOCKS5 的应用使用 HTTP 代理。
- 测试后忘记禁用代理。
- 尝试在一个应用中使用另一个应用的本地端口。
- 将登录凭据交给免费代理应用并信任它。
- 假设所有应用都遵循系统代理或 VPN 配置描述文件。
要点
iOS 内置代理设置仅支持 HTTP。要在 iPhone 或 iPad 上使用 SOCKS5,请使用能创建 Network Extension 或 VPN 配置描述文件并支持 SOCKS5 的应用,然后验证出口 IP 和 DNS 行为。如果你只需要为浏览器进行 HTTP 代理,内置设置可能就足够了;如果你需要跨应用使用 SOCKS5,则要预期使用专用工具。