PHPで検索エンジンボット(クローラー)を検出する方法を解説
PHPで検索エンジンボットを判別する基本の考え方
Webサイトにアクセスしてくる検索エンジンのスパイダー(クローラー、ボット)を判別したい場合、各検索エンジンが公開しているボット名の一覧リストを参考にするとよいでしょう。
そして、アクセス元のユーザーエージェントを確認するには、$_SERVER['HTTP_USER_AGENT'] を使用します。この値にボット名が含まれているかどうかをチェックすることで、アクセスしてきたのがスパイダー(ボット)かどうかを判定できます。
方法1:strstr関数でボット名をチェックする
以下は、ユーザーエージェントに特定のボット名が含まれているかを確認するシンプルな例です。
if(strstr(strtolower($_SERVER['HTTP_USER_AGENT']), "some_bot_name")) {
// ボットだった場合に実行する処理
}
コードの解説
strtolower 関数を使ってユーザーエージェントの文字列をすべて小文字に変換し、その結果を strstr 関数に渡します。これにより、ユーザーエージェントの中に対象となるボット名が含まれているかどうかを比較し、アクセス元がボットかどうかを判定しています。大文字・小文字のゆらぎを吸収できるため、より確実な検出が可能になります。
方法2:preg_match関数で複数のボットをまとめて検出する
主要な検索エンジンボットを一括で判定したい場合は、正規表現を使う方法が便利です。以下に関数化したサンプルを示します。
function _bot_detected() {
return (
isset($_SERVER['HTTP_USER_AGENT'])
&& preg_match('/bot|crawl|slurp|spider|mediapartners/i', $_SERVER['HTTP_USER_AGENT'])
);
}
コードの解説
preg_match 関数は、文字列の中から特定のパターンを検索するための関数です。この例では、「bot」「crawl」「slurp」「spider」「mediapartners」といったキーワードを正規表現で指定し、ユーザーエージェントと照合しています。
パターンの末尾にある i は大文字・小文字を区別しないことを意味します。また、isset で $_SERVER['HTTP_USER_AGENT'] の存在を事前に確認しているため、未定義のエラーも防げます。
このキーワード群には、Googlebot(bot)、Bingbot(bot/crawl)、Yahoo! Slurp(slurp)、Google AdSense のメディアパートナーボット(mediapartners)など、主要なクローラーがカバーされています。
使い分けのポイント
- 単一のボットだけを判定したい場合:方法1の
strstrを使ったシンプルな方法が適しています。 - 複数の検索エンジンボットを広く判定したい場合:方法2のように正規表現でまとめてマッチさせる方が効率的です。
ただし、ユーザーエージェントは偽装可能なため、厳密な判定が必要なケースではIPアドレスによる逆引き検証など、別の方法と組み合わせることをおすすめします。
-
Windows 10の検索ボックスが動かない?Windows Searchの問題を解決する方法
最新のWindows 10アップデートにより、検索ボックスが正常に動作しなくなるトラブルが発生しているようです。先週、多くのWindows 10ユーザーがこの問題に遭遇しましたが、Microsoftはすでに修正済みであると発表しています。しかしその後も、Thurrott.comのBrad Sams氏のように、Windows Searchが応答しないという声が報告されています。 Sams氏の投稿への返信では、PowerShellを使ってWindows Search用のスクリプトをダウンロード・実行する方法が数多く提案されていましたが、それ以外にもWindows 10でWindows Searc
-
YouTube検索を劇的に改善!高度な検索演算子とフィルターの使い方ガイド
これからYouTuberとして活動を始めようとしている方や、自分の動画を適切なキーワードで検索結果に表示させたい方にとって、YouTubeはあらゆる世代のユーザーが動画を楽しんでいる巨大なプラットフォームです。YouTubeはユーザーがより良い検索結果を得られるよう、常に改善を重ねてきました。最近では、就寝時間にデバイスを置くよう促す「おやすみリマインダー機能」も追加されています。 YouTubeで正確なキーワード検索を行うには? ここでは、YouTubeの高度な検索を活用するためのコツをいくつかご紹介します。これらのテクニックを覚えておけば、膨大な動画が存在するプラットフォーム上でも、目的の