PHP 判断蜘蛛访问的函数,通过 HTTP_USER_AGENT 判断

文 / @WordPress主题

网站开发过程中关于蜘蛛访问的问题

在网站开发过程中,有时候需要进行判断,判断网站的访客是有血有肉的人类,还是蜘蛛。其中一个需要屏蔽蜘蛛访问的情况是统计网站里面文章的访问数量。

有些蜘蛛不是很规矩,需要屏蔽掉。在这种情况下,就需要通过程序直接屏蔽掉这些蜘蛛的访问。

判断蜘蛛访问的代码

判断蜘蛛访问很简单,通过判断HTTP_USER_AGENT中是否包含蜘蛛的特征码,若存在这些特征码,就可以认为这些访问者是蜘蛛。

//蜘蛛ua特征码
$bots=array
(
	'GoogleBot'=>'googlebot'
	,'GoogleBot'=>'google'
	,'MSN'=>'msnbot'
	,'Alex'=>'ia_archiver'
	,'Lycos'=>'lycos'
	,'AskJeeves'=>'jeeves'
	,'Altavista'=>'scooter'
	,'AllTheWeb'=>'fast-webcrawler'
	,'Inktomi'=>'slurp@inktomi'
	,'Turnitin.com'=>'turnitinbot'
	,'Technorati'=>'technorati'
	,'Yahoo'=>'yahoo'
	,'Findexa'=>'findexa'
	,'NextLinks'=>'findlinks'
	,'Gais'=>'gaisbo'
	,'WiseNut'=>'zyborg'
	,'WhoisSource'=>'surveybot'
	,'Bloglines'=>'bloglines'
	,'BlogSearch'=>'blogsearch'
	,'PubSub'=>'pubsub'
	,'Syndic8'=>'syndic8'
	,'RadioUserland'=>'userland'
	,'Gigabot'=>'gigabot'
	,'Become.com'=>'become.com'
	,'Baidu'=>'baiduspider'
	,'so.com'=>'360spider'
	,'Sogou'=>'spider'
	,'soso.com'=>'sosospider'
	,'Yandex'=>'yandex'
);
$useragent=$_SERVER['HTTP_USER_AGENT'];
foreach($botsas$name=>$lookfor){
	if(stristr($useragent,$lookfor)!==false){
		$is_robot=true;
		break;
	}
}

以上代码中的蜘蛛UA特征码并不算全部,但足以判断大多数蜘蛛。如果需要更精确的判断,可参考以下蜘蛛UA列表与浏览器UA列表的链接。

–[蜘蛛UA列表](http://user-agent-string.info/list-of-ua/bots)
–[浏览器UA列表](http://user-agent-string.info/list-of-ua)

添加UTHEME为好友
扫码添加UTHEME微信为好友
· 分享WordPress相关技术文章,主题上新与优惠动态早知道。
· 微信端最大WordPress社群,限时免费入群。