副标题: 一次搞定!从零开始,完美解决 command not found 和 SIP 导致的“代理无效”问题
简介
在 macOS 上,我们经常需要让命令行工具(比如 gemini cli、curl 或 git)通过一个本地代理(如 SOCKS5)访问网络。
proxychains-ng 是解决这个问题的“神器”,它能“强制”任何程序通过你的代理。
然而,在 macOS 上的安装配置有几个著名的“天坑”:
- 安装后提示
command not found。 - 配置后运行,却发现它根本没有生效(依然显示真实 IP)。
本指南将带你从零开始,一次性“正确”地完成所有配置,完美避开这些问题。
第一步:安装 (使用 Homebrew)
我们假设你已经安装了 Homebrew。打开你的 Terminal,运行:
# 安装 proxychains-ng
brew install proxychains-ng
# 【关键】同时安装 Homebrew 版本的 curl
# 为什么?我们稍后会解释。这是为了解决 SIP 保护问题。
brew install curl
第二步:配置 proxychains.conf 文件
安装后,我们需要告诉 proxychains 你的本地代理在哪里。
-
找到配置文件:
- Apple Silicon (M1/M2/M3...):
/opt/homebrew/etc/proxychains.conf - Intel Mac:
/usr/local/etc/proxychains.conf
- Apple Silicon (M1/M2/M3...):
-
编辑文件(请使用你自己的 Mac 对应的路径):
# 示例:使用 nano 编辑器,针对 Apple Silicon nano /opt/homebrew/etc/proxychains.conf -
修改
[ProxyList]: 滚动到配置文件的最底部,找到[ProxyList]。- 注释掉 (加
#) 默认的示例 (通常是socks4 127.0.0.1 9050)。 - 添加你自己的代理信息。
假设你的本地代理是
127.0.0.1端口8080(SOCKS5 混合端口),配置如下:[ProxyList] # 把默认的这行注释掉 # socks4 127.0.0.1 9050 # 添加你自己的代理 # (推荐使用 socks5h,'h' 表示代理服务器负责 DNS 解析,防止 DNS 泄露) socks5h 127.0.0.1 8080 - 注释掉 (加
-
保存并退出 (在 nano 中:按
Control + O保存,Enter确认,Control + X退出)。
第三步:【核心】配置 PATH,解决两大天坑
这是本指南最重要的一步。我们将通过配置 .zshrc (假设你使用 Zsh) 来一劳永逸地解决 command not found 和 SIP 代理无效的问题。
-
打开配置文件:
nano ~/.zshrc -
在文件末尾添加以下三行: 这三行代码将确保 Shell 优先找到 Homebrew 安装的程序。
# --- ProxyChains & Homebrew 路径配置 --- # (解决天坑1:让 Shell 找到 proxychains4 命令) export PATH="/opt/homebrew/bin:$PATH" # (解决天坑2:强制使用 Homebrew 的 curl,绕过 SIP 保护) export PATH="/opt/homebrew/opt/curl/bin:$PATH" # (可选,但推荐:设置一个别名,用 'pc' 代替 'proxychains4') alias pc='proxychains4' # --- 配置结束 ---(注意: 如果你是 Intel Mac,请把
/opt/homebrew替换为/usr/local) -
保存并退出 (
Control + O,Enter,Control + X)。 -
【关键】让配置生效! 你必须完全关闭当前的 Terminal 窗口,然后打开一个全新的窗口。 (或者,在当前窗口运行
source ~/.zshrc来重新加载)
第四步:测试与验证
在你的新 Terminal 窗口中,执行以下测试:
1. 验证 curl 路径
检查你是否在使用“未受保护”的 curl 版本:
which curl
- 正确输出:
/opt/homebrew/opt/curl/bin/curl - 错误输出:
/usr/bin/curl(如果是这个,说明第三步没做对)
2. 验证 proxychains (别名)
检查别名是否生效:
which pc
- 正确输出:
pc: alias to proxychains4
3. 最终测试:IP 地址
测试 A (不通过代理):
curl -4 ip.me
- 输出:你的真实 IP 地址
测试 B (通过代理):
pc curl -4 ip.me
如果你在测试 B 中看到了与测试 A 不同的 IP 地址,恭喜你,你已成功!
总结
现在,你可以使用这个简洁的 pc 别名来为你所有需要代理的命令服务了:
# 访问 Gemini CLI
pc gemini [你的命令]
# 使用 git clone
pc git clone [仓库地址]
# 任何其他命令...
pc [command]
文章评论