PHP下封杀野蜘蛛Spider/Bot的方法

时间:2013年01月11日 18:28 星期五 栏目:未分类 作者: 评论:2 点击: 1,990 次

最近看了网站的访问日志,发现几个网络蜘蛛吃了大部分的流量,其中尤以几个野蜘蛛为甚。一般的蜘蛛,你在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里最前面加入以下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
 <?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掉其它的访问者,可以按照格式添加判断条件。

如果你想记录那些被Ban掉的访问以便分析,可以仿照《记录搜索引擎的爬虫看一些八卦边角料》这篇文章的方法把记录写到数据库里。

相关文章

PHP下封杀野蜘蛛Spider/Bot的方法:目前有2 条留言

  1. 沙发
    ff199:

    这个方法貌似宜搜这傻逼蜘蛛还是会跑来耗流量 很蛋碎。

    2013-12-30 18:58
    • 是啊,宜搜被我拉黑一年了,还是天天跑来报到。不过来了也没耗什么流量,这文章的方法直接返回404,几乎不消耗资源。

      2014-01-02 14:04

发表评论

您必须 [ 登录 ] 才能发表留言!

Baidu提供的广告

最近访客

    最新评论