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 相关文章推荐
php session_start()关于Cannot send session cache limiter - headers already sent错误解决方法
Nov 27 PHP
php的大小写敏感问题整理
Dec 29 PHP
php简单smarty入门程序实例
Jun 11 PHP
php打包网站并在线压缩为zip
Feb 13 PHP
php $_SESSION会员登录实例分享
Jan 19 PHP
PHP简单创建压缩图的方法
Aug 24 PHP
PHP实现二维数组按某列进行排序的方法
Nov 18 PHP
Yii2汉字转拼音类的实例代码
Apr 18 PHP
php实现websocket实时消息推送
Mar 30 PHP
PHP 二维array转换json的实例讲解
Aug 21 PHP
ThinkPHP5 框架引入 Go AOP,PHP AOP编程项目详解
May 12 PHP
php+mysql实现的无限分类方法类定义与使用示例
May 27 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实现小写金额转换大写金额的代码(精确到分)
2012/01/10 PHP
php获取远程文件内容的函数
2015/11/02 PHP
PHP使用HTML5 FormData对象提交表单操作示例
2019/07/02 PHP
收集的网上用的ajax之chat.js文件
2007/04/08 Javascript
让 JavaScript 轻松支持函数重载 (Part 2 - 实现)
2009/08/04 Javascript
jQuery 表单验证扩展代码(二)
2010/10/20 Javascript
js设置cookie过期及清除浏览器对应名称的cookie
2013/10/24 Javascript
node.js中的console.assert方法使用说明
2014/12/10 Javascript
node.js中的fs.fchown方法使用说明
2014/12/16 Javascript
JavaScript版的TwoQueues缓存模型
2014/12/29 Javascript
js关于命名空间的函数实例
2015/02/05 Javascript
基于jQuery实现的扇形定时器附源码下载
2015/10/20 Javascript
js实现图片上传并正常显示
2015/12/19 Javascript
jQuery实现的调整表格行tr上下顺序
2016/01/10 Javascript
简单实现js间歇或无缝滚动效果
2016/06/29 Javascript
关于input全选反选恶心的异常情况
2016/07/24 Javascript
如何解决IONIC页面底部被遮住无法向上滚动问题
2016/09/06 Javascript
Jquery中.bind()、.live()、.delegate()和.on()之间的区别详解
2017/08/01 jQuery
JS中Swiper的使用和轮播图效果
2017/08/11 Javascript
angular中如何绑定iframe中src的方法
2019/02/01 Javascript
微信小程序textarea层级过高(盖住其他元素)问题的解决办法
2019/03/04 Javascript
详解Nodejs get获取远程服务器接口数据
2019/03/26 NodeJs
vue子传父关于.sync与$emit的实现
2019/11/05 Javascript
[46:47]2014 DOTA2国际邀请赛中国区预选赛5.21 LGD-CDEC VS NE
2014/05/22 DOTA
Python闭包实现计数器的方法
2015/05/05 Python
Python元组拆包和具名元组解析实例详解
2018/03/26 Python
pycharm配置当鼠标悬停时快速提示方法参数
2019/07/31 Python
详解Python并发编程之从性能角度来初探并发编程
2019/08/23 Python
Python 实现黑客帝国中的字符雨的示例代码
2020/02/20 Python
亚马逊海外购:亚马逊美国、英国、日本、德国直邮
2021/03/18 全球购物
区三好学生主要事迹
2014/01/30 职场文书
家长对孩子的感言
2014/03/10 职场文书
2014年超市员工工作总结
2014/11/18 职场文书
Python词云的正确实现方法实例
2021/05/08 Python
vue响应式原理与双向数据的深入解析
2021/06/04 Vue.js
一定要知道的 25 个 Vue 技巧
2021/11/02 Vue.js