0%

MacOS下为iTerm终端设置代理

平时上网一般只需要设置浏览器的代理即可,遇到特殊的网站可以开启全局代理解决。

但有时候在终端控制台下也会遇到访问慢的问题,特别是在终端下使用 git clone 拉取 GitHub 上的仓库时经常会遇到 403Forbidden 的情况。

如果你有使用 ohmyzsh 的话,感受应该会很深刻:几乎每次 ohmyzsh 需要升级时,都会遇到 403 的问题。

这是因为一些终端下的命令如 gitwgetcurlbrew 等,是不会默认走代理的,即使设置的是全局代理。

解决这个问题最好的方式就是 为终端启用代理


选择哪种代理方式

一般的代理工具如 ShadowsocksV2Ray 等,都是支持 http/socks5 两种代理方式的,那我们应该选择哪种呢?

socks5方式

socks5 代理方式,可以通过 ALL_PROXY 参数值来设置。

编辑 ~/.zshrc 文件,假设代理工具的 socks5 端口为 1080 ,则:

1
2
alias proxys5='export ALL_PROXY=socks5://127.0.0.1:1080'
alias unproxys5='unset ALL_PROXY'

之后执行 source ~/.zshrc 使配置生效。

那么,启用和关闭终端下的代理则执行 proxys5unproxys5 即可。

测试一下,默认情况下:

1
2
➜ curl ip.sb
123.120.226.74

启用终端下代理再次测试:

1
2
3
4
➜ proxys5

➜ curl ip.sb
204.44.66.25

如果看到获取到的ip变了,则说明 socks5 终端代理配置生效了。

socks5方式的不足

经过我的测试发现,使用 socks5 代理方式,请求某些ip时无效,也就是不会使用代理ip来访问。

如下的测试结果:

  • curl ifconfig.co/json :有效
  • curl ip.sb :有效
  • curl cip.cc :无效

后来我了解到:

终端下很多工具目前只支持 httphttps 等协议,对 socks5 协议支持不够好。

那改用 http 方式测试一下。


http方式

http 方式需要通过 http_proxyhttps_proxy 两个参数来配置。

编辑 ~/.zshrc 文件,假设代理工具的 http 端口为 1087 ,则:

1
2
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 使配置生效。

那么,启用和关闭终端下的代理则执行 proxyhpunproxyhp 即可。

http 方式代理进行测试,发现以下情况都会使用代理ip来访问。

  • curl ifconfig.co/json :有效
  • curl ip.sb :有效
  • curl cip.cc :有效

总结

总结一下就是,最终选择 http 方式来设置终端代理。


如有疑问或需要技术讨论,请留言或发邮件到 service@itfanr.cc