web访问:匿名,穿越,加速,缓存,一个都不能少

导火索是我的foxyproxy不好用了,本来不怎么使用tor的,wikipedia我也不怎么上,可是最近不仅sitesled上不去了,连反spam的Akismet也上不去,导致spam无法识别,越积越多,只能直接删除了事。edgy中的firefox升级为2.0.0.1,我又把firefox的profile文件夹位置挪动了一下,从那以后foxyproxy就没有好用过,不是提示莫名其妙的错误,就是丢失配置,连右下角的图标和状态文字都经常消失。foxyproxy的作用也就是在我访问不同网站的时候,判断是否启用tor,原来说过privoxy也能实现,今天我就小小的研究了一下,并且把相关的匿名web访问、穿越网络屏障、访问缓存及加速串起来,形成一套完整的工具。

我们使用到的工具是privoxytorsquid这三个。

Privoxy是代理转发器,他负责控制那些访问使用代理,使用那个代理。 Tor是socket代理服务器,通过他可以确保目标网站能够访问并且使用者的真实ip不会被记录。 Squid是一个缓存服务器,可以实现访问加速的目的,同时还可以过滤掉广告、js等内容。

Privoxy:

privoxy的主配置文档为/etc/privoxy/config,修改完不用重启privoxy就能生效,在这个文件中添加内容如下:

forward / . #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文件中把

-limit-connect \

更改为

+limit-connect{80,443,8443} \

就可以了,这是因为provoxy默认限制了对非443端口的https访问,详细的解释在这里

另外privoxy的default.action文件默认设置屏蔽了很多广告什么的,包括google adsense都显示不出来,建议用空文件替代之,并逐步用自己的规则来完善,所以如果只保留上面对https网站的访问规则,default.action就是:

{+limit-connect{80,443,8443}} /

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?很久都没有听说过这些名词了,呵呵。

延伸阅读:

  • [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:

10 thoughts on “web访问:匿名,穿越,加速,缓存,一个都不能少”

  1. 试了一下,privoxy速度太慢了。 只使用squid比直接连接慢1、2 秒。 如果只使用privoxy,不使用tor 比直接连接慢4、5秒。即使清空所有动作和过滤也不起作用。

    网络是10M电信光纤。

  2. 速度确实会稍微慢一些 如果没有用tor的必要 可以只使用squid,虽然首次连接稍微慢一些 但缓存对于css、js和图像的加速作用很明显。

  3. 是不是用代理之后自己的帐号信息会被代理服务器监听 密码什么的是不是就容易被盗取了? 不是很明白,求教一下

  4. @solazy 理论上讲是这样的 有些别有用心的人会架设代理服务器,然后监听服务器上流过的数据 从中筛选密码等信息用于干坏事。

    所以使用代理服务器,一是尽量只访问无需输入密码的网站,二是只在https(有ssl加密)的网站输入密码;这两种方式可以提高安全性。

  5. 不知道当时有没有autoproxy这个火狐插件。autoproxy也可以按照规则自动选择走不走代理软件。

Leave a Reply

Your email address will not be published. Required fields are marked *