今天在ChinaUnix在看到一段记录爬虫程序的代码:

function saveRobot($dir)
{
        $addtime = date('Y-m-d H:i:s',time());
        $GetLocationURL= "http://".$_SERVER["HTTP_HOST"].$_SERVER['REQUEST_URI'] ;
        $agent1 = $_SERVER["HTTP_USER_AGENT"] ;  
        $agent=strtolower($agent1);
        $Bot='';
        if (strpos($agent,"googlebot")>-1){$Bot = "Google";}           
        if (strpos($agent,"mediapartners-google")>-1){$Bot = "Google";}
        if (strpos($agent,"baiduspider")>-1){$Bot = "Baidu";}
        if (strpos($agent,"sogou spider")>-1){$Bot = "Sogou";}
        if (strpos($agent,"sosospider")>-1){$Bot = "Soso";}
        if($Bot!="")
        {
                $mDateTime=date("Y-m-d");
                //检查今天表存在否,不存在就建立。
                file_put_contents($dir."/$mDateTime.html","$Bot - $GetLocationURL - $addtime <br>",FILE_APPEND);
                //echo $agent .' - ' .$Bot .' - ' . $GetLocationURL;
        }
}

 

受此启发,可以看出,爬虫程序在访问你的网站时是通过$_SERVER["HTTP_USER_AGENT"]来标识自己的,不同的爬虫有不同的名字。

 

在网上搜索了一个完整的爬虫记录程序,贴出来供大家参考:

<?php
/**
  * 名称:抓虫助手 1.0
  * 文件:cls_spider.php
  
  * --------说明-----------------
  * 类文件的作用是监控搜索引擎爬虫对网站的操作。
  * 本类为php代码,只适用于php系统的网站。
  * 代码没有使用到数据库,直接把记录写在文本文件中,请在根目录建立spider文件夹。
  * 代码产生的记录,仅供参考,并不保证包含所有的记录,因为没有运行到本代码的文件是不会记录的。
  * 本代码为免费代码,可以随便复制,修改使用,但是希望能保留一点我的版权信息。
  
  * --------使用方法-------------
  * 请将需要统计的页面加入以下代码,并调用,一般修改在全局调用的文件中。

  * require(ROOT_PATH . '本文件目录/cls_spider.php');
  * $spider=new spider();

  * 如果有不会安装的朋友 可以通过以下方式联系我帮忙。
  * QQ: 235534
  * EMAIL: dreamisok@qq.com
  * 博客: http://blog.toptao123.com
  * 请支持一下我的网站 http://www.ataobao.net http://www.toptao123.com 欢迎交换链接
*/

class spider
{
    var $searchbot    = "";
    var $tlc_thispage = "";
    var $filename     = "";
    var $timestr      = "";
    var $spider_array = array("Googlebot"=>"googlebot",
                              "GOOGLE ADSENSE"=>"mediapartners-google",
                              "YODAO"=>"yodaobot",
                              "MSNbot"=>"msnbot",
                              "Yahoobot"=>"slurp",
                              "Baiduspider"=>"baiduspider",
                              "Sohubot"=>"sohu-search",
                              "IASK"=>"iaskspider",
                              "SOGOU"=>"sogou",
                              "Robozilla"=>"robozilla",
                              "Lycos"=>"lycos");

    function __construct()
    {
        $this->tlc_thispage=addslashes($_SERVER["REQUEST_URI"]);
        $this->filename='spider/'.date("ymd").'.txt';
        $this->timestr=$this->nowtime();
        $this->searchbot = $this->get_naps_bot();
        $this->spider();
    }

    function spider()
    {
        if(!empty($this->searchbot))
        {
            $writestring="Time:".$this->timestr." Robot:".$this->searchbot." URL:".$this->tlc_thispage."\n";
            $data=fopen($this->filename,"a");
            fwrite($data,$writestring);
            fclose($data);
        }
    }

    function get_naps_bot()
    {
        if(isset($_SERVER['HTTP_USER_AGENT']))
        {
            $useragent = strtolower($_SERVER['HTTP_USER_AGENT']);
            foreach($this->spider_array as $key=>$value)
            {
                if (strpos($useragent, $value) !== false)
                {
                    return $key;
                }
            }
        }
        return false;
    }

    function nowtime()
    {
        $date=date("Y-m-d.G:i:s");
        return $date;
    }
}
?>