与浏览器不同,Mac 的终端默认并没有开启代理模式,也就是说即使我们电脑使用了代理,在终端中也是没有效果的,所以我们需要单独对终端配置代理。
查看 ip 相关信息
首先也要先说明一下如何快速查看当前的 ip 信息,需要用到 curl
命令:
sh
curl ipinfo.io
{
"city": "Nanjing",
"region": "Jiangsu",
"country": "CN",
"loc": "32.0617,118.7778",
"org": "AS4134 CHINANET-BACKBONE",
"timezone": "Asia/Shanghai",
"readme": "https://ipinfo.io/missingauth"
}
可以看到即使系统使用了代理,在终端中是无效的。
终端代理配置
要给终端配置代理,需要修改相应 Shell 的配置文件,对于 ZSH,要修改 ~/.zshrc
。具体来说,要配置的其实主要是 http_proxy
和 https_proxy
这两个环境变量,它们告诉系统或应用程序使用指定的代理服务器。比如:
sh
export http_proxy=http://proxy.example.com:8080
export https_proxy=http://proxy.example.com:8080
这样,系统或应用程序在发起 HTTP 或 HTTPS 请求时,会先将请求发送给 http://proxy.example.com:8080
,由代理服务器转发请求到目标服务器,然后将响应返回给发起请求的系统或应用程序。由于我使用的工具默认端口号是 7897,所以代理服务器 URL 应该是 socks5://127.0.0.1:7897
。
为了便捷,可以再使用 alias
来简化操作,在 ~/.zshrc
末尾加上如下内容:
sh
alias proxy="export http_proxy=socks5://127.0.0.1:7890;export https_proxy=socks5://127.0.0.1:7890;"
alias unproxy="unset http_proxy;unset https_proxy;"
然后使用 source ~/.zshrc
来更新配置文件,这样在使用 proxy
命令就会设置代理,使用 unproxy
就会解除代理。
下面进行测试:
sh
curl ipinfo.io
{
"city": "Nanjing",
"region": "Jiangsu",
"country": "CN",
"loc": "32.0617,118.7778",
"org": "AS4134 CHINANET-BACKBONE",
"timezone": "Asia/Shanghai",
"readme": "https://ipinfo.io/missingauth"
}
proxy
curl ipinfo.io
{
"hostname": "172-233-144-7.ip.linodeusercontent.com",
"city": "Los Angeles",
"region": "California",
"country": "US",
"loc": "34.0522,-118.2437",
"org": "AS63949 Akamai Connected Cloud",
"postal": "90009",
"timezone": "America/Los_Angeles",
"readme": "https://ipinfo.io/missingauth"
}
unproxy
curl ipinfo.io
{
"city": "Nanjing",
"region": "Jiangsu",
"country": "CN",
"loc": "32.0617,118.7778",
"org": "AS4134 CHINANET-BACKBONE",
"timezone": "Asia/Shanghai",
"readme": "https://ipinfo.io/missingauth"
}
可见成功实现了代理的功能。