macOS 配置代理教程
发布:2026 年 7 月 19 日 · 阅读约 5 分钟
一句话总结: Mac 上代理不是只能在浏览器里生效。Apple 芯片的 Mac 直接装 Shadowrocket,开启后是系统级 VPN;不想装软件就用系统设置 → 网络 → 代理 → SOCKS 代理(gw.roamproxy.com 端口 41080),但命令行工具不读它,要单独配 ALL_PROXY;要全局接管或分流规则,用 Clash 系客户端的 TUN 模式。
三种方式怎么选
关于 macOS 我们被问得最多的问题是:「Mac 上是不是只能在浏览器里生效?怎么让全局生效?」答案是可以全局生效,一共三种方式,选哪种取决于你的芯片和对分流控制的需求。
| 方式 | 适用机型 | 接管范围 | 配置成本 |
|---|---|---|---|
| Shadowrocket | 仅 Apple 芯片 | 全部程序(系统 VPN) | 最低 |
| 系统代理设置 | 所有 Mac | 浏览器及遵守系统代理的程序 | 低,不装软件 |
| Clash 系客户端 TUN 模式 | 所有 Mac | 全部程序,另支持分流规则 | 最高 |
方式一:Shadowrocket(Apple 芯片 Mac 推荐)
M 系列芯片的 Mac 可以直接运行 iOS 版 Shadowrocket,配置方式和手机完全一样,是最省事的路子。
- 打开 Mac App Store 搜索 Shadowrocket,切到「iPhone 与 iPad App」标签页。开发者可以随时下架 iOS 应用在 Mac 上的安装权限,如果这里搜不到就说明当前不可用,直接改用方式二或方式三,不必纠结。
- 配置步骤直接看 Shadowrocket 教程:服务器
gw.roamproxy.com,端口41080,类型 SOCKS5,填网关用户名和密码。 - 开启后是系统级 VPN,所有 App 的流量都会走代理,不限于浏览器。
Intel 芯片的 Mac 装不了 iOS 应用,请用方式二或方式三。
方式二:系统代理设置(不装任何软件)
系统设置 → 网络 → 选中当前网络(Wi-Fi 或以太网)→ 详细信息 → 代理:
- 勾选 SOCKS 代理。
- 服务器填
gw.roamproxy.com,端口填41080。 - 勾选需要密码,填入用户名和密码。
- 点好 → 应用。
这种方式的局限,要提前知道
只有「遵守系统代理设置」的程序会走代理。Safari、Chrome 会遵守;很多命令行工具(curl、git、各种 SDK)默认不读系统代理,会继续用你的真实 IP 出站。「浏览器里显示代理 IP、脚本里却是本机 IP」这类反馈,绝大多数都是这个原因。
另外,系统代理设置本身不支持链式。大陆网络下无法直连我们的网关,所以这种方式在大陆环境不可用,请用方式一或方式三。
给命令行单独配置
export ALL_PROXY=socks5h://用户名:密码@gw.roamproxy.com:41080
用 socks5h 而不是 socks5,让 DNS 解析也走代理,避免 DNS 泄漏导致的解析失败。
密码含特殊字符要先编码。环境变量是 URL 格式,密码里的 #、@、/、: 会破坏解析,含 # 时 curl 会直接报 Unsupported proxy syntax。按下表替换后再填。
| 原字符 | 写成 |
|---|---|
# | %23 |
@ | %40 |
/ | %2F |
: | %3A |
单条 curl 命令则不必编码,用 -U 把凭据分开传更省事:
curl -x socks5h://gw.roamproxy.com:41080 -U '用户名:密码' https://ip.sb
方式三:Clash 系客户端(Intel Mac,或需要分流规则)
ClashX、Clash Verge 一类客户端支持「增强模式 / TUN 模式」,能在网络层接管全部系统流量,也支持把我们的节点串在你自己的出境节点后面。
代理配置片段:
proxies:
- name: RoamProxy
type: socks5
server: gw.roamproxy.com
port: 41080
username: 你的用户名
password: 你的密码
udp: true
大陆环境下的链式写法
大陆网络无法直连 gw.roamproxy.com:41080,在 RoamProxy 这条上加 dialer-proxy,指向你已有的出境节点:
dialer-proxy: 你的出境节点名称
这样 Clash 会先经由你的出境节点连到我们的网关,最终出口仍然是 Roam 的住宅 IP。
配完开启增强模式 / TUN 模式,即为全局生效。
验证
终端里跑:
curl https://ip.sb
返回 Roam 的出口 IP 即为成功。如果浏览器正常但 curl 显示本机 IP,说明只有系统代理生效、命令行没走上,回到方式二末尾配 ALL_PROXY。
打不开网站看 代理连上了但打不开网站。
常见问题
Mac 上是不是只能在浏览器里生效?
不是,只是大多数人默认那样配。macOS 的系统代理设置只对「主动读取系统代理」的程序生效,而浏览器恰好总是读。Shadowrocket 和 Clash 的 TUN 模式工作在网络层,整机所有程序都会被接管。只用浏览器的话系统代理设置就够;要让终端、Node、Python 或某个原生 App 走代理,请用 Shadowrocket、TUN 模式,或者在 shell 里单独配 ALL_PROXY。
浏览器正常,curl 却报 Unsupported proxy syntax 是怎么回事?
几乎可以肯定是代理密码里带了特殊字符。ALL_PROXY 是按 URL 解析的,密码里的 #、@、/、: 都会破坏解析,其中 # 会让 curl 直接拒绝整条字符串。把密码做百分号编码(# 写成 %23,@ 写成 %40),或者临时跑一条命令时用 -U 把凭据分开传,就不需要编码了。
socks5 和 socks5h 有什么区别,该用哪个?
用 socks5h。写成 socks5 时域名由本机解析,只有 TCP 连接走代理,既泄漏 DNS 查询,也常因为本地解析器够不到目标站点而直接失败。socks5h 把域名交给代理、由出口节点解析,地理定位结果才是准的。
Intel 芯片的 Mac 装不了 Shadowrocket,还有什么办法?
Intel Mac 无法运行 iOS 应用,Shadowrocket 这条路走不通。如果只需要浏览器和遵守系统代理的程序,用系统代理设置即可;要真正全局接管,装 ClashX 或 Clash Verge 一类客户端并开启 TUN 模式。三种方式里也只有 Clash 支持链式串接和按域名分流。
Roam 提供 SOCKS5 与 HTTP 两种接入方式,轮换住宅 $2/GB,静态住宅 $4/IP/月,一个网关适配本文全部三种配置方式。注册账号即送 300MB 试用流量,够你把 Mac 上的链路完整跑通再决定。