打响下载专项治理第一枪
提供锵锵三人行podcast以来,流量虽增加很多,但一直还维持正常水平,但最近几日突然增加了数倍,而且从awstats的统计日志中还可看到有极大数量的”Not viewed traffic(不可见流量)”,经查这部分主要是服务器响应为”206 Partial Content”的多线程下载流量。再这么下去,势必影响正常使用者的使用和服务器的其它功能。于是,我打响了下载专项治理的第一枪。
通过分析服务器日志,本次打击目标为以下两个:
1.严厉打击baidu mp3盗连现象
特征:
HTTP refer中包含”mp3.baidu.com”和”m?ct=”关键字。(前者为baidu的mp3索引爬虫,后者为实际的下载连接)
baidu真是猛,从它过来的mp3下载流量占到总量的80%以上,而且大部分人都使用多线程下载(最多的我还看到同时使用15个线程的)。
还好之前复习过了.htaccess文件的用法,现在一个文件就把baidu搞定了:
RewriteEngine on
RewriteCond %{HTTP_REFERER} mp3\\.baidu\\.com [NC,OR]
RewriteCond %{HTTP_REFERER} m\\?ct=
RewriteRule .* - [F]
2.严厉打击使用过多线程同时下载现象
我提供的这个服务主要是为了方便朋友们订阅podcast,所以不管是通过iTunes订阅还是通过podlook在线听的朋友都不会像上面提到那位用15个线程同时下载一个文件的(忘了说,他还同时下载两个文件呢)。其实大家都宽带了,使用单线程下载不会比15个线程慢多少,而且能够减轻服务器的负担,是对其他用户的一个最起码的尊重。
我使用了针对Apache 2的mod_limitipconn模块来限制单一IP的mp3文件的并发下载数为2。
安装很简单,大家可以参考这篇: Linux下Apache并发连接数和带宽控制。把相关的配置加在httpd.conf的虚拟主机部分就起作用了:
#### www.douzi.org ##############################
<VirtualHost 219.149.56.157>
DocumentRoot /usr/wwwroot/douzi/html
ServerAdmin admin@douzi.org
DirectoryIndex index.html index.php
ServerName www.douzi.org
ServerAlias douzi.org
ErrorLog /var/log/httpd/douzi/error_log
CustomLog "|/usr/bin/cronolog /var/log/httpd/douzi/access_log.%Y%m%d" combined
HostNameLookups off
<Directory "/usr/wwwroot/douzi/html">
AllowOverride All
</Directory>
<IfModule mod_limitipconn.c>
<Location /podcast/srx>
MaxConnPerIP 2
OnlyIPLimit audio/mpeg
</Location>
</IfModule>
</VirtualHost>
另外提醒一句,不要忘记打开前面的”ExtendedStatus On”,这样这个模组才会起作用。
January 10th, 2006 at 11:26 pm
baidu mp3知难而退,现在已经关键字搜索不到了 :)
January 18th, 2006 at 10:00 pm
厉害啊厉害,不知道怎么对付啊哩八八的机器人啊,能把你的站爬死,太厉害了
January 19th, 2006 at 12:48 pm
呵呵,IP暴露了,大城市的。不过这个空间还真的飞快啊,可以说太快了,嗯!
January 19th, 2006 at 1:20 pm
@一为空间:
首先使用robots.txt限制爬虫,不过像baidu之流无良机器人不看robots.txt,那就抓关键字,看refer或者agent,甚至可以分析一下他们的常用IP,一样就地弄死。
@etan:
你随随便便ping下域名IP不就有了 :)
服务器是大城市的电信机房,估计你也是电信线路,网通访问还是有点慢。
February 7th, 2006 at 1:54 am
感谢提供方法,哀……之前我的一个空间经常能收到超流量的 email,现在好了
还有,baidu 不读 robots.txt 的?我说怎么设置了 download 目录没用呢……