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访问、穿越网络屏障、访问缓存及加速串起来,形成一套完整的工具。

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

延伸阅读:

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:

No tags for this post.

Related posts

9 Responses to “web访问:匿名,穿越,加速,缓存,一个都不能少”

  1. gamexg Says:

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

    网络是10M电信光纤。

  2. Fwolf Says:

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

  3. gamexg Says:

    有没有privoxy的替代品?
    我需要使用tor访问维基。

  4. Fwolf Says:

    可以试试firefox的torbutton或foxyproxy插件
    可以灵活的选择是否启用、什么条件下启用tor

  5. 菠萝艾蔻 » HTTP Referer二三事 Says:

    [...] 由于我上网客户端配置的特殊性,首先怀疑是squid的问题,但通过实验排除了,不过同时发现了一个Squid和Tor、Privoxy协同使用的隐私泄露问题,留待以后研究。 [...]

  6. solazy Says:

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

  7. Nightwind » Blog Archive » Tor 应用相关问题 Says:

    [...] 简明教程web访问:匿名,穿越,加速,缓存,一个都不能少 作者:fwolf Tags: Firefox , [...]

  8. Fwolf Says:

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

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

  9. solazy Says:

    谢谢啦:)

Leave a Reply

您的留言将被缓存和审阅,所以不会立即出现在这里,请别着急,着急的话可以给我发邮件 :-)
支持Markdown Extra语法,参见: [甲] [1] [2]