网络编程
位置:首页>> 网络编程>> php编程>> PHP屏蔽蜘蛛访问代码及常用搜索引擎的HTTP_USER_AGENT

PHP屏蔽蜘蛛访问代码及常用搜索引擎的HTTP_USER_AGENT

作者:whsnow  发布时间:2023-09-08 08:07:37 

标签:屏蔽蜘蛛,搜索引擎

PHP屏蔽蜘蛛访问代码代码

PHP屏蔽蜘蛛访问代码及常用搜索引擎的HTTP_USER_AGENT

常用搜索引擎名与 HTTP_USER_AGENT对应值

百度baiduspider

谷歌googlebot

搜狗sogou

腾讯SOSOsosospider

雅虎slurp

有道youdaobot

Bingbingbot

MSNmsnbot

Alexais_archiver


function is_crawler() {
 $userAgent = strtolower($_SERVER['HTTP_USER_AGENT']);
 $spiders = array(
   'Googlebot', // Google 爬虫
   'Baiduspider', // 百度爬虫
   'Yahoo! Slurp', // 雅虎爬虫
   'YodaoBot', // 有道爬虫
   'msnbot' // Bing爬虫
   // 更多爬虫关键字
 );
 foreach ($spiders as $spider) {
   $spider = strtolower($spider);
   if (strpos($userAgent, $spider) !== false) {
     return true;
   }
 }
 return false;
}

下面的php代码附带了更多的蜘蛛标识


function isCrawler() {
   echo $agent= strtolower($_SERVER['HTTP_USER_AGENT']);
   if (!empty($agent)) {
       $spiderSite= array(
           "TencentTraveler",
           "Baiduspider+",
           "BaiduGame",
           "Googlebot",
           "msnbot",
           "Sosospider+",
           "Sogou web spider",
           "ia_archiver",
           "Yahoo! Slurp",
           "YoudaoBot",
           "Yahoo Slurp",
           "MSNBot",
           "Java (Often spam bot)",
           "BaiDuSpider",
           "Voila",
           "Yandex bot",
           "BSpider",
           "twiceler",
           "Sogou Spider",
           "Speedy Spider",
           "Google AdSense",
           "Heritrix",
           "Python-urllib",
           "Alexa (IA Archiver)",
           "Ask",
           "Exabot",
           "Custo",
           "OutfoxBot/YodaoBot",
           "yacy",
           "SurveyBot",
           "legs",
           "lwp-trivial",
           "Nutch",
           "StackRambler",
           "The web archive (IA Archiver)",
           "Perl tool",
           "MJ12bot",
           "Netcraft",
           "MSIECrawler",
           "WGet tools",
           "larbin",
           "Fish search",
       );
       foreach($spiderSite as $val) {
           $str = strtolower($val);
           if (strpos($agent, $str) !== false) {
               return true;
           }
       }
   } else {
       return false;
   }
}
if (isCrawler()){
   echo "你好蜘蛛精!";
}
else{
  echo "你不是蜘蛛精啊!";
}

使用PHP实现蜘蛛访问日志统计


$useragent = addslashes(strtolower($_SERVER['HTTP_USER_AGENT']));

if (strpos($useragent, 'googlebot')!== false){$bot = 'Google';}
elseif (strpos($useragent,'mediapartners-google') !== false){$bot = 'Google Adsense';}
elseif (strpos($useragent,'baiduspider') !== false){$bot = 'Baidu';}
elseif (strpos($useragent,'sogou spider') !== false){$bot = 'Sogou';}
elseif (strpos($useragent,'sogou web') !== false){$bot = 'Sogou web';}
elseif (strpos($useragent,'sosospider') !== false){$bot = 'SOSO';}
elseif (strpos($useragent,'360spider') !== false){$bot = '360Spider';}
elseif (strpos($useragent,'yahoo') !== false){$bot = 'Yahoo';}
elseif (strpos($useragent,'msn') !== false){$bot = 'MSN';}
elseif (strpos($useragent,'msnbot') !== false){$bot = 'msnbot';}
elseif (strpos($useragent,'sohu') !== false){$bot = 'Sohu';}
elseif (strpos($useragent,'yodaoBot') !== false){$bot = 'Yodao';}
elseif (strpos($useragent,'twiceler') !== false){$bot = 'Twiceler';}
elseif (strpos($useragent,'ia_archiver') !== false){$bot = 'Alexa_';}
elseif (strpos($useragent,'iaarchiver') !== false){$bot = 'Alexa';}
elseif (strpos($useragent,'slurp') !== false){$bot = '雅虎';}
elseif (strpos($useragent,'bot') !== false){$bot = '其它蜘蛛';}
if(isset($bot)){
  $fp = @fopen('bot.txt','a');
  fwrite($fp,date('Y-m-d H:i:s')."\t".$_SERVER["REMOTE_ADDR"]."\t".$bot."\t".'http://'.$_SERVER['SERVER_NAME'].$_SERVER["REQUEST_URI"]."\r\n");
  fclose($fp);
}


