今天在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; } } ?>