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


Posted in PHP onMarch 06, 2013

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);
 }
PHP 相关文章推荐
建立动态的WML站点(三)
Oct 09 PHP
php和js交互一例-PHP教程,PHP应用
Jan 03 PHP
让PHP支持页面回退的两种方法
Jan 10 PHP
PHPLog php 程序调试追踪工具
Sep 09 PHP
php下安装配置fckeditor编辑器的方法
Mar 02 PHP
深入apache host的配置详解
Jun 09 PHP
php中数字、字符与对象判断函数用法实例
Nov 26 PHP
php文件夹的创建与删除方法
Jan 24 PHP
教你php如何实现验证码
Jan 20 PHP
smarty模板数学运算示例
Dec 11 PHP
一个非常实用的php文件上传类
Jul 04 PHP
PHP创建文件及写入数据(覆盖写入,追加写入)的方法详解
Feb 15 PHP
php设置编码格式的方法
Mar 05 #PHP
简单实现限定phpmyadmin访问ip的方法
Mar 05 #PHP
关于PHP结束标签的使用细节探讨及联想
Mar 04 #PHP
利用PHP扩展vld查看PHP opcode操作步骤
Mar 04 #PHP
PHP对MongoDB[NoSQL]数据库的操作
Mar 01 #PHP
phpExcel导出大量数据出现内存溢出错误的解决方法
Feb 28 #PHP
Apache中php.ini的设置方法
Feb 28 #PHP
You might like
PHP_MySQL教程-第一天
2007/03/18 PHP
PHP开发框架laravel安装与配置教程
2015/03/13 PHP
PHP中异常处理的一些方法整理
2015/07/03 PHP
详解WordPress中给链接添加查询字符串的方法
2015/12/18 PHP
使用Codeigniter重写insert的方法(推荐)
2017/03/23 PHP
PHP排序算法之基数排序(Radix Sort)实例详解
2018/04/21 PHP
tp5框架使用composer实现日志记录功能示例
2019/01/10 PHP
清华大学出版的事半功倍系列 javascript全部源代码
2007/05/04 Javascript
Js四则运算函数代码
2012/07/21 Javascript
js中parseInt函数浅谈
2013/07/31 Javascript
用js正确判断用户名cookie是否存在的方法
2014/01/28 Javascript
jQuery版AJAX简易封装代码
2016/09/14 Javascript
浅谈AngularJs指令之scope属性详解
2016/10/24 Javascript
javascript中BOM基础知识总结
2017/02/14 Javascript
解决webpack -p压缩打包react报语法错误的方法
2017/07/03 Javascript
Angular实现图片裁剪工具ngImgCrop实践
2017/08/17 Javascript
微信小程序之滚动视图容器的实现方法
2017/09/26 Javascript
实现div内部滚动条滚动到底部和顶部的代码
2017/11/15 Javascript
JS实现将对象转化为数组的方法分析
2019/01/21 Javascript
JS实现移动端可折叠导航菜单(现代都市风)
2020/07/07 Javascript
uniapp实现可滑动选项卡
2020/10/21 Javascript
[04:51]TI10典藏宝瓶Ⅱ外观视频展示
2020/08/15 DOTA
python调用windows api锁定计算机示例
2014/04/17 Python
Python自动化运维和部署项目工具Fabric使用实例
2016/09/18 Python
Python实现快速计算词频功能示例
2018/06/25 Python
Django开发中的日志输出的方法
2018/07/02 Python
在Mac上删除自己安装的Python方法
2018/10/29 Python
Python如何基于smtplib发不同格式的邮件
2019/12/30 Python
Python3 字典dictionary入门基础附实例
2020/02/10 Python
Python requests获取网页常用方法解析
2020/02/20 Python
在tensorflow下利用plt画论文中loss,acc等曲线图实例
2020/06/15 Python
奥地利时尚、美容、玩具和家居之家:Kastner & Öhler
2020/04/26 全球购物
Linux上比较文件的命令都有哪些
2013/09/28 面试题
学生实习自我鉴定
2013/10/11 职场文书
蜜蜂引路教学反思
2014/02/04 职场文书
Redis命令处理过程源码解析
2022/02/12 Redis