PHPでモバイル向けクローラを判定する関数
    このエントリをはてなブックマークに登録

PHPからモバイル向けクローラを判定する関数を作ってみました。

ケータイサイトを作る際に、対応機種を「FOMA以降」としたいような場合があります。

そのような場合、例えばPEAR::Net_UserAgent_Mobileの「isFOMA」メソッドなどを使って機種を判定し、非対応機種であればその旨を書いたページを表示するのですが、クローラはFOMAのユーザエージェントを持っているとは限りません。

例えばGoogleは、未だにドコモのN505iのユーザエージェントを騙ってきます。
それでは非対応用画面がクローラにキャッシュされてしまいます。

 

ということで、その対策のためモバイル向けのクローラーを判定する関数を作ってみました。
とは言ってもリストをなめるだけのごくごく単純な関数です。

この関数を対応機種判定より先に判定してやれば、クローラが非対応機種と判断されることはありません。

/**
 * クローラ判定
 * @return	bool	true:クローラ、false:非クローラ
 */
function isCrawler()
{
	$crawler_arr = array(
		'Googlebot-Mobile', 
		'moba-crawler', 
		'mobile goo', 
		'LD_mobile_bot', 
		'froute.jp', 
		'Y!J-SRD', 
		'Y!J-MRD'
	);
	
	foreach ($crawler_arr as $val) {
		if (false !== strpos($_SERVER['HTTP_USER_AGENT'], $val)) {
			return true;
		}
	}
	
	return false;
}

 

クローラのユーザエージェント文字列の情報元としたページはこちらです。

 

なお、ユーザエージェントを変更し検索エンジンを騙ることは簡単ですので、ケータイ実機とクローラ以外に見られたくないページを用意する場合は、IPアドレスによるアクセス制限を併用してください。

他にもIPアドレスからキャリアやクローラの種類を判定する方法もあるのですが、それはまた別のエントリーで書きたいと思います。

 

関連:


 

最近の記事







4 Responses to “PHPでモバイル向けクローラを判定する関数”

  1. […] ke-tai.orgの記事を参考にしました。 […]

  2. […] クローラー対策についてはke-tai.orgさんの記事を参考にしました。 […]

  3. 今度こそ、Google AnalyticsからGoogleMobile-botを除外する

     前回、前々回と、「携帯からのアクセスもどれくらいあるのか」知りたいと、Google Analyticsを使える様に設定していた。モバイルクローラまで、解析結果に出てしまうので、改めて調べ…

  4. […] クローラー対策についてはke-tai.orgさんの記事を参考にしました。 […]

コメントを書く