PHPでモバイル向けクローラを判定する関数
Tweet
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;
}
クローラのユーザエージェント文字列の情報元としたページはこちらです。
- Google mobile [googlejapan.blogspot.com]
- moba-crawler [crawler.dena.jp]
- mobile goo [help.goo.ne.jp]
- livedoor mobile [helpguide.livedoor.com]
- froute [search.froute.jp]
- Yahoo! [help.yahoo.co.jp]
なお、ユーザエージェントを変更し検索エンジンを騙ることは簡単ですので、ケータイ実機とクローラ以外に見られたくないページを用意する場合は、IPアドレスによるアクセス制限を併用してください。
他にもIPアドレスからキャリアやクローラの種類を判定する方法もあるのですが、それはまた別のエントリーで書きたいと思います。
関連:
- 携帯以外のIPを制限する.htaccessを自動生成してくれるサービス「Mobile IP htaccess Maker」
- IPアドレスからケータイやクローラの判別などを行えるApacheモジュール「mod_cidr_lookup」
- ケータイキャリアやクローラのIPアドレス情報を共有するためのWikiを作ってみました
Flash プロの現場の仕事術 CS5/CS4/CS3対応
体系的に学ぶ 安全なWebアプリケーションの作り方
ケータイHTML ポケットリファレンス
携帯サイト年鑑2010
PHP×携帯サイト デベロッパーズバイブル
携帯サイト制作 WEBデザインの新しいルール
ケータイHTMLコンパクトリファレンス
札幌のソーシャルゲーム開発なら

2月 4th, 2009 at 0:53:56
[…] ke-tai.orgの記事を参考にしました。 […]
2月 4th, 2009 at 0:58:22
[…] クローラー対策についてはke-tai.orgさんの記事を参考にしました。 […]
9月 11th, 2009 at 17:06:25
今度こそ、Google AnalyticsからGoogleMobile-botを除外する
前回、前々回と、「携帯からのアクセスもどれくらいあるのか」知りたいと、Google Analyticsを使える様に設定していた。モバイルクローラまで、解析結果に出てしまうので、改めて調べ…
10月 3rd, 2010 at 22:14:41
[…] クローラー対策についてはke-tai.orgさんの記事を参考にしました。 […]