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 相关文章推荐
搜索引擎技术核心揭密
Oct 09 PHP
PHP4实际应用经验篇(1)
Oct 09 PHP
常用的PHP数据库操作方法(MYSQL版)
Jun 08 PHP
php数组函数序列之array_pop() - 删除数组中的最后一个元素
Nov 07 PHP
ThinkPHP权限认证Auth实例详解
Jul 22 PHP
php从给定url获取文件扩展名的方法
Mar 14 PHP
JSON用法之将PHP数组转JS数组,JS如何接收PHP数组
Oct 08 PHP
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
Dec 14 PHP
PHP正则验证字符串是否为数字的两种方法并附常用正则
Feb 27 PHP
PHP常见字符串操作函数与用法总结
Mar 04 PHP
php7性能提升的原因详解
Oct 13 PHP
ThinkPHP6.0如何利用自定义验证规则规范的实现登陆
Dec 16 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 array_pop()数组函数将数组最后一个单元弹出(出栈)
2011/07/12 PHP
php去除换行符的方法小结(PHP_EOL变量的使用)
2013/02/16 PHP
PHP大小写问题:函数名和类名不区分,变量名区分
2013/06/17 PHP
解析htaccess伪静态的规则
2013/06/18 PHP
PHP实现简单爬虫的方法
2015/07/29 PHP
PHP中调用C/C++制作的动态链接库的教程
2016/03/10 PHP
php微信公众号开发之欢迎老朋友
2018/10/20 PHP
Laravel 修改验证异常的响应格式实例代码详解
2020/05/25 PHP
JavaScript 10件让人费解的事情
2010/02/15 Javascript
JS与jQuery遍历Table所有单元格内容的方法
2015/12/07 Javascript
JavaScript提高加载和执行效率的方法
2017/02/03 Javascript
利用原生JS与jQuery实现数字线性变化的动画
2017/02/24 Javascript
浅谈Vue.js 组件中的v-on绑定自定义事件理解
2017/11/17 Javascript
Node.js笔记之process模块解读
2018/05/31 Javascript
详解创建自定义的Angular Schematics
2018/06/06 Javascript
关于Vue项目跨平台运行问题的解决方法
2018/09/18 Javascript
angular ng-model 无法获取值的处理方法
2018/10/02 Javascript
js实现延迟加载的几种方法详解
2019/01/19 Javascript
this.$toast() 了解一下?
2019/04/18 Javascript
vue中实现弹出层动画效果的示例代码
2020/09/25 Javascript
[02:47]3.19DOTA2发布会 国服成长历程回顾
2014/03/25 DOTA
python高并发异步服务器核心库forkcore使用方法
2013/11/26 Python
wxPython窗口的继承机制实例分析
2014/09/28 Python
python以环状形式组合排列图片并输出的方法
2015/03/17 Python
Python的re模块正则表达式操作
2016/05/25 Python
Python实现句子翻译功能
2017/11/14 Python
python使用参数对嵌套字典进行取值的方法
2019/04/26 Python
浅析python redis的连接及相关操作
2019/11/07 Python
Python MOCK SERVER moco模拟接口测试过程解析
2020/04/13 Python
基于Python爬取搜狐证券股票过程解析
2020/11/18 Python
英国音乐设备和乐器商店:Gear4music
2017/10/16 全球购物
JD Sports意大利:英国篮球和运动时尚的领导者
2017/10/29 全球购物
实习生的自我鉴定范文欣赏
2013/11/20 职场文书
领导干部作风整顿剖析材料
2014/10/11 职场文书
学校中秋节活动总结
2015/03/23 职场文书
结婚幸福感言
2015/08/01 职场文书