使用Privoxy实现通用选择性代理功能

来源:http://cckpg.blogspot.com/2011/06/privoxy.html

所谓选择性代理,就是对特定的URL采取特定的代理方案。拿翻墙来说,如果是墙内的网站,我们当然不想翻出去再翻进来上了,太费劲,而且还未必翻得进来。

AutoProxy在Firefox用户中很流行,就是因为它提供了针对GFW的智能代理选择功能。这是一个伟大的扩展,而与扩展本身同样伟大的,是这个项目维护的GFWList。这个列表用一些简单的规则列出了无数当前被墙的网址。

但是AutoProxy的通用性是比较受限的,据我所知,除了Firefox以外,就只有Chrome是被支持的。于是就有人写了一个叫 AutoProxy2Pac的工具,将AutoProxy的GFWList规则转换成PAC。由于主流浏览器都支持PAC,GFWList的通用性大大提 升。

但是仍然有一个问题,就是除了浏览器之外呢?一般的软件支持HTTP代理一般不会有问题,但是给它一个PAC,它的反应最多就是:"虾米?"

解决的办法,就是把选择性代理的任务交给代理服务器。准确地说,这是一个二级代理。打个比方,这就像是网购,亲们向店主妹妹下单就是了,至于店主妹 妹从哪里进货亲们是不管的。但店主妹妹就要考虑了,这匹马国内有,又是特产,必须从国内进货;那只鸟却不一样,国内绝种,得找国外的朋友代买才行。

这个店主妹妹的名字叫Privoxy。

Privoxy的好处是它支持HTTP和SOCKS的上游代理,并且允许用户使用灵活的规则配置选择性地使用代理。另外非常棒的一点是,当上游代理 为SOCKS4a/SOCKS5的时候,它会要求上游代理进行DNS解析,从而有效避免DNS污染。这一点也是PAC本身无法实现的。

那么首先简单介绍一下Privoxy的使用。注意以下提到的文件路径适用于Linux,其他系统请参考Privoxy用户手册。一个简单的例子:

{+forward-override{forward-socks5 127.0.0.1:7127 .}} .youtube.com 

这段规则是说,对于youtube.com及其子域名使用位于127.0.0.1:7127的SOCKS5代理,比如SSH、Tor等。将上面这段代码写到/etc/privoxy/gfw.action,然后编辑配置文件/etc/privoxy/config,加上:

actionfiles gfw.action

现在启动privoxy服务:

# /etc/init.d/privoxy start

Privoxy的默认监听地址是127.0.0.1:8118,现在打开浏览器,把这个地址设置为HTTP代理的地址,接着访问YouTube试试。

不出意外的话,YouTube现在是通过代理访问的,而其他被墙网站是上不去的。很自然的,这个时候我们就想到了GFWList。

AutoProxy2Privoxy是一个将AutoProxy的规则转换成Privoxy规则的Shell脚本。即使你不能运行这个脚本,你仍然可以从这里下载成品gfw.action。记住修改第一行的代理地址,然后复制到/etc/privoxy/gfw.action

至此,店主妹妹学徒毕业,正式接任。


―――――――――――――――――――――――――――――――――――――――――

需要翻墙利器? 请安装Wuala,查找和添加gfwblog为好友,就可高速下载翻墙软件,或访问http://tinyurl.com/gfwblog直接下载。

推特用户请点击这里免翻墙上推特

请点击这里下载翻墙软件

更多翻墙方法请发电邮(最好用Gmail)到:fanqiang70ma@gmail.com

请阅读和关注中国数字时代翻墙技术博客GFW BLOG(免翻墙)

请使用Google Reader订阅中国数字时代中文版http://chinadigitaltimes.net/chinese/feed),阅读最有价值的中文信息;以及GFW BLOG(功夫网与翻墙)http://feeds2.feedburner.com/chinagfwblog,获取最新翻墙工具和翻墙技巧信息。


发表评论