背景

Mac 下科学上网的情况与 Windows 下有些不同,Mac 下有全局的 PAC 设置, 不像 Windows 下只有 Firefox 或者 Chrome 装了插件才支持。

基本思路

自动基于访问的域名或者IP决定是否使用代理。

第一种

使用GoAgentX配合shadowsocks或ssh等。默认是黑名单。在代理线路较好的情况下更推荐使用白名单。要使用白名单最好是使用自定义pac,推荐Flora_Pac。对于域名和IP都有支持。

但是pac有的时候容易失效,不是非常稳定。

因此也可以使用GoAgentX的全局模式,然后将国内域名加入到忽略列表中。可以从Flora_Pac中获取常见的国内域名列表。缺点在于无法对IP进行处理,如果像优酷这样的直接访问IP的情况下就会走代理。

第二种

使用VPN加上chnroutes

但是,使用国外DNS后会将部分设有CDN等得国内域名解析到国外的IP上,比如访问淘宝会变成全球或者台湾等地的版本。

为了解决此问题,使用dnsmasq来进行DNS解析,将国内域名使用国内DNS,比如阿里DNS,进行解析,配合chnroutes可以说是非常完美。

dnsmasq的部分设置可以使用dnsmasq-china-list

两种方式的区别

区别在于前者是socks代理,部分应用不支持,ICMP等协议也不支持,后者则完全是全局的。可以根据实际需求选择。

个人更推荐第二种,在终端中可以直接走代理,更加方便一些。