BLOG

ブログ

2024/10/15 技術系

【インフラ保守】robots.txtで行うクローラー制御について

この記事を書いた人 R.M

みなさんこんにちは!
今回は、クローラーの過剰アクセスにより生じた問題と、その解決策についてお話しします。
今回の記事が、皆さんのサイト管理の一助となれば幸いです!

訪れし異変:アクセスログの肥大化

ある時、とあるサーバのディスク容量が少なくなっていることに気づきました。
調べたところ、アクセスログファイルが異常なスピードで大きくなっていたのです。
具体的にいうと、3週間でアクセスログのファイル容量が+2GB。

このままでは、サーバのストレージを圧迫してしまいます。
また、こんなにもアクセスログが肥大化するということは、どこからか攻撃を受けている可能性も考えられました。とても恐ろしい状態です。
こうした問題が起きていないかどうかや、問題が起きていた場合に早期察知するためにも、定期的なサーバ監視が欠かせないのだと感じます。

原因究明:AmazonBotによる過剰アクセス

アクセスログを調査したところ、以下が判明しました。

  • 特定の3つのIPアドレスからの異常(とも言える)アクセス
    (今回認められたIPは、23.22.35.*** 3.224.220.*** 52.70.240.***)
  • これら3つのIPアドレスから、3週間で総計24万回のアクセス(1つのIPからそれぞれ8万回ほど)
  • これらのIPアドレスを調べたところ、AmazonBotと判明

ここで登場しましたAmazonBotとは、Amazonが運営するwebクローラーで、通常はAlexaサービスの向上などに使用されているもののようです。(AmazonBotについての詳細は公式のこちらをご覧ください!)
今回はそのクロール(webページの巡回頻度と情報収集)が少しばかり多すぎたようです。
該当のwebサイトではAmazonBotのクロールは重要ではなかったため、アクセスの制御を行うこととしました。

解決策:robots.txtの活用

問題が分かったところで、次に考えるは解決策です。
ここで登場するのがブログタイトルにあります、robots.txt(ロボットテキスト)となります。

robots.txtとは

  • webサイトの root ディレクトリに置かれる特別なテキストファイル
  • webクローラー(Bot)に対して、サイトのどの部分をクロールしてよいかを指示する
  • 適切に設定することで、不要なクロールを防ぐことができる

今回は、以下のようにrobots.txtに追記しました。
もしrobots.txtファイルがない場合は作成し、rootディレクトリへ配置すればOKです。

User-agent: AmazonBot
Disallow: /

簡単に説明をすると、この2行で「AmazonBotさん、このサイト全体をクロールしないでください」と指示しています。

もし指定ディレクトリ以下・ページ単位でクロールをしないように指示する方法は以下となります。

#AmazonBotが指定ディレクトリ以下をクロールしないように指示する場合
User-Agent:AmazonBot
Disallow: /example/

#AmazonBotが指定ページをクロールしないように指示する場合
User-Agent:AmazonBot
Disallow: /example/sample.html

robots.txt修正結果:Before & After

robots.txtを変更した結果です。

Before:

  • AmazonBotから1日あたりの総計、約1万回を超えるアクセス
  • それにより、3週間でアクセスログのファイル容量が+2GBの肥大化

After:

  • AmazonBotからのアクセスが止まる
  • それにより、アクセスログの肥大化が止まる

修正したrobots.txtは翌日には反映され、効果が確認できました。
robots.txtでクローラーの制御を行ったことにより、ストレージの圧迫問題が解決され、サーバの負荷も軽減されました。
さらに、制御によって不要なアクセスのログ出力がなくなり、アクセスログからは必要なアクセス情報を簡単に確認できるようにもなりました。

学びと教訓:今後のwebサイト管理に向けて

この経験から、以下のことを学べました!

  1. 定期的なログ監視の重要性: 定期的な監視により問題を発見することで、大きな問題に発展する前に対処ができる
  2. robots.txtの有効性: 適切に設定すれば、不要なBotアクセスを効果的に制御できる

まとめ

今回の経験は、小さな設定変更が大きな効果をもたらす好例となりました。
ただし、robots.txtの設定で正当なクローラーまで排除してしまうと、検索エンジンでの表示に影響が出る可能性があります。
そのため、設定方法は慎重に判断していく必要がありそうです。

以上、今回はrobots.txtでのクローラー制御についてご紹介させていただきました!
この記事があなたのwebサイト管理の一助となれば幸いです。
最後までご覧いただきありがとうございました!



株式会社ウイングドアは福岡のシステム開発会社です。
現在、私達と一緒に"楽しく仕事が出来る仲間"として、新卒・中途採用を絶賛募集しています!
ウイングドアの仲間達となら楽しく仕事できるかも?と興味をもった方、
お気軽にお問い合わせ下さい!

アーカイブ