プログラマの戯言

Wordpress、PHP、Movabletype、Javascript、SQL、アプリ他いろいろTips

PHPでクローラー(crawler)の判定を行なう

PCサイト、SPサイトを作成したWEBサイトにおいて
クローラからのリクエストかどうかを判定する必要があったので
方法をまとめました。

<?php
//クローラー判定
function isClawler($clawler=false){
	$ua = $_SERVER['HTTP_USER_AGENT'];
	
	$crawler_arr = array(
		"Googlebot"		// google
		,"Baiduspider"		// Baidu
		,"bingbot"		// Bing
		,"Yeti"			// NHN
		,"NaverBot"		// NaverBot
		,"Yahoo"		// Yahoo
		,"Tumblr"		// Tumblr
		,"livedoor"		// livedoor
	);
	foreach ($crawler_arr as $value) {
		if (stripos($ua, $value) !== false) {
		    return true;
		}
	}
	return false;
}
?>


クローラー判定の配列には、主要なものを指定していますので
必要によって追加をするということになるかと思います。

後は「stripos」でそれぞれのチェックを行なうという流れです。
正規表現でチェックしても良かったのですが
ベンチマークをそれぞれ調べてみると
ループで回すほうがよかったので
上記の処理にしました。