我们使用到的工具是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?很久都没有听说过这些名词了,呵呵。