Mac 上如何自如的切换网络代理?

2015-09-02 10:02:10 +08:00
 akring

因为公司的扯淡网络,想访问外网就必须设置 http 和 https 代理,每次都需要到“设置-网络-高级-代理”中设置,而如果回家用过 ShdowSocks 之后所有代理都会被清空,同时第二天还得自己重新设置并开启代理,非常麻烦,想问下有没有什么方便快捷的方式切换 Mac 下的代理(HTTP 和 HPPTS )呢?

19215 次点击
所在节点    MacBook Pro
40 条回复
jsfaint
2015-09-02 12:38:05 +08:00
zander
2015-09-02 12:51:40 +08:00
location
OscarUsingChen
2015-09-02 14:00:11 +08:00
有个软件, ControlPlane ,能根据条件判断,自动设置情景。针对不同的情景,能修改系统位置,执行脚本,运行程序。基本能够解决楼主问题。
cattyhouse
2015-09-02 14:00:18 +08:00
@jeffma 你这个真心搞复杂了,不需要用 location 的,你的只有两种情况 1 , 在公司 2 ,在其他地方。可以通过判断 ssid 来修改代理参数,比如你的公司的 Wi-Fi ssid 为 “ office ”,可以用下面的 shell 来做:

if [ "$(networksetup -getairportnetwork en0 | awk '{print $4}')" = "office" ]; then #在公司
# 先关闭 Wi-Fi 的所有代理设置
networksetup -setwebproxystate Wi-Fi off
networksetup -setsocksfirewallproxystate Wi-Fi off
networksetup -setautoproxystate Wi-Fi off

#打开代理的 autoproxy ,设置为公司的 pac
networksetup -setautoproxystate Wi-Fi on
networksetup -setautoproxyurl Wi-Fi http://公司 pac 地址

else # 不在公司
# 先关闭 Wi-Fi 的所有代理设置
networksetup -setwebproxystate Wi-Fi off
networksetup -setsocksfirewallproxystate Wi-Fi off
networksetup -setautoproxystate Wi-Fi off

#打开代理的 autoproxy ,设置为电脑本地的 pac
networksetup -setautoproxystate Wi-Fi on
networksetup -setautoproxyurl Wi-Fi http://你本地的 pac 地址

fi

就搞定了,效果一样, shadowsocks app 不需要动它,让它一直在后台运行。
cattyhouse
2015-09-02 14:14:12 +08:00
获取 ssid 这样似乎更准确 ( awk 语法变化一下)

networksetup -getairportnetwork en0 | awk -F": " '{print $2}'
jeffma
2015-09-02 15:22:22 +08:00
@cattyhouse 感谢,回去按照这个思路改进下
ptyfork
2015-09-02 17:51:56 +08:00
mac 下代理相关的设置居然不是和 ios 一样跟 ssid 相关的, 不知道咋想的。
cattyhouse
2015-09-02 18:07:55 +08:00
@ptyfork 其实各有利弊, SSID 跟 Proxy 设置区分开来还是很方便的。
megabits
2015-09-02 19:01:02 +08:00
@XerWandeRer 我也是+ 1
scola
2015-09-02 20:45:05 +08:00
foxproxy
paicha
2015-09-02 21:18:05 +08:00
我是直接改 shadowsocks 的 pac 脚本
hzlzh
2015-09-02 22:12:50 +08:00
Hodor
2015-09-03 02:30:17 +08:00
Location
ichou
2015-09-03 15:49:27 +08:00
Alfred + AppleScript
longquanwo
2015-09-03 23:33:51 +08:00
弄那么复杂干嘛。一个软件全搞定: shimo
Layne
2015-09-04 00:11:36 +08:00
我在 GitHub 上找到了一个小工具,可以根据 WiFi 的名称切换到对应的 Location ,然后自己给不同的 Location 设置不同的代理方式。
https://github.com/rimar/wifi-location-changer
leohxj
2015-09-06 10:37:46 +08:00
proxifier
zhuziyi
2016-05-07 11:36:46 +08:00
https://github.com/zvving/Alfred-Workflows/blob/master/README.md

困扰很久之后,我的最终解决方案,希望有帮助~
dawnc
2016-12-01 23:30:35 +08:00
我感觉你们都复杂了。
Automator 里,新建个 APP ,使用 AppleScript :

tell application "Finder"
set dialog to display dialog "切换代理. 请选择:" buttons {"Home", "Office", "Cancel"} default button "Home" with title "切换代理"
set interface to button returned of dialog
end tell

if interface is "Cancel" then
return
end if

if interface is "Home" then
do shell script "sudo -S networksetup -setsocksfirewallproxystate Wi-Fi on"
do shell script "echo '1234'|sudo -S networksetup -setsocksfirewallproxy Wi-Fi 127.0.0.1 7070"
end if

if interface is "Office" then
do shell script "sudo -S networksetup -setsocksfirewallproxystate Wi-Fi on"
do shell script "sudo -S networksetup -setsocksfirewallproxy Wi-Fi 10.10.10.10 7070"
end if
zhuziyi
2023-12-14 15:16:31 +08:00
@zhuziyi #32 😆😆😆 7 年后我又搜到这个答案,发现自己还回答过....

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/217766

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX