Home >php教程 >PHP源码 >php判断搜索引擎蜘蛛爬虫的方法整理

php判断搜索引擎蜘蛛爬虫的方法整理

WBOY
WBOYOriginal
2016-06-08 17:19:362105browse

判断搜索引擎蜘蛛爬虫其实是非常的简单只要判断来源useragent然后检查有没有搜索引擎蜘蛛指定的字符串了,下面我们来看一篇关于php判断搜索引擎蜘蛛爬虫的方法,希望此教程能够帮助到大家。

<script>ec(2);</script>

先来看蜘蛛列表

 





















































搜索引擎 user-agent(包含) 是否PTR 备注
google Googlebot host ip  得到域名:googlebot.com主域名
baidu Baiduspider host ip  得到域名:*.baidu.com 或 *.baidu.jp
yahoo Yahoo! host ip  得到域名:inktomisearch.com主域名
Sogou Sogou ×
*Sogou web spider/3.0(+http://www.sogou.com/docs/help/webmasters.htm#07″)
*Sogou Push Spider/3.0(+http://www.sogou.com/docs/help/webmasters.htm#07″)
网易 YodaoBot × *Mozilla/5.0 (compatible; YodaoBot/1.0;http://www.yodao.com/help/webmaster/spider/”; )
MSN MSNBot host ip  得到域名:live.com主域名
360 360Spider × Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.0.11)  Firefox/1.5.0.11; 360Spider
soso Sosospider × Sosospider+(+http://help.soso.com/webspider.htm)
bing bingbot host ip  得到域名:msn.com主域名

 

再来看看例子

//php判断搜索引擎蜘蛛爬虫的方法

function checkrobot($useragent='') {
    static $kw_spiders = array('bot', 'crawl', 'spider', 'slurp', 'sohu-search', 'lycos', 'robozilla');
    static $kw_browsers = array('msie', 'netscape', 'opera', 'konqueror', 'mozilla');

    $useragent = strtolower(empty($useragent) ? $_SERVER['HTTP_USER_AGENT'] : $useragent);
    if (strpos($useragent, 'http://') === false && dstrpos($useragent, $kw_browsers))
        return false;
    if (dstrpos($useragent, $kw_spiders))
        return true;
    return false;
}

function dstrpos($string, $arr, $returnvalue = false) {
    if (empty($string))
        return false;
    foreach ((array) $arr as $v) {
        if (strpos($string, $v) !== false) {
            $return = $returnvalue ? $v : true;
            return $return;
        }
    }
    return false;
}

if(checkrobot()){
    echo '蜘蛛';
}else{
    echo '人类';
}

?>

例子

PHP反解析IP方法
/**
 *检查IP及蜘蛛真实性
 * (check_spider('66.249.74.44',$_SERVER['HTTP_USER_AGENT']));
 * @copyright  http://blog.chacuo.net
 * @author 8292669
 * @param string $ip IP地址
 * @param string $ua ua地址
 * @return false|spidername  false检测失败不在指定列表中
 */
function check_spider($ip,$ua)
{
 static $spider_list=array(
 'google'=>array('Googlebot','googlebot.com'),
 'baidu'=>array('Baiduspider','.baidu.'),
 'yahoo'=>array('Yahoo!','inktomisearch.com'),
 'msn'=>array('MSNBot','live.com'),
 'bing'=>array('bingbot','msn.com')
 );
 
 if(!preg_match('/^(\d{1,3}\.){3}\d{1,3}$/',$ip)) return false;
 if(empty($ua)) return false;
 
 foreach ($spider_list as $k=>$v)
 {
  ///如果找到了
  if(stripos($ua,$v[0])!==false)
  {
   $domain = gethostbyaddr($ip);

   if($domain && stripos($domain,$v[1])!==false)
   {
    return $k;
   }
  }
 }
 return false;
}
 

目前只加入几个搜索引擎检测,这些是可以做反解析查询的。不能做反解析查询的,最好做速度限制,用户会使用它们来伪造搜索引擎来抓取你的资源

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn