导火索是我的foxyproxy不好用了,本来不怎么使用tor的,wikipedia我也不怎么上,可是最近不仅sitesled上不去了,连反spam的Akismet也上不去,导致spam无法识别,越积越多,只能直接删除了事。edgy中的firefox升级为2.0.0.1,我又把firefox的profile文件夹位置挪动了一下,从那以后foxyproxy就没有好用过,不是提示莫名其妙的错误,就是丢失配置,连右下角的图标和状态文字都经常消失。foxyproxy的作用也就是在我访问不同网站的时候,判断是否启用tor,原来说过privoxy也能实现,今天我就小小的研究了一下,并且把相关的匿名web访问、穿越网络屏障、访问缓存及加速串起来,形成一套完整的工具。
我们使用到的工具是privoxy、tor、squid这三个。
Privoxy是代理转发器,他负责控制那些访问使用代理,使用那个代理。 Tor是socket代理服务器,通过他可以确保目标网站能够访问并且使用者的真实ip不会被记录。 Squid是一个缓存服务器,可以实现访问加速的目的,同时还可以过滤掉广告、js等内容。
Privoxy:
privoxy的主配置文档为/etc/privoxy/config,修改完不用重启privoxy就能生效,在这个文件中添加内容如下:
privoxy的匹配规则是从大到小的,也就是范围最大的放在前面,范围小规则的放在后面,匹配的时候会从前到后,使用最后有效的规则。所以第一条forward是默认让所有访问都不走代理,后面的forward-socks4a则是定义访问指定网站需要使用代理,并且是转发到socket代理服务器tor那里。forward-socks4a规则中需要经常变更的就是target_pattern了,就像我写的那4行,其实都是可用的,“?”可以用来通配单个字符,“*”可以用来通配任意字符,“.”放在pattern两端表示之前或之后还有内容,pattern两端是正常字母就说明前面或者后面没有内容了。注意“http://”不能加,否则匹配不上,但是可以用“hostname:80”或者“hostname:443”等方式替代。如果无法访问非443端口的https网站,可以在default.action文件中把
更改为
就可以了,这是因为provoxy默认限制了对非443端口的https访问,详细的解释在这里。
另外privoxy的default.action文件默认设置屏蔽了很多广告什么的,包括google adsense都显示不出来,建议用空文件替代之,并逐步用自己的规则来完善,所以如果只保留上面对https网站的访问规则,default.action就是:
Tor: 正常安装,默认配置就可以,监听9050端口。安装完成之后,把浏览器的proxy设置为127.0.0.1:8118,应该就可以访问了。
Squid:
配置文档为/etc/squid/squid.conf,添加如下配置内容:
添加了squid之后,浏览器的代理服务器就不要设置privoxy了,而是要指向Squid:127.0.0.1:3128,这样,我们的web访问会先到squid,如果缓存中没有,再通过privoxy访问外网,并且根据规则使用tor进行匿名加密访问。
现在我们的web访问可以说是无所不能了,并且这三个软件占用系统资源都不多,tor稍微多些,占8.4M内存,privoxy占450+k内存,squid占3.2M内存多,所以对系统的速度影响不大。只是squid服务启停稍微慢一些,不过增加缓存服务器对web访问加速的效果还是很明显的。
一般浏览器的代理设置中,对本机的访问一般都会设置为例外即不使用代理,firefox也是这样,所以对调试本机程序没有什么影响。特殊情况确实需要完全“刷新”页面的,按住“Shift“键再点F5刷新即可,再特殊一点的情况,就把代理更改为privoxy 8118,跳过squid,或者暂时禁用代理就可以了。
另外值得说的是,privoxy和squid都有比较完备的访问控制功能(基于ip或者主机),用来在局域网内架设服务,提供到外网的访问代理服务,是再方便不过的了。什么,sygate、wingate?很久都没有听说过这些名词了,呵呵。
延伸阅读:
- [HTTP Referer二三事](320)
update @ 2007-03-18
可以安装squidclient来查询系统运行状态: *取得squid运行状态信息: squidclient -p 3128 mgr:info *取得squid内存使用情况: squidclient -p 3128 mgr:mem *取得squid已经缓存的列表: squidclient -p 3128 mgr:objects (use it carefully, it may crash) *取得squid的磁盘使用情况: squidclient -p 3128 mgr:diskd *强制更新某个url: squidclient -p 3128 -m PURGE http://www.yejr.com/static.php *更多的请查看:squidclient -h 或者 squidclient -p 3128 mgr:
试了一下,privoxy速度太慢了。 只使用squid比直接连接慢1、2 秒。 如果只使用privoxy,不使用tor 比直接连接慢4、5秒。即使清空所有动作和过滤也不起作用。
网络是10M电信光纤。
速度确实会稍微慢一些 如果没有用tor的必要 可以只使用squid,虽然首次连接稍微慢一些 但缓存对于css、js和图像的加速作用很明显。
有没有privoxy的替代品? 我需要使用tor访问维基。
可以试试firefox的torbutton或foxyproxy插件 可以灵活的选择是否启用、什么条件下启用tor
是不是用代理之后自己的帐号信息会被代理服务器监听 密码什么的是不是就容易被盗取了? 不是很明白,求教一下
@solazy 理论上讲是这样的 有些别有用心的人会架设代理服务器,然后监听服务器上流过的数据 从中筛选密码等信息用于干坏事。
所以使用代理服务器,一是尽量只访问无需输入密码的网站,二是只在https(有ssl加密)的网站输入密码;这两种方式可以提高安全性。
谢谢啦:)
不知道当时有没有autoproxy这个火狐插件。autoproxy也可以按照规则自动选择走不走代理软件。