Oct 21, 2025 No Comments MacOS下为iTerm终端设置代理 平时上网一般只需要设置浏览器的代理即可,遇到特殊的网站可以开启全局代理解决。 但有时候在终端控制台下也会遇到访问慢的问题,特别是在终端下使用 `git clone` 拉取 `GitHub` 上的仓库时经常会遇到 `403Forbidden` 的情况。 如果你有使用 `ohmyzsh` 的话,感受应该会很深刻:几乎每次 `ohmyzsh` 需要升级时,都会遇到 `403` 的问题。 这是因为一些终端下的命令如 `git` 、`wget` 、`curl` 、`brew` 等,是不会默认走代理的,即使设置的是全局代理。 解决这个问题最好的方式就是 **为终端启用代理**。 ------ #### 选择哪种代理方式 一般的代理工具如 `Shadowsocks` 、`V2Ray` 等,都是支持 `http/socks5` 两种代理方式的,那我们应该选择哪种呢? #### socks5方式 `socks5` 代理方式,可以通过 `ALL_PROXY` 参数值来设置。 编辑 `~/.zshrc` 文件,假设代理工具的 `socks5` 端口为 `1080` ,则: ``` alias proxys5='export ALL_PROXY=socks5://127.0.0.1:1080' alias unproxys5='unset ALL_PROXY' ``` 之后执行 `source ~/.zshrc` 使配置生效。 那么,启用和关闭终端下的代理则执行 `proxys5` 和 `unproxys5` 即可。 测试一下,默认情况下: ``` ➜ curl ip.sb 123.120.226.74 ``` 启用终端下代理再次测试: ``` ➜ proxys5 ➜ curl ip.sb 204.44.66.25 ``` 如果看到获取到的ip变了,则说明 `socks5` 终端代理配置生效了。 #### socks5方式的不足 经过我的测试发现,使用 `socks5` 代理方式,请求某些ip时无效,也就是不会使用代理ip来访问。 如下的测试结果: - `curl ifconfig.co/json` :有效 - `curl ip.sb` :有效 - `curl cip.cc` :无效 后来我了解到: > 终端下很多工具目前只支持 `http` 和 `https` 等协议,对 `socks5` 协议支持不够好。 那改用 `http` 方式测试一下。 ------ #### http方式 `http` 方式需要通过 `http_proxy` 和 `https_proxy` 两个参数来配置。 编辑 `~/.zshrc` 文件,假设代理工具的 `http` 端口为 `1087` ,则: ``` alias proxyhp='export http_proxy=http://127.0.0.1:1087;export https_proxy=http://127.0.0.1:1087;' alias unproxyhp='unset http_proxy https_proxy' ``` 之后执行 `source ~/.zshrc` 使配置生效。 那么,启用和关闭终端下的代理则执行 `proxyhp` 和 `unproxyhp` 即可。 对 `http` 方式代理进行测试,发现以下情况都会使用代理ip来访问。 - `curl ifconfig.co/json` :有效 - `curl ip.sb` :有效 - `curl cip.cc` :有效 #### 总结 总结一下就是,最终选择 `http` 方式来设置终端代理。 最后更新于 2025-10-21 19:37:25 并被添加「」标签,已有 108 位童鞋阅读过。 本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处
此处评论已关闭