macOS系统代理设置在「系统偏好设置」「网络」「高级」中,一般在「网页代理(HTTP)」中指定代理的地址和端口。虽然提供了「忽略这些主机与域的代理设置」这个选项,但是在一些需要根据目标IP或者域名来动态选择代理时就无法满足我们的需求。
与此同时,macOS提供了一个「自动代理配置」选项,支持自动代理配置(PAC)的方式,本文介绍PAC如何使用。
PAC
Proxy Auto-Configuration(PAC)是一种通过URL来选择代理地址的技术,目前主流的浏览器都支持这种技术,macOS系统级别的代理设置也支持这种方式。
PAC是一个JavaScript文件,提供了一个返回代理的方法。这个文件可以放在本地(需要本地启用 http 服务),也可以放在某台服务器上被更多的人访问。
这项技术由微软发明,现已被Safari、Chrome、macOS等多个浏览器和系统支持。
PAC示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| function FindProxyForURL(url, host) {
if (url.substring(0,6)=="https:") { return "DIRECT"; }else{ return "PROXY proxy1.my.com:8080; PROXY proxy2.my.com:8080; DIRECT"; } if ( isInNet(host, "11.33.0.0", "255.255.0.0") ){ return "PROXY proxy1.my.com:8080; PROXY proxy2.my.com:8080; DIRECT"; }else{ return "DIRECT"; } if ( host == "my.com") { return "DIRECT"; }else{ return "PROXY proxy1.my.com:8080; PROXY proxy2.my.com:8080; DIRECT"; } if ( host == "socks.com") { return "SOCKS host:port"; } }
|
通过这个例子我们就能体会到,通过不同函数和条件的组合,我们能定制灵活的代理使用策略,从而提高日常的办公效率。
终端代理
很不幸,PAC设置的代理对于终端并不起作用,如果我们需要通过终端 Terminal 执行一些命令行的命令,还是需要单独设置代理。
对于 ssh
命令,可以参考 我的 zsh 配置 来实现通过代理登录远程服务器。
参考资料
- PAC格式校验工具
- PAC (proxy auto-config) 自动代理
- Mac电脑设置本地pac文件及问题解决
- mac 自动代理
- Proxy Auto-Configuration file
- Proxy Auto-Config Files