正在读取数据,页面载入中,请稍后...

PHP禁止蜘蛛抓取网页,可降低服务器负载状态

搜索引擎蜘蛛,一直都是不按套路出牌的。你想让它抓取、收录的网页,它就是不抓取也不收录。相反的,你不想让它抓取的网页,这个搜索引擎蜘蛛倒是抓得勤快,能把你的服务器抓宕机。好的,看来大家,真的是做梦都想收录,那就请大家继续做梦吧!洗洗睡吧,还是算了吧,又抓取又收录,因为这种好事情,只会发生在做梦中。

最近,小千发现,服务器线程爆表,最后开启网站日志,发现是必应蜘蛛和谷歌蜘蛛在作妖,疯狂的抓取,疯狂的收录,但是收录又没流量,真的是浪费服务器资源啊。下面,小千教大家一个方法,那就是PHP判断来访者,根据蜘蛛标识,禁止搜索引擎蜘蛛抓取。这做法能大大的提升服务器性能,当然,只针对你不想给蜘蛛访问的PHP文件。

代码参上

$userAgent = $_SERVER['HTTP_USER_AGENT'];//获取User Agent信息
$searchEngines = array('compatible','bot','Baiduspider','bingbot','Sogou','Bytespider','YisouSpider','360Spider','Googlebot');//禁止抓取的指定蜘蛛标识
foreach ($searchEngines as $searchEngine) {
    if (stripos($userAgent, $searchEngine) !== false) {
        //提示:被禁止的标识,这条路行不通
		exit();//停止继续执行程序
    }
}

如何识别搜索引擎蜘蛛》网上有很多教程,使用的是strpos函数,对于bot和Bot、Sogou和sogou的区别就很大。很明显,使用strpos函数来判断,这代码是不起作用的。为什么不起作用,看下面的函数解释吧。

特别注意

strripos() - 查找字符串在另一字符串中最后一次出现的位置(不区分大小写)
strpos() - 查找字符串在另一字符串中第一次出现的位置(区分大小写)
strrpos() - 查找字符串在另一字符串中最后一次出现的位置(区分大小写)

PHP禁止蜘蛛抓取网页,可降低服务器负载状态 - 全民博客

在上面的判断中,我用的是stripos函数,而不是strpos函数啊。这两个函数的区别可大了,区分大小写和不区分大小写,真的是能起到这段代码的定性作用,总之就是用不区分大小写的效果会更加。

好了,效果就是这么个效果,情况就是这么个情况,作为站长,经常关注网站,经常关注服务器状态,保持服务器稳定状态,才是做作为站长的必修课。

本文结束

评论专区

发表评论

评论列表(无评论)