php判断网站访问来路是否为搜索引擎机器人的方法

有时我们需要对网站访客来路进行识别,针对真实用户与搜索引擎作不同动作实现,那么首先就需要判断是否为搜索引擎。php判断方法非常简单,通过过滤$_SERVER['HTTP_USER_AGENT'] 参数即可进行识别,以下是摘录某开源程序的相关源码:

private function getRobot()
{
	if (empty($_SERVER['HTTP_USER_AGENT']))
	{
		return false;
	}
	
	$searchEngineBot = array(
		'googlebot'=>'google',
		'mediapartners-google'=>'google',
		'baiduspider'=>'baidu',
		'msnbot'=>'msn',
		'yodaobot'=>'yodao',
		'youdaobot'=>'yodao',
		'yahoo! slurp'=>'yahoo',
		'yahoo! slurp china'=>'yahoo',
		'iaskspider'=>'iask',
		'sogou web spider'=>'sogou',
		'sogou push spider'=>'sogou',
		'sosospider'=>'soso',
		'spider'=>'other',
		'crawler'=>'other',
	);
	
	$spider = strtolower($_SERVER['HTTP_USER_AGENT']);
	foreach ($searchEngineBot as $key => $value)
	{  
		if (strpos($spider, $key)!== false)
		{
			return $value;
		}
	}
	
	return false;
}

public function isRobot()
{
	if($this->getRobot()!==false)
	{
		return true;
	}
	return false;
}

 

点赞 (1)
  1. 免费php空间说道:

    那要不是百度google等著名引擎的蜘蛛 怎么判断呢?比如 我做的一个bt搜索站 http://bt.pekdo.com 怎么判断类似这样小站的的蜘蛛?
    [reply=任侠,2013-02-21 12:57 AM]搜索引擎的蜘蛛一般都会在http头里添加独特的标识,其他类型的蜘蛛可以'spider'=>'other', 'crawler'=>'other', 来进行判断。至于你说的搜索站,不是标准的搜索引擎,在未知其信息的情况下,只能当做普通的来源网站处理[/reply]

发表评论

电子邮件地址不会被公开。 必填项已用*标注