php判断搜索引擎蜘蛛爬虫的方法整理
发布:smiling 来源: PHP粉丝网 添加日期:2018-09-14 11:12:17 浏览: 评论:0
先来看蜘蛛列表:
搜索引擎 user-agent(包含) 是否PTR 备注
google Googlebot √ host ip 得到域名:googlebot.com主域名
baidu Baiduspider √ host ip 得到域名:*.baidu.com 或 *.baidu.jp
yahoo Yahoo! √ host ip 得到域名:inktomisearch.com主域名
Sogou Sogou ×
*Sogou web spider/3.0(+http://www.sogou.com/docs/help/webmasters.htm#07″)
*Sogou Push Spider/3.0(+http://www.sogou.com/docs/help/webmasters.htm#07″)
网易 YodaoBot × *Mozilla/5.0 (compatible; YodaoBot/1.0;http://www.yodao.com/help/webmaster/spider/”; )
MSN MSNBot √ host ip 得到域名:live.com主域名
360 360Spider × Mozilla/5.0 (Windows; U; Windows NT 5.1; zh-CN; rv:1.8.0.11) Firefox/1.5.0.11; 360Spider
soso Sosospider × Sosospider+(+http://help.soso.com/webspider.htm)
bing bingbot √ host ip 得到域名:msn.com主域名
再来看看例子:
- <?php
- //php判断搜索引擎蜘蛛爬虫的方法
- function checkrobot($useragent='') {
- static $kw_spiders = array('bot', 'crawl', 'spider', 'slurp', 'sohu-search', 'lycos', 'robozilla');
- static $kw_browsers = array('msie', 'netscape', 'opera', 'konqueror', 'mozilla');
- $useragent = strtolower(emptyempty($useragent) ? $_SERVER['HTTP_USER_AGENT'] : $useragent);
- if (strpos($useragent, 'http://') === false && dstrpos($useragent, $kw_browsers))
- return false;
- if (dstrpos($useragent, $kw_spiders))
- return true;
- return false;
- }
- function dstrpos($string, $arr, $returnvalue = false) {
- if (emptyempty($string))
- return false;
- foreach ((array) $arr as $v) {
- if (strpos($string, $v) !== false) {
- $return = $returnvalue ? $v : true;
- return $return;
- } //phpfensi.com
- }
- return false;
- }
- if(checkrobot()){
- echo '蜘蛛';
- }else{
- echo '人类';
- }
- ?>
PHP反解析IP方法,例子:
- /**
- *检查IP及蜘蛛真实性
- * (check_spider('66.249.74.44',$_SERVER['HTTP_USER_AGENT']));
- * @copyright http://blog.chacuo.net
- * @author 8292669
- * @param string $ip IP地址
- * @param string $ua ua地址
- * @return false|spidername false检测失败不在指定列表中
- */
- function check_spider($ip,$ua)
- {
- static $spider_list=array(
- 'google'=>array('Googlebot','googlebot.com'),
- 'baidu'=>array('Baiduspider','.baidu.'),
- 'yahoo'=>array('Yahoo!','inktomisearch.com'),
- 'msn'=>array('MSNBot','live.com'),
- 'bing'=>array('bingbot','msn.com')
- );
- if(!preg_match('/^(\d{1,3}\.){3}\d{1,3}$/',$ip)) return false;
- if(emptyempty($ua)) return false;
- foreach ($spider_list as $k=>$v)
- {
- ///如果找到了
- if(stripos($ua,$v[0])!==false)
- {
- $domain = gethostbyaddr($ip);
- if($domain && stripos($domain,$v[1])!==false)
- {
- return $k;
- } //phpfensi.com
- }
- }
- return false;
- }
目前只加入几个搜索引擎检测,这些是可以做反解析查询的。不能做反解析查询的,最好做速度限制,用户会使用它们来伪造搜索引擎来抓取你的资源。
Tags: 爬虫 蜘蛛 搜索引擎
- 上一篇:PHPExcel 中文使用手册详解
- 下一篇:PHP+Ajax手机发红包的程序例子
相关文章
- ·php怎么写爬虫?一个PHP实现的轻量级简单爬虫(2018-07-12)
- ·PHP能写爬虫吗?(PHP实现爬虫技术示例)(2020-02-25)
- ·PHP实现简单爬虫的方法(2021-06-14)
- ·PHP一个简单的无需刷新爬虫(2021-11-03)
- ·通过PHP程序知道蜘蛛是否访问你的网站(附代码)(2013-12-10)
- ·PHP记录搜索引擎蜘蛛访问网站足迹的方法(2021-05-22)
- ·PHP判断来访是搜索引擎蜘蛛还是普通用户的代码小结(2021-06-18)
- ·根据来路是否为搜索引擎来决定是否跳出弹窗代码(2013-12-08)
- ·获取关键词及所属来源搜索引擎名称(2014-08-05)
- ·php记录搜索引擎爬行记录的实现代码(2018-06-06)
- ·使用php记录用户通过搜索引擎进网站的关键词(2020-09-14)
- ·php实现判断访问来路是否为搜索引擎机器人的方法(2021-05-22)
- ·php获取从百度、谷歌等搜索引擎进入网站关键词的方法(2021-06-09)
推荐文章
热门文章
最新评论文章
- 写给考虑创业的年轻程序员(10)
- PHP新手上路(一)(7)
- 惹恼程序员的十件事(5)
- PHP邮件发送例子,已测试成功(5)
- 致初学者:PHP比ASP优秀的七个理由(4)
- PHP会被淘汰吗?(4)
- PHP新手上路(四)(4)
- 如何去学习PHP?(2)
- 简单入门级php分页代码(2)
- php中邮箱email 电话等格式的验证(2)