Mac下快速切换代理设置(为方便翻墙)
自从换到Mac系统后,一直在用GoAgent
翻墙,方便快捷。
但是有个问题就是,翻墙后访问国内网站速度比较慢,比较不爽。
PS,虽然此问题可以用goagent结合pac文件实现智能翻墙,但不在本文讨论之列。以后再折腾这个。
所以,现在的办法是,需要翻墙的时候,在网络设置里面勾选代理,如下图:
但是每次这样设置,比较麻烦,google之后,发现可以用网络设置里面的“位置(Location)”实现,即通过设置不用的位置,采用不同的设置方案,这样只要切换位置就可以了。如下图
但是!
这样还是有个问题,每次切换之后都会断网
,然后重新联网
,也很不爽。
然后我就想,能否快速修改代理设置呢?
经过一番搜索,找到了在命令行下快速修改网络设置的方法
让“Wi-Fi”这个网络链接打开WEB代理(HTTP)
sudo networksetup -setwebproxystate 'Wi-Fi' on
让“Wi-Fi”这个网络链接打开WEB代理(HTTPS)
sudo networksetup -setsecurewebproxystate 'Wi-Fi' on
关闭时,把on
改为off
即可。
其它网络服务要把Wi-Fi
改成对应的名称。
剩下的就简单了,把命令写入sh文件,通过设置alias快速调用。
例如我的:
proxy.sh
#!/bin/zsh
#默认 开https 不开http
proxy_on(){
networksetup -setsecurewebproxystate 'Wi-Fi' on
networksetup -setwebproxystate 'Wi-Fi' off
}
#关闭代理
proxy_off(){
networksetup -setsecurewebproxystate 'Wi-Fi' off
networksetup -setsecurewebproxystate 'Wi-Fi' off
}
#打开http和https代理
proxy_all(){
networksetup -setsecurewebproxystate 'Wi-Fi' on
networksetup -setsecurewebproxystate 'Wi-Fi' on
}
if [ "$1" = "on" ]; then
proxy_on
elif [ "$1" = "off" ]; then
proxy_off
elif [ "$1" = "all" ]; then
proxy_all
else
printf "Usage: sh ~/.dotfiles/sh/proxy.sh {on|off|all}\n"
fi
然后,修改.zshrc
,加入别名
# proxy切换
alias proxy="sudo sh ~/.dotfiles/sh/proxy.sh on"
alias proxy_off="sudo sh ~/.dotfiles/sh/proxy.sh off"
alias proxy_all="sudo sh ~/.dotfiles/sh/proxy.sh all"
修改完后,重新载入
source .zshrc
现在,就可以通过 proxy
proxy_off
proxy_all
来自由切换代理设置了。
PS:
不习惯命令行的童鞋可以用我前面提到的智能翻墙方案,搜索mac goagent pac
参考: