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 时间计算问题小结
Jan 04 PHP
php生成扇形比例图实例
Nov 06 PHP
ThinkPHP框架任意代码执行漏洞的利用及其修复方法
Jul 04 PHP
PHP中使用Session配合Javascript实现文件上传进度条功能
Oct 15 PHP
php+mysql实现数据库随机重排实例
Oct 17 PHP
如何使用微信公众平台开发模式实现多客服
Jan 06 PHP
php的闭包(Closure)匿名函数初探
Feb 14 PHP
Yii2中SqlDataProvider用法示例
Sep 22 PHP
php 反斜杠处理函数addslashes()和stripslashes()实例详解
Dec 25 PHP
Laravel框架用户登陆身份验证实现方法详解
Sep 14 PHP
thinkphp5 加载静态资源路径与常量的方法
Dec 24 PHP
PHP生成二维码与识别二维码的方法详解【附源码下载】
Mar 07 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 Class&Object -- PHP 自排序二叉树的深入解析
2013/06/25 PHP
laravel5环境隐藏index.php后缀(apache)的方法
2019/10/12 PHP
Stop SQL Server
2007/06/21 Javascript
javascript下过滤数组重复值的代码
2007/09/10 Javascript
使用javascript做的一个随机点名程序
2014/02/13 Javascript
使用jQuery简单实现模拟浏览器搜索功能
2014/12/21 Javascript
jQuery实现的登录浮动框效果代码
2015/09/26 Javascript
通过js获取上传的图片信息(临时保存路径,名称,大小)然后通过ajax传递给后端的方法
2015/10/01 Javascript
javascript弹性运动效果简单实现方法
2016/01/08 Javascript
js截取字符串功能的实现方法
2017/09/27 Javascript
如何去除vue项目中的#及其ie9兼容性
2018/01/11 Javascript
详解Vue快速零配置的打包工具——parcel
2018/01/16 Javascript
解决VUEX兼容IE上的报错问题
2018/03/01 Javascript
微信小程序实现商品属性联动选择
2019/02/15 Javascript
vue项目中使用fetch的实现方法
2019/04/25 Javascript
vue cli3.0 引入eslint 结合vscode使用
2019/05/27 Javascript
layui原生表单验证的实例
2019/09/09 Javascript
基于layui table返回的值的多级嵌套的解决方法
2019/09/19 Javascript
vue 封装 Adminlte3组件的实现
2020/03/18 Javascript
微信小程序开发(一):服务器获取数据列表渲染操作示例
2020/06/01 Javascript
vuecli项目构建SSR服务端渲染的实现
2020/10/30 Javascript
[53:13]DOTA2-DPC中国联赛 正赛 DLG vs PHOENIX BO3 第三场 1月18日
2021/03/11 DOTA
Python translator使用实例
2008/09/06 Python
给Python IDLE加上自动补全和历史功能
2014/11/30 Python
在Python程序中进行文件读取和写入操作的教程
2015/04/28 Python
解决PyCharm import torch包失败的问题
2018/10/13 Python
python3+opencv 使用灰度直方图来判断图片的亮暗操作
2020/06/02 Python
Python StringIO及BytesIO包使用方法解析
2020/06/15 Python
惊艳的手工时装首饰:Migonne Gavigan
2018/02/23 全球购物
Etam俄罗斯:法国女士内衣和家居服网上商店
2019/10/30 全球购物
2014学校庆三八妇女节活动总结
2014/03/01 职场文书
考试作弊检讨书1000字(5篇)
2014/10/19 职场文书
小学生暑假安全公约
2015/07/14 职场文书
《迟到》教学反思
2016/02/24 职场文书
护理自荐信
2019/05/14 职场文书
python实现语音常用度量方法的代码详解
2021/05/25 Python