Published May 13th, 2006 in WWW
相信有很多朋友深受baidu spider的苦,经常被扒去上G流量;如果不是水平差,那就是故意这么做。今天花点时间写了apache antibot module,结合mod_setenvif 和 mod_limitipconn两个module的思路,达到对特定user agent的ip连接数量限制。
2006/05/16 更新:修改了NoBot参数的匹配规则。上版本用的是PCRE匹配,多个匹配起来比较麻烦,改成了用空格分隔的区分大小写字符串匹配。
NoBot "audio/ video/" "Google Baidu" 将匹配audio和video文件,GoogleBot和Baiduspider都会被404错误。
2006/05/14 更新:增加NoBot参数,可以让bot不索引你的某些文件(比如mp3,wmv)。
apache带的mime.types文件内容比较老,把wmv加到video/mpeg行的后面支持wmv
源代码下载
显示正文 »
安装过程:(假定apache 2.0.x是安装在/usr/local/apache2目录下)
tar xfz mod_antibot.tar.gz
make install
然后在httpd.conf 中增加
ExtendedStatus On
<IfModule mod_antibot.c>
BotLimit 3 "baiduspider"
Log2Err 1
NoBot "audio/ video/" "Google Baidu"
</IfModule>
设置对baiduspider的最大连接数为3,然后restart apache。
注意要设置ExtendedStatus On,antibot module才能读到其它连接的ip信息。
BotLimit的第二个参数是正则表达式,不区分大小写,它要用引号括起来。
NoBot 让符合文件类型的不被Bot索引,返回HTTP 404 NOT FOUND代码,用法参见上面的例子。
Log2Err参数设置是否记录日志,缺省不记录。
适当时候,可以在apache的errorlog看到类似的消息;)
[Fri May 12 23:47:14 2006] [error] [client 202.108.250.243] Rejecting the 4 Baiduspider+(+http://www.baidu.com/
search/spider.htm) bot, max 3 bots;)
[Sun May 14 13:58:36 2006] [error] [client 202.108.250.243] Rejecting the baiduspider bot for /video/xxx.wmv
其它不好的bot可如法炮制。
Update:一般baiduspider会通过好多个IP来扒,所以每个ip给它两个spider连接就够了
Keywords:
Apache,
patch,
补丁,
优化
gooooooooood!
啊哈哈哈,老大原来天天和baidu bot做斗争阿......,同情中阿.
Cooooooooool!
被baiduspider搞得比较惨,占去N多流量,实在是痛苦
建议大家都用spider类的东西,搞一下百度如何?
用robot不是就可以屏蔽了吗??
难道baidu spider可以不遵守规则??
据说baidu spider是不遵守规则,这个module纯粹是为了防止被扒流量;如对流量不敏感,可不用它