【PHP】アクセスがBOTかどうか判断する

公開日: : 最終更新日:2013/12/14 サーバー

BOTかどうか判断するコードです

  function isBot() {
      $bot_list = array (
                         'Googlebot',
                         'Yahoo! Slurp',
                         'Mediapartners-Google',
                         'msnbot',
                         'bingbot',
                         'MJ12bot',
                         'Ezooms',
                         'pirst; MSIE 8.0;',
                         'Google Web Preview',
                         'ia_archiver',
                         'Sogou web spider',
                         'Googlebot-Mobile',
                         'AhrefsBot',
                         'YandexBot',
                         'Purebot',
                         'Baiduspider',
                         'UnwindFetchor',
                         'TweetmemeBot',
                         'MetaURI',
                         'PaperLiBot',
                         'Showyoubot',
                         'JS-Kit',
                         'PostRank',
                         'Crowsnest',
                         'PycURL',
                         'bitlybot',
                         'Hatena',
                         'facebookexternalhit',
                         'NINJA bot',
                         'YahooCacheSystem',
                         );
      
      $is_bot = false;
      foreach ($bot_list as $bot) {
          if (stripos($_SERVER['HTTP_USER_AGENT'], $bot) !== false) {
              $is_bot = true;
              break;
          }
      }
      return $is_bot;
  }

ユーザーエージェントから判断していますので、偽装されたら判定できないですが。
アクセスがbotの場合とそうでない場合の時に処理をかき分ける場合とかもあると思いますので。
全てのアクセスに対してDBの書き込み処理とかをする場合、botに対しても処理を行うと、DBが処理できず普通のユーザーがサイトを見れないなんて事もあります。そうなっては本末転倒ですので、botの場合は処理をしないなどしましょう。
私が管理してるサイトは一時期shinobi bot というbotのアクセスがえぐく(多分クロールだとおもうのですが)1時間に1回くらいは、10秒で100アクセスくらいをクローリングしていかれまして、アクセスに対してログを書き込むような処理をしていたため、サイトが1時間に1回必ず重くなるという経験をした事があります。
普通に迷惑でした。

関連記事

記事はありませんでした

Message

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

次のHTML タグと属性が使えます: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>

php
【PHP】リファラーを取得する

ユーザーがどのサイトから来たのか取得したい時ありますよね。 そんな時

php
【PHP】ファイルが存在するか確認する

画像ファイルなど、ファイルの存在確認をするには、file_exists

php
【PHP】arrayの要素を消す

配列で特定のキーの要素を削除したい時は、unset関数を使います

php
【PHP】httpのステータスコードで404を返す方法

ページを表示しつつ、httpステータスは404を返したい時などあると思

php
【PHP】var_dumpで改行させてブラウザで表示したい時

プログラム中でvar_dumpする時、dumpしたものの中身が多いと大

→もっと見る

PAGE TOP ↑