打响下载专项治理第一枪

提供锵锵三人行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”,这样这个模组才会起作用。

5 Responses to “打响下载专项治理第一枪”

  1. windix Says:

    baidu mp3知难而退,现在已经关键字搜索不到了 :)

  2. 一为空间 Says:

    厉害啊厉害,不知道怎么对付啊哩八八的机器人啊,能把你的站爬死,太厉害了

  3. etan Says:

    呵呵,IP暴露了,大城市的。不过这个空间还真的飞快啊,可以说太快了,嗯!

  4. windix Says:

    @一为空间:
    首先使用robots.txt限制爬虫,不过像baidu之流无良机器人不看robots.txt,那就抓关键字,看refer或者agent,甚至可以分析一下他们的常用IP,一样就地弄死。

    @etan:
    你随随便便ping下域名IP不就有了 :)
    服务器是大城市的电信机房,估计你也是电信线路,网通访问还是有点慢。

  5. Sparanoid Says:

    感谢提供方法,哀……之前我的一个空间经常能收到超流量的 email,现在好了

    还有,baidu 不读 robots.txt 的?我说怎么设置了 download 目录没用呢……