0
投稿

猜你喜欢

  • 这里所谓的复杂表单,是指表单中包含多种不同的输入类型,比如下拉列表框、单行文本、多行文本、数值等。在经常需要更换这类表单的场合,需要有一个表
  • 兼容IE6的第一步就是单独对IE进行兼容,你针对IE6所写的代码只影响IE6;有几种方法可以区分开IE6:IE特有条件注释、CSS选择器、J
  • 框架特色:一、统一命名空间        默认命名空间为F,当然你也可以改成自己喜欢的名字,整个框架
  • 需求:用SQL语句随机从数据库中随机取N条数据。以前不太清楚SQL语句可以直接随机取数据今天查了一下,发现有两个随机函数: newid()
  • 这篇论坛文章(赛迪网技术社区)主要介绍了如何建立适当的索引实现查询优化的相关问题,具体内容请大家参考下文:索引(index)是除表之外另一重
  • 通常说到外键,只会提到“外键的目的是确定资料的参考完整性(referential integrity)。”,但是外键具体包含哪些动作和含义呢
  • ASP实例代码,利用SQL语句动态创建Access表。留作参考,对在线升级数据库有用处.<% nowtime = now()
  • 这只是个asp小技巧类的东西,它虽然适合在每个不同文件名里调用这个函数,但是也是有前提的,下面让我们来仔细看看其中的原委。  &n
  • 如果备份的数据库有2个文件,分别是.LDF 和 .MDF,打开企业管理器,在实例上右击---所有任务--附加数据库,然后选择那个.MDF文件
  • 第一节:WAP的潜能 这些日子,我们常听到WAP技术,一种手机上网的技术。从技术上讲,移动电话不可能和PC来竞争,移动电话的屏幕只能容下很少
  • 开门见山,直接以例子介绍:  代码如下:CREATE TABLE [dbo].[course]( [id] [int] NULL,
  • 不久之前,笔者一个在企业中从事网管工作的朋友向我求助关于SQL Server服务器内存升级后遇到的问题。原来,他们企业准备上一个企业邮箱系统
  • Francesc (@francesc) 是 Go 核心团队的一员, 是提倡 Google Cloud 平台的开发者. 他是一个编程语言的爱
  • 尽管现代浏览器已经支持了众多的CSS3属性,但是大部分设计师和开发人员貌似依然在关注于一些很“主流”的属性,如border-radius、b
  •  页面加载loading效果, 这个挺好玩的!用setTimeout实现的!可以和服务端整合弄一些生成HTML或者上传文件等应用!
  • 通过在网络上查找资料和自己的尝试,我认为以下系统参数是比较关键的:(1)、back_log:要求 MySQL 能有的连接数量。当主要MySQ
  • Web_THBC 为表示层也就是页面(.aspx) BLL_THBC 为业务逻辑层 DAL_THBC 为数据库交互层 (向数据库执行SQL语
  • 回收站(Recycle Bin)从原理上来说就是一个数据字典表,放置用户删除(drop)掉的数据库对象信息。用户进行删除操作的对象并没有被数
  • Python语言中import的使用很简单,直接使用 import module_name 语句导入即可。这里我主要写一下"imp
  • 内容概要:print() 是一个常用函数。那么,您是否注意过,print() 会在显示当前语句后换行。如果遇到需要连续显示、不换行的情况,比
手机版 网络编程 asp之家 www.aspxhome.com