用PHP搜索引擎蜘蛛检测

任何搜索引擎优化策略的一部分都应该始终使用户和搜索引擎看到相同的事物。如果您开始提供其他内容,您将可能最终无法执行或完全被禁止。但是,在某些情况下,您将需要检测搜索引擎蜘蛛的存在。例如,假设您有一个指向网站部分的链接,并且您想为其添加一个计数器,该计数器每次用户单击该链接时都会注册一个操作。一种方法是将参数添加到链接的URL,如果存在该参数,则表明该用户正在浏览该站点,因此该操作将被注册。你不

function spiderDetect() {
 $agentArray = array("ArchitextSpider", "Googlebot", "TeomaAgent",
  "Zyborg", "Gulliver", "Architext spider", "FAST-WebCrawler",
  "Slurp", "Ask Jeeves", "ia_archiver", "Scooter", "Mercator",
  "[email protected]", "Crawler", "InfoSeek Sidewinder",
  "almaden.ibm.com", "appie 1.1", "augurfind", "baiduspider",
  "bannana_bot", "bdcindexer", "docomo", "frooglebot", "geobot",
  "henrythemiragorobot", "sidewinder", "lachesis", "moget/1.0",
  "nationaldirectory-webspider", "naverrobot", "ncsa beta",
  "netresearchserver", "ng/1.0", "osis-project", "polybot",
  "pompos", "seventwentyfour", "steeler/1.3", "szukacz",
  "teoma", "turnitinbot", "vagabondo", "zao/0", "zyborg/1.0",
  "Lycos_Spider_(T-Rex)", "Lycos_Spider_Beta2(T-Rex)",
  "Fluffy the Spider", "Ultraseek", "MantraAgent","Moget",
  "T-H-U-N-D-E-R-S-T-O-N-E", "MuscatFerret", "VoilaBot",
  "Sleek Spider", "KIT_Fireball", "WISEnut", "WebCrawler",
  "asterias2.0", "suchtop-bot", "YahooSeeker", "ai_archiver",
  "Jetbot"
 );
 
 $theAgent = $_SERVER["HTTP_USER_AGENT"];
 
 foreach ($agentArray as $anAgent) {
  if (stripos($theAgent, $anAgent) !== false) {
   return true;
  };
 };
 return false;
}

该功能通过找到访问者的当前用户代理字符串并将其与数组中的用户代理列表进行比较来起作用。如果找到用户代理,则返回true,否则返回值为false。

使用此功能,您现在可以包含if语句,以查看用户代理是否是搜索引擎蜘蛛。

if ( spiderDetect() ) {
 // 为蜘蛛做些事
}else{
 // 为用户做某事
}

请谨慎使用此功能。如果您将不同的内容提供给用户和搜索引擎蜘蛛,则很可能会因您的努力而被禁止。

另外,这可能是搜索引擎蜘蛛用户代理的不完整列表,如果您知道的更多,请写评论,我将它们添加到该列表中。

更新:重新编写了部分查找代码,以使其更加高效。