终端Shell配置网络代理

OS下终端 Shell是不走系统代理的,因此即使开了系统代理,比如iTerm2下执行curl或者npm等发现也是存在网络不通。

使用代理App Surge或者其它的代理App通过支持修改网卡是可以强制走代理的,但是有时我们并不想使用这种方式,那么是否有办法让终端Shell走代理呢。

是的,可以,这里Mark下解决办法。

https://static.1991421.cn/2024/2024-07-13-122755.jpeg

编辑shell配置文件

这里以bash为例,打开bash_profile,vi ~/.bash_profile,如果平时是使用zsh也可以vi ~/.zshrc

增加如下配置

1
2
3
4
5
export http_proxy=socks5://127.0.0.1:6153
export https_proxy=$http_proxy
export all_proxy=$http_proxy

alias disproxy='unset http_proxy https_proxy all_proxy'

如果本身只是想解决终端http请求代理的话,all_proxy可以不配置。因为请求并非都是http请求,这里可以配置all_proxy来解决非http请求。注意 git ssh是不会走这里的配置,解决办法是git单独配置proxyCommand或者代理软件的增强模式来解决。

配置生效

source ~/.bash_profile

测试

curl -i https://google.com

如果是系统代理服务本身有网络请求抓包的话,可以通过抓包来判断代理是否生效。

临时禁用代理

因为配置中我们有增加disproxy,这里只要执行disproxy即可。

写在最后

这样终端Shell发出的请求即可走代理服务了。