在SEO的优化中,通过判断访问者是否为搜索引擎的蜘蛛,可以做很多的事情。当然SEO这方面以后有时间了再写写,这篇博文主要是说一说在PHP中,如何去判断网站的访问者是否为搜索引擎的蜘蛛。
每个搜索引擎的蜘蛛在访问网站时,其 UA(User-Agent)都会携带自己的标识,我们可以通过获取访客浏览器的 UA,并查找其中是否含有蜘蛛标示的形式来判断访客是否为搜索引擎的蜘蛛。
PHP 判断是否为搜索引擎的蜘蛛
示例1:
<?php $useragent = addslashes(strtolower($_SERVER['HTTP_USER_AGENT'])); if (strpos($useragent, 'googlebot')!== false){ $bot = 'Google Spider'; }elseif (strpos($useragent,'bAIduspider') !== false){ $bot = 'Baidu Spider'; }elseif (strpos($useragent,'sogou spider') !== false){ $bot = 'Sogou Spider'; }elseif (strpos($useragent,'sosospider') !== false){ $bot = 'SOSO Spider'; }elseif (strpos($useragent,'360spider') !== false){ $bot = '360 Spider'; }elseif (strpos($useragent,'yahoo') !== false){ $bot = 'Yahoo Spider'; }elseif (strpos($useragent,'msn') !== false){ $bot = 'MSN Spider'; }elseif (strpos($useragent,'sohu') !== false){ $bot = 'Sohu Spider'; }elseif (strpos($useragent,'yodaoBot') !== false){ $bot = 'Yodao Spider'; }else{ $bot = 'NO Spider'; } echo $bot; ?>
注意:
1、以上代码只对几个常见的搜索引擎的蜘蛛作了判断,如果需要判断的更全面,那就自己搜索一些蜘蛛的标示了
2、strtolower() 将UA中的大写字母转成小写,可以提示代码的查找精确度
3、addslashes() 函数可以在预定义字符之前添加反斜杠的字符串,以提高匹配的精确度
示例2:
除了上面的直接判断外,我们可以把这个判断逻辑封装成为一个函数,在判断是否搜索引擎的蜘蛛时,直接调用函数即可。
function is_spider(){ $userAgent = strtolower($_SERVER['HTTP_USER_AGENT']); $spiders = array( 'Googlebot', 'Baiduspider', 'Yahoo! Slurp', 'YodaoBot', 'msnbot' //这里可以加入更多的蜘蛛标示 ); foreach ($spiders as $spider) { $spider = strtolower($spider); if (strpos($userAgent, $spider) !== false) { return true; } } return false; }
函数调用方法:
if(is_spider()){ echo '我是蜘蛛'; }else{ echo '我不是蜘蛛'; }
蜘蛛标识:
以下是收集而来比较常见的蜘蛛标识,如果有错误或者没有收集到的,可以在下面的评论区留言哦。
百度蜘蛛:Baiduspider
百度图片:Baiduspider-image
百度WAP:Baiduspider-mobile
百度视频:Baiduspider-video
百度新闻:Baiduspider-news
谷歌蜘蛛:Googlebot
360蜘蛛:360Spider
SOSO蜘蛛:Sosospider
雅虎蜘蛛:Yahoo
有道蜘蛛:YoudaoBot,YodaoBot
搜狗蜘蛛:Sogou News Spider,Sogou web spider、Sogou inst spider、Sogou blog、Sogou Orion spider
必应蜘蛛:bingbot
MSN蜘蛛:msnbot,msnbot-media
一搜蜘蛛:YisouSpider
Alexa蜘蛛:ia_archiver
宜搜蜘蛛:EasouSpider
即刻蜘蛛:JikeSpider
一淘网蜘蛛:EtaoSpider