最近看了网站的访问日志,发现几个网络蜘蛛吃了大部分的流量,其中尤以几个野蜘蛛为甚。一般的蜘蛛,你在robots.txt里把它禁止了,它也很快就不来了。但是有些野蜘蛛根本无视robots.txt的存在,照样天天来。而且IP很丰富,例如这个EasouSpider,天天疯爬,IP从183.60.212*到183.60.215.*,每天不重样。按IP段封又怕误杀。更有些没皮没脸的,连HTTP_USER_AGENT都是空的,也天天按时报到。
对于这两种情况通过研究发现可以通过判断HTTP_USER_AGENT字段,把这些访问Ban掉。
以Wordpress为例,可以在根目录下的wp-blog-header.php里最前面加入以下代码:
<?php
//Ban 掉某些野蜘蛛 2013.01.11
$flag = false;
$tmp = $_SERVER['HTTP_USER_AGENT'];
if($tmp == ''){
$flag = true;
} else if(strpos($tmp, 'EasouSpider') >0){
$flag = true;
}
if($flag !== false){
header('HTTP/1.1 404 Not Found');
header("status: 404 Not Found");
// 当然你也可以把脏水泼回去: header("Location: http://www.easou.com");
echo '本站屏蔽某些野蜘蛛Spider/Bot,看到本页面表示被屏蔽,如果您是普通的访问者,请联系 <a href=mailto:xx@xxx.me?subject=小米乐园误屏蔽正常访问者>xx@xxx.me</a> 反馈情况,谢谢!<br>——小米乐园 s.mile77.com';
exit();
}
//Ban 掉某些野蜘蛛 2013.01.11
?>
这是把HTTP_USER_AGENT字段为空或包含“EasouSpider”的访问Ban掉,如果想Ban掉其它的访问者,可以按照格式添加判断条件。
对于这两种情况通过研究发现可以通过判断HTTP_USER_AGENT字段,把这些访问Ban掉。
以Wordpress为例,可以在根目录下的wp-blog-header.php里最前面加入以下代码:
<?php
//Ban 掉某些野蜘蛛 2013.01.11
$flag = false;
$tmp = $_SERVER['HTTP_USER_AGENT'];
if($tmp == ''){
$flag = true;
} else if(strpos($tmp, 'EasouSpider') >0){
$flag = true;
}
if($flag !== false){
header('HTTP/1.1 404 Not Found');
header("status: 404 Not Found");
// 当然你也可以把脏水泼回去: header("Location: http://www.easou.com");
echo '本站屏蔽某些野蜘蛛Spider/Bot,看到本页面表示被屏蔽,如果您是普通的访问者,请联系 <a href=mailto:xx@xxx.me?subject=小米乐园误屏蔽正常访问者>xx@xxx.me</a> 反馈情况,谢谢!<br>——小米乐园 s.mile77.com';
exit();
}
//Ban 掉某些野蜘蛛 2013.01.11
?>
这是把HTTP_USER_AGENT字段为空或包含“EasouSpider”的访问Ban掉,如果想Ban掉其它的访问者,可以按照格式添加判断条件。