目标:
通过设置Safari的自动proxy切换,实现浏览网页的时候,如果是GFW的站点则自动通过Proxy,如果不是,则不使用Proxy。这样保证浏览国内网站时候速度够快,而浏览GFW的网站也没有问题,全自动,无需手工干预。
操作系统和浏览器:
Mac OS X Lion + Safari 5.1(当然低版本的Safari也同样可以这样设置)。如果浏览器是Firefox,可以直接用autoproxy插件,如果浏览器是Chrome,可以用Switchy!插件。
需要下载的软件:
1. SSH Tunnel Manager,在Mac App Store中搜索安装即可。
要使用该软件,首先要求有一个可以通过ssh访问的国外虚拟主机,通常有这样主机的,大概也都知道该如何设置ssh端口转发了,所以不再赘述,要注意的是,监听的端口可以随便设置,我设置为7080。如果使用本文中的pac文件,那么也必须要设置为7080。
2. autoproxy.pac脚本,该脚本可以从AutoProxy2PAC站点下载。很可惜,这个站点本身需要翻墙,不过我已经将我自己用的pac文件放在这里,可以下载使用,在SSH Tunnel Manager中必须设置本地端口是7080。
启动SSH Tunnel Manager:
连接设置好的ssh会话,检查本地端口是否已经被正常监听。注意最后两行末尾的LISTEN字样,表示已经监听在本地的7080端口上,这意味着任何通过socks代理发送到本地7080端口的请求,都会通过ssh转发到国外的虚拟主机,然后从国外访问GFWed的网站,再通过ssh返回请求的页面。基本上是这样的方式完成翻墙。
Kamus$ netstat -a|grep 7080
tcp4 0 0 localhost.7080 localhost.37233 ESTABLISHED
tcp4 0 0 localhost.37233 localhost.7080 ESTABLISHED
tcp4 0 0 localhost.7080 localhost.37232 ESTABLISHED
tcp4 0 0 localhost.37232 localhost.7080 ESTABLISHED
tcp4 0 0 localhost.7080 localhost.37231 ESTABLISHED
tcp4 0 0 localhost.37231 localhost.7080 ESTABLISHED
tcp4 0 0 localhost.7080 localhost.36407 ESTABLISHED
tcp4 0 0 localhost.36407 localhost.7080 ESTABLISHED
tcp4 0 0 localhost.7080 localhost.36187 FIN_WAIT_2
tcp4 37 0 localhost.36187 localhost.7080 CLOSE_WAIT
tcp4 0 0 localhost.7080 *.* LISTEN
tcp6 0 0 localhost.7080 *.* LISTEN
设置Safari:
这是最重要的步骤。
1. 开启Mac OS X Lion中的Web Sharing,实际上就是启动本地的www服务器。如下图,在System Preferences中的Sharing页面里。
2. 将下载的proxy.pac文件复制到~/Sites目录下。
Kamus$ ls ~/Sites
images index.html proxy.pac
3. 修改Safari的代理配置,选择自动代理配置,如下图。这里要注意的是URL部分必须是http开头的路径,而不能是本地目录样式的路径,这也是为什么上面第一步要开启Web Sharing的原因。这个问题的解释参看:Proxy Pac files no longer work in Mac OS X Lion。
保存以后,尝试登陆一下twitter.com,再尝试登陆一下weibo.com。好了,祝大家翻墙愉快。
safari 太傻了, 竟然不认识文件pac 非要http