web访问:匿名,穿越,加速,缓存,一个都不能少
授权方式:署名,非商业用途,保持一致,转载时请务必以超链接(http://www.fwolf.com/blog/post/294)的形式标明文章原始出处和作者信息及本声明。导火索是我的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就能生效,在这个文件中添加内容如下:
#forward-socks4a .ip109.com localhost:9050 .
#forward-socks4a www.ip109.com localhost:9050 .
#forward-socks4a www.ip1?9.com localhost:9050 .
forward-socks4a .ip1?9.c*:80 localhost:9050 .
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,添加如下配置内容:
http_port 127.0.0.1:3128
# 缓存保存位置,1000为缓存总大小(M),16为一级目录个数,256为二级目录个数
cache_dir ufs /var/spool/squid 1000 16 256
# 只允许从本机访问
http_access allow localhost
http_access deny all
# 配置privoxy为squid的上级(squid的出口连接)
cache_peer localhost parent 8118 7 no-query default
visible_hostname localhost
# 全部使用privoxy代理出去,不允许直接连接外网
never_direct allow all
# 显示声明8443端口能够访问,不然这个非标准https端口就又没法用了
acl SSL_ports port 8443
acl Safe_ports port 8443
添加了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?很久都没有听说过这些名词了,呵呵。
延伸阅读:
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:
![[Bloglines]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/bloglines.png)
![[del.icio.us]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/delicious.png)
![[Digg]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/digg.png)
![[diigo]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/diigo.png)
![[Facebook]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/facebook.png)
![[Google]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/google.png)
![[MySpace]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/myspace.png)
![[Reddit]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/reddit.png)
![[Slashdot]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/slashdot.png)
![[Email]](http://www.fwolf.com/blog/wp-content/plugins/bookmarkify/email.png)
May 9th, 2007 at 18:18:59
试了一下,privoxy速度太慢了。
只使用squid比直接连接慢1、2 秒。
如果只使用privoxy,不使用tor 比直接连接慢4、5秒。即使清空所有动作和过滤也不起作用。
网络是10M电信光纤。
May 10th, 2007 at 0:13:40
速度确实会稍微慢一些
如果没有用tor的必要
可以只使用squid,虽然首次连接稍微慢一些
但缓存对于css、js和图像的加速作用很明显。
May 10th, 2007 at 18:35:47
有没有privoxy的替代品?
我需要使用tor访问维基。
May 11th, 2007 at 0:15:03
可以试试firefox的torbutton或foxyproxy插件
可以灵活的选择是否启用、什么条件下启用tor
September 26th, 2007 at 13:08:50
[...] 由于我上网客户端配置的特殊性,首先怀疑是squid的问题,但通过实验排除了,不过同时发现了一个Squid和Tor、Privoxy协同使用的隐私泄露问题,留待以后研究。 [...]
October 13th, 2007 at 4:16:53
是不是用代理之后自己的帐号信息会被代理服务器监听
密码什么的是不是就容易被盗取了?
不是很明白,求教一下
October 13th, 2007 at 4:19:19
[...] 简明教程web访问:匿名,穿越,加速,缓存,一个都不能少 作者:fwolf Tags: Firefox , [...]
October 14th, 2007 at 2:44:57
@solazy 理论上讲是这样的
有些别有用心的人会架设代理服务器,然后监听服务器上流过的数据
从中筛选密码等信息用于干坏事。
所以使用代理服务器,一是尽量只访问无需输入密码的网站,二是只在https(有ssl加密)的网站输入密码;这两种方式可以提高安全性。
October 15th, 2007 at 23:46:37
谢谢啦:)