//-- 以下是我自己整理過的,原文列於後面 --------------------------------------------------------------
//-- 檢查來訪者搜尋引擎機器人 -----------------------------
class CkRobot{ 
 /*來訪者是否為搜尋引擎機器人
 * 傳回值 boolean true 是機器人 false 非機器人
 */
 function isSearchRobot(){
      $flg = preg_match("/(Bot|Crawl|Spider|slurp|sohu-search|lycos|robozilla)/i", $_SERVER['HTTP_USER_AGENT']);
      return $flg;
 }
 //傳回來訪者搜尋引擎機器人名稱
 function getSearchRobot(){
      $useragent = strtolower($_SERVER['HTTP_USER_AGENT']);
      if (strpos($useragent, 'googlebot') !== false){
           return 'Googlebot';
      } 
      if (strpos($useragent, 'msnbot') !== false){
           return 'MSNbot';
      }
      if (strpos($useragent, 'slurp') !== false){
           return 'Yahoobot';
      } 
      if (strpos($useragent, 'baiduspider') !== false){
           return 'Baiduspider';
      }
      if (strpos($useragent, 'sohu-search') !== false){
           return 'Sohubot';
      } 
      if (strpos($useragent, 'lycos') !== false){
           return 'Lycos';
      } 
      if (strpos($useragent, 'robozilla') !== false){
           return 'Robozilla';
      }
      return false;
  }
}
//--- 原文摘錄如下 -------------------------------------------------------------------------------
 
PHP判斷搜索引擎機器人
Robot發佈人:kimi  時間:2007-10-23 22:05  來源: 本站原創  查看: 52次   TAG: PHP判斷  搜索引擎 
有朋友問到如何使用PHP去判斷是否是搜索引擎,其實PHP有個很簡單的方式去實現,通過$_SERVER這個預定義變量中的$_SERVER['HTTP_USER_AGENT']可以取得訪問者的屬性,具體可以看下Diiscuz!是如何判斷搜索引擎的,函數代碼如下:
function getrobot() {
    if(!defined('IS_ROBOT')) {
        $kw_spiders = 'Bot|Crawl|Spider|slurp|sohu-search|lycos|robozilla';
        $kw_browsers = 'MSIE|Netscape|Opera|Konqueror|Mozilla';
        if(preg_match("/($kw_browsers)/", $_SERVER['HTTP_USER_AGENT'])) {
            define('IS_ROBOT', FALSE);
        } elseif(preg_match("/($kw_spiders)/", $_SERVER['HTTP_USER_AGENT'])) {
            define('IS_ROBOT', TRUE);
        } else {
            define('IS_ROBOT', FALSE);
        }
    }
    return IS_ROBOT;
}
根據上面還可以精簡如下:
if(preg_match("/(Bot|Crawl|Spider|slurp|sohu-search|lycos|robozilla)/i", $_SERVER['HTTP_USER_AGENT'])) {
    echo 'robot';
}
如果你需要返回詳細的搜索引擎名稱,而不是是否是搜索引擎機器人的話,請看下面的代碼:
function get_naps_bot() {
    $useragent = strtolower($_SERVER['HTTP_USER_AGENT']);
    if (strpos($useragent, 'googlebot') !== false){
        return 'Googlebot';
    }
    if (strpos($useragent, 'msnbot') !== false){
        return 'MSNbot';
    }
    if (strpos($useragent, 'slurp') !== false){
        return 'Yahoobot';
    }
    if (strpos($useragent, 'baiduspider') !== false){
        return 'Baiduspider';
    }
    if (strpos($useragent, 'sohu-search') !== false){
        return 'Sohubot';
    }
    if (strpos($useragent, 'lycos') !== false){
        return 'Lycos';
    }
    if (strpos($useragent, 'robozilla') !== false){
        return 'Robozilla';
    }
    return false;
}
這段代碼返回了詳細的搜索引擎機器人的名稱,呵呵大家看那種好用就用哪種吧!
本篇文章来源于 Php Question 原文链接:http://www.phpq.net/viewnews-32.html
創作者介紹
創作者 yoonow 的頭像
yoonow

右腦 想去環遊世界

yoonow 發表在 痞客邦 留言(0) 人氣()