macos软件不走代理的关键在于系统设置、终端环境、应用网络栈、权限策略四层错位;需按软件类型(系统级/gui/终端/沙箱)分别处理代理配置与权限。
软件在 macos 上不走代理,通常不是代理没开,而是代理没“对上人”——系统设置、终端环境、应用自身网络栈、权限策略四层之间存在错位。解决关键在于分清哪类软件、走哪条路径、受什么机制约束。
区分软件类型:系统级、终端命令、GUI 应用、沙箱应用
不同软件遵循的代理规则完全不同:
- 系统级流量(Safari、邮件、App Store):只认「系统设置 → 网络 → 代理」里启用的 HTTP/HTTPS/PAC 设置,且「忽略主机与域」字段仅匹配完整域名(如 api.example.com),不支持 *.example.com 这类通配符;
- 终端命令(curl、wget、git、npm):完全无视系统代理界面,只读环境变量 http_proxy、https_proxy、no_proxy,且 no_proxy 支持点号前缀匹配(如 .internal 可匹配 db.internal 和 api.test.internal);
- GUI 应用(微信、QQ、VS Code):多数继承系统代理,但部分应用(如新版微信桌面版)自带网络模块,绕过系统设置,需用 Proxifier 强制绑定进程;
- 沙箱应用(微信开发者工具、Flutter 桌面端、Tauri App):即使开了系统代理,也会因缺失 com.apple.security.network.client 权限被系统拦截,表现为请求无响应或 ERR_ADDRESS_UNREACHABLE。
终端命令不走代理?优先检查 no_proxy 和 git 独立配置
很多用户设了 http_proxy 却发现 curl https://api.internal 仍连不上,问题往往出在 no_proxy 或更高优先级配置:
- 运行 echo $no_proxy,确认是否意外包含目标域名(如值为 localhost,127.0.0.1,.apple.com,则所有 .apple.com 子域都会跳过代理);
- 执行 git config --global --get http.proxy,若返回非空,git 会无视 no_proxy,需用 git config --global --unset http.proxy 清除;
- aws-cli、gcloud、docker 等工具常自带 proxy_url 配置项,需单独查文档关闭;
- 临时测试时,在终端中执行:no_proxy="" http_proxy=http://127.0.0.1:8080 curl -v https://httpbin.org/ip,可排除变量干扰。
GUI 软件不走代理?Proxifier 是最稳定方案
系统代理对微信、钉钉、企业微信等无效,因其网络请求由独立进程(如 WeChat Network)发出,不经过系统网络框架。此时应使用 Proxifier:
- 安装后打开 Proxifier → Profile → Proxy Servers,添加本地代理(如 127.0.0.1:7890);
- 进入 Rules → Add Rule,规则名填“WeChat”,Applications 选中 WeChat.app、WeChat Helper.app、WeChat Network.app;
- Action 设为 “Proxy HTTP”,Target Host 填 *.wechat.com 或留空表示全部流量;
- 确保规则顺序靠前,避免被“Default Rule”兜底直连。
沙箱应用连不上?必须开启网络权限并重编译
微信开发者工具、Flutter 桌面版等启动后报错“无法连接服务器”或白屏,大概率是权限缺失:
- 前往「系统设置 → 隐私与安全性 → 本地网络」,找到对应应用并开启开关(首次启动后才会出现);
- 若为自研应用(如 Flutter),需编辑 macos/Runner/DebugProfile.entitlements,加入:
com.apple.security.network.client com.apple.security.network.server ; - 在 Xcode 中执行 Product → Clean Build Folder,再重新编译运行;
- 若仍失败,终端运行 xattr -dr com.apple.quarantine "/Applications/微信开发者工具.app" 移除隔离属性。











