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 相关文章推荐
fgetcvs在linux的问题
Jan 15 PHP
php检测useragent版本示例
Mar 24 PHP
PHP FATAL ERROR: CALL TO UNDEFINED FUNCTION BCMUL()解决办法
May 04 PHP
php给每个段落添加空格的方法
Mar 20 PHP
Laravel 5框架学习之子视图和表单复用
Apr 09 PHP
PHP中Enum(枚举)用法实例详解
Dec 07 PHP
在Mac OS的PHP环境下安装配置MemCache的全过程解析
Feb 15 PHP
PHP的Yii框架中YiiBase入口类的扩展写法示例
Mar 17 PHP
php中preg_replace正则替换用法分析【一次替换多个值】
Jan 17 PHP
PHP封装返回Ajax字符串和JSON数组的方法
Feb 17 PHP
PHP 实现页面静态化的几种方法
Jul 23 PHP
Thinkphp5 微信公众号token验证不成功的原因及解决方法
Nov 12 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
Android ProgressBar进度条和ProgressDialog进度框的展示DEMO
2013/06/19 PHP
PHP字符串长度计算 - strlen()函数使用介绍
2013/10/15 PHP
php判断用户是否关注微信公众号
2016/07/22 PHP
js传值 判断
2006/10/26 Javascript
JavaScript中的style.display属性操作
2013/03/27 Javascript
jquery.form.js用法之清空form的方法
2014/03/07 Javascript
JavaScript中的操作符==与===介绍
2014/12/31 Javascript
jQuery实现转动随机数抽奖效果的方法
2015/05/21 Javascript
利用jquery禁止外层滚动条的滚动
2017/01/05 Javascript
JavaScript错误处理和堆栈追踪详解
2017/04/18 Javascript
JavaScript设置名字输入不合法的实现方法
2017/05/23 Javascript
微信小程序实现多个按钮toggle功能的实例
2017/06/13 Javascript
基于JavaScript表单脚本(详解)
2017/10/18 Javascript
深入理解Angular4订阅(Subscribe)与取消
2017/11/22 Javascript
详解组件库的webpack构建速度优化
2018/06/18 Javascript
详解超简单的react服务器渲染(ssr)入坑指南
2019/02/28 Javascript
微信小程序实现录音时的麦克风动画效果实例
2019/05/18 Javascript
在node环境下parse Smarty模板的使用示例代码
2019/11/15 Javascript
[01:13]2014DOTA2西雅图邀请赛 舌尖上的TI4
2014/07/08 DOTA
Python实现解析Bit Torrent种子文件内容的方法
2017/08/29 Python
zookeeper python接口实例详解
2018/01/18 Python
深入解析python中的实例方法、类方法和静态方法
2019/03/11 Python
python实现银行管理系统
2019/10/25 Python
python通过文本在一个图中画多条线的实例
2020/02/21 Python
python 解压、复制、删除 文件的实例代码
2020/02/26 Python
开发人员所需要知道的HTML5性能分析面面观
2012/07/05 HTML / CSS
售后专员岗位职责
2013/12/08 职场文书
五十岁生日宴会答谢词
2014/01/15 职场文书
幼儿教师培训感言
2014/03/08 职场文书
机关单位工作失职检讨书
2014/11/20 职场文书
体育教师个人总结
2015/02/09 职场文书
银行反洗钱宣传活动总结
2015/05/08 职场文书
团结友爱主题班会
2015/08/13 职场文书
2016元旦晚会主持词开场白和结束语
2015/12/04 职场文书
2016大学生毕业实习心得体会
2016/01/23 职场文书
Nginx优化服务之网页压缩的实现方法
2021/03/31 Servers