Nhận biết bot bằng PHP

Cập nhật lần cuối vào

Bài viết này mình sẽ hướng dẫn cho bạn cách nhận biết bot bằng PHP. Bot là khái niệm nhằm nói đến các phần mềm tự động, có chức năng thực thi một nhiệm vụ nào đó trong mạng internet. Bạn có thể hình dùng ra hơn bằng cách liên tưởng tới bot của các bộ máy tìm kiếm như Google, Bing, Yahoo,… Cũng giống như cách nhận biết trình duyệt và cách nhận biết hệ điều hành, bạn cũng có thể nhận biết được bot thông qua user agent.

function get_bots() {
	$result = '';
	$bots_list = array(
		'Abacho' => 'AbachoBOT',
		'Acoon' => 'Acoon',
		'Aesop' => 'AESOP_com_SpiderMan',
		'Ah-ha' => 'ah-ha.com crawler',
		'Euroseek' => 'Arachnoidea',
		'AlltheWeb' => 'FAST-WebCrawler',
		'SearchHippo' => 'Fluffy the spider',
		'Google' => 'Googlebot',
		'Gigablast' => 'Gigabot',
		'Yuntis' => 'Gulper',
		'Alexa' => 'ia_archiver',
		'LookSmart' => 'MantraAgent',
		'Microsoft' => 'MSN',
		'AltaVista' => 'Scooter',
		'Scrub The Web' => 'Scrubby',
		'Teoma' => 'Teoma_agent1',
		'WhatUSeek' => 'Winona',
		'Wisenut' => 'ZyBorg',
		'IBM' => 'Almaden',
		'NameProtect.com' => 'NameProtect',
		'DMOZ' => 'Robozilla',
		'Tracerlock.com' => 'Tracerlock',
		'W3C' => 'W3C_Validator',
		'WDG' => 'WDG_Validator',
		'Looksmart' => 'Zealbot',
		'Yahoo' => 'Slurp',
		'Bing' => 'bingbot',
		'MSN' => 'msnbot',
		'Yahoo' => 'yahoobot',
		'Google' => 'googlebot'
	);
	$regexp = '/' . implode('|', $bots_list) . '/';
	$ua = $_SERVER['HTTP_USER_AGENT'];
	if(preg_match($regexp, $ua, $matches)) {
	   $result = array_search($matches[0], $bots_list);
	}
	return $result;
}