ssh -D 和 VPN 是我认为目前最靠谱的翻墙方式了。
但是,他们都面临同一个问题,就是需要区分被墙与没有被墙的网站,以使用较快的方式访问所需要的站点。
我使用 VPN 的时候会使用 chnroutes 项目:http://code.google.com/p/chnroutes/
使用 ssh -D 的时候,我有自己的 .pac 文件,且我的 pac 文件修改很频繁。
于是怎么在不重启浏览器(或其他应用)的情况下,让新修改的 .pac 文件生效呢?
经过研究,发现只需要修改一下 .pac 文件的地址,浏览器就会重新加载代理脚本了。
但每次都在图形界面下干这活儿,实在太反人类了,于是,决定尝试写 shell:
Mac:
#!/bin/sh
pac="http://www.xxx.com/yyy.pac?time=`date +%s`";
networksetup -setautoproxyurl Wi-Fi "$pac";
# 你需要把 Wi-Fi 改为自己网络的 Service name
Linux with gnome:
#!/bin/sh
pac="http://www.xxx.com/yyy.pac?time=`date +%s`";
gconftool -s /system/proxy/autoconfig_url -t string "$pac";
Windows?
对不起,不用 Windows 好多年了。