站内公告:

亲友传真---海外信息直接看 https://qycz.org

Main Menu

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

作者 bzxdfg, 六月 09, 2011, 07:46:37 上午

bzxdfg

来源:h t tp://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。

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

快速回复

警告: 该贴已经至少 180 天没有更改。
除非你一定要回复,否则也许考虑发一个新贴会更好。

Note: this post will not display until it has been approved by a moderator.

名称:
电子邮件:
验证码:
请将此框留空:
三乘七等于几?(请用阿拉伯数字回答):
Shortcuts: ALT+S post or ALT+P preview