当ブログは広告を掲載していることがあります

【実録・完全解決】AI系Botクローラーを遮断した方法|Meta・Bing・Serpstatなど多数に対応

ある日突然、レンタルサーバーで運営している自分のサイトが急激に重くなり、まともに表示できない状態に陥りました。

原因を調べるには数十万行に及ぶアクセスログを確認する必要があり、人力ではほぼ不可能。

そこで今回はAIを全面的に活用し、

  • 原因がAI系Botクローラーであることを特定
  • 遮断すべきBotを選定
  • 遮断するための設定や定義の作成

といった一連の作業を行い、わずかな時間で完全解決できました。

実際のところ、作業の大部分はAI側で完結し、非常に簡単に問題を収束させることができました。同じようなトラブルに遭遇した際には、本記事の内容が参考になれば幸いです。

1.発生した事象

自分が運営している複数のサイトが、ある日突然、ほとんど表示できないほど重くなりました。

<運営サイト>

  • phpで自作した情報サイトが2件
    (全国の店・施設紹介のため、ページ数は数万件)
  • WordPressによるブログ2件
    (記事数は1500件と60件)

<稼働環境>

  • サーバー:さくらインターネットのレンタルサーバー
  • SSL:さくらインターネットの無料SSL
  • ドメイン:ムームードメイン

※本記事のサイトとは別環境です。

さくらインターネットのサーバーコントロールパネルを確認すると、サーバーステータスのリソース欄に警告メッセージが表示されていました。

現在リソース制限中です
2026/**/** アクセス過多のため、アクセス数が制限されています。

WordPress側のエラーログやプラグインに問題はなく、phpで組んだサイトも変更を行っていなかったため、内部の不具合ではなく、外部からの大量アクセスが疑われました。

となると原因を特定するにはアクセスログの確認が必要になりますが、データ件数は約20万件。

これは人力での解析がほぼ不可能なレベルです。

とは言え、「何が起きているのか」「どこからのアクセスなのか」「対策が必要なのか」を把握するためには、ログ解析が避けて通れない状況でした。

2.原因調査(AIをフル活用)

2-1.AI活用に至った経緯

手順を手っ取り早く知りたい方は、この章は読み飛ばしてOKです!

アクセス不能に近い状態を解消するためには、

  • 大量アクセスがどこからきているか
  • どのページにアクセスが集中しているか

を把握する必要があります。

しかし、対象となるアクセスログは約20万件。人力での解析はほぼ不可能。アクセス解析ツールに取り込む方法も考えましたが、一発で原因が分かるものでもなく、時間だけがかかる状況でした。

そこで試しにAIに相談してみたところ、

「ログを少し貼り付けてくれ」

とのこと。

半信半疑で数百件ほどコピペで渡したところ、

「原因はほぼ特定できた」

というまさかの回答。転スラになった気分です。

2-2.AI活用による原因特定手順

わずか数百件で原因が分かるのは心強いものの、ログは20万件あるため、把握漏れの懸念が残ります。

とは言え、AIの無料プラン(copilot)では20万件を丸ごと渡すのは不可能です。

そこで、以下の方法を取りました。

<手順1>

  • ログの前半・中盤・後半から300行ずつを抜粋
  • 3回に分けて合計900行をサンプルとしてAIに提示

すると、特定のAI系などのBotクローラーが短時間に大量アクセスを繰り返し、静的ページや画像ファイルにも連続してリクエストを送っていることが判明しました。

<確認された主なBot(User-agent)>

  • meta-externalagent:Facebook/Instagram関連のクロール
  • Serpstatbot:SEO・マーケティングサービスのクロール
  • Bingbot:Bingによる画像クロール

この他にもrobots.txtを無視してアクセスしているBotが複数存在し、通常のクローラーとは明らかに異なる挙動が多数見られました。

<手順2>

原因調査の仕上げとして、

  • これらのBotが全アクセスの何割を占めているか
  • 遮断すれば負荷が解消するか

をAIに確認しておくと、次の対策がスムーズになります。

2-3.原因調査のやり方まとめ

<手順1>

  • ログファイルの前半・中盤・後半から、300件ずつ抽出
  • AIに渡して解析し、大量アクセスのBotを特定

<手順2>

  • Bot毎のアクセスの割合把握
  • Bot遮断により問題解決するかを確認

3.対策実施(AIをフル活用)

原因がAI系Botクローラーによる過剰アクセスであることが判明したため、次に行うべきは、

  • どのBotを遮断するか
  • どう遮断するか

の二点です。

ここでもAIを活用し、最短で安全な対策を得ることができます。

3-1.遮断Botの選定

Bot(クローラー)の中には、Googleを代表として、必要かつWelcomeなものがあります。

当然ですが、もしGoogleを遮断してしまったら、検索結果に出ないことになりますので、遮断対象の選定は極めて重要です。

<AIを活用した選定方法>

  • 影響度の多いBotを洗い出してもらう
  • その中から「遮断すべきBot」をAIに判断してもらう

筆者のサイトで、実際に遮断したBot(User-agent)を参考に記載します。なお、これらが悪いということではなく、あくまで筆者サイトでは不要だったという位置づけです。

<参考:筆者が実際に不要と判断したBot>

AhrefsBot, baiduspider, BLEXBot, DataForSeoBot, dotbot, GPTBot, ICC-Crawler, meta-externalagent, MJ12bot, PetalBot, SemrushBot, serpstatbot, TikTokSpider, Yandex, YandexBot, YandexImages

3-2.Botの遮断

3-2-1.遮断の基本方針

Botの遮断は、本来、robots.txtで行えるはずなのですが、これを無視して容赦なくアクセスしてくるBotも存在します。

そのため、対策は以下の二段構えで行います。

  • robots.txt
    Botを指定して遮断。
    画像などは必要に応じてディレクトリ単位で部分的に遮断。
  • .htaccess
    Botを指定して強制的に遮断。

※どちらもルートディレクトリに置くテキストファイルです。

参考までに、この2つのファイルの役割の違いについても説明しておきます。

  • robots.txt
    「クロールしないでください」とクローラーに伝えることができます。GoogleやBingなど、真っ当なBotはこれに従います。
  • .htaccess
    アクセス許可・拒否をシステム的に制御することができます。robots.txtを無視してアクセスしてくるBotは、こちらで強制遮断します。

3-2-2.具体的な遮断手順

robots.txt、.htaccessの2つのファイルを作成して、運営サイトのルートディレクトリに設置します。

ここでは、AIを使ってファイルを作成する方法を解説します。

3-2-2-1.robots.txtの作成・導入手順

3-1で選定した「遮断すべきBot」について、AIに以下のように依頼します。

  • 「下記Botを遮断するrobots.txtの定義を作成して」
  • Botの一覧をそのままコピペで渡す

AIが生成した定義をテキストファイルに貼り付け、robots.txtとして保存します。
(※保存形式はUTF-8N(BOMなし)、改行コードはLFです)

さらに、筆者のケースではBingのBotが画像ファイルに大量アクセスしていたため、画像ディレクトリ全体を全Botでクロール拒否する設定も追加しました。

AIに「画像ディレクトリへのクロールを全Botで拒否する定義を作成して」と依頼すれば、同様に生成してくれます。

以下は筆者のケースで作成された定義です。参考に載せておきます。

# Block unwanted crawlers
User-agent: AhrefsBot
Disallow: /
User-agent: baiduspider
Disallow: /
User-agent: BLEXBot
Disallow: /
User-agent: DataForSeoBot
Disallow: /
User-agent: dotbot
Disallow: /
User-agent: GPTBot
Disallow: /
User-agent: ICC-Crawler
Disallow: /
User-agent: meta-externalagent
Disallow: /
User-agent: MJ12bot
Disallow: /
User-agent: PetalBot
Disallow: /
User-agent: SemrushBot
Disallow: /
User-agent: serpstatbot
Disallow: /
User-agent: TikTokSpider
Disallow: /
User-agent: Yandex
Disallow: /
User-agent: YandexBot
Disallow: /
User-agent: YandexImages
Disallow: /# General rules for all other crawlers

# image(負荷が高いので全拒否)
User-agent: *
Disallow: /images/
3-2-2-2..htaccess

robots.txtと同様に3-1で選定した「遮断すべきBot」について、AIに以下のように依頼します。

  • 「下記Botを遮断する.htaccessの定義を作成して」
  • Bot一覧をコピペで渡す

ルートディレクトリにある.htaccessをダウンロードし(無い場合は新規作成)、AIが生成した定義を冒頭に貼り付けます。
(※保存形式はUTF-8N(BOMなし)、改行コードはLFです)

以下は筆者のケースで作成された定義です。参考に載せておきます。

############################################
# アクセス制限(BOT ブロック)
############################################
# --- robots.txt の内容を完全反映 ---
SetEnvIfNoCase User-Agent "AhrefsBot" shutout
SetEnvIfNoCase User-Agent "baiduspider" shutout
SetEnvIfNoCase User-Agent "BLEXBot" shutout
SetEnvIfNoCase User-Agent "DataForSeoBot" shutout
SetEnvIfNoCase User-Agent "dotbot" shutout
SetEnvIfNoCase User-Agent "GPTBot" shutout
SetEnvIfNoCase User-Agent "ICC-Crawler" shutout
SetEnvIfNoCase User-Agent "meta-externalagent" shutout
SetEnvIfNoCase User-Agent "MJ12bot" shutout
SetEnvIfNoCase User-Agent "PetalBot" shutout
SetEnvIfNoCase User-Agent "SemrushBot" shutout
SetEnvIfNoCase User-Agent "serpstatbot" shutout
SetEnvIfNoCase User-Agent "TikTokSpider" shutout
SetEnvIfNoCase User-Agent "Yandex" shutout
SetEnvIfNoCase User-Agent "YandexBot" shutout
SetEnvIfNoCase User-Agent "YandexImages" shutout

# --- 拒否処理 ---
Order Allow,Deny
Allow from all
Deny from env=shutout

4.具体的なプロンプトまとめ

この章では、実際に筆者がAIに投げたプロンプトを整理して掲載します。

そのままコピペして使える形にしてありますので、同じようなトラブルが発生した際には参考にしてください。

4-1.原因調査に使用したプロンプト

<ログ解析用プロンプト>

下記はアクセスログの一部です。
大量アクセスの原因となっているBotやUser-agentを特定してください。
また、どのURLにアクセスが集中しているかも分析してください。

【ログ】
(ここに300行をコピペ)

<Botの影響度確認プロンプト>

先ほど特定されたBotについて、
・アクセス全体に占める割合
・サイトに負荷を与えている可能性
・遮断すべきかどうか
を判断してください。

<追加ログの確認プロンプト>

ログの別部分を提示します。
前回の分析と合わせて、原因となっているBotに変化がないか確認してください。

【ログ】
(別の300行をコピペ)

4-2.遮断Botの選定に使用したプロンプト

<遮断対象の判断プロンプト>

下記のBot一覧について、
・サイト運営上必要かどうか
・robots.txtを守るBotかどうか
・遮断して問題ないか
を判断してください。

【Bot一覧】
(AIが抽出したBot名をコピペ)

4-3.robots.txt作成に使用したプロンプト

<Bot遮断用robots.txt生成プロンプト>

下記Botを遮断するrobots.txtの定義を作成してください。
User-agentごとにDisallow: / を設定してください。

【Bot一覧】
(遮断対象Botをコピペ)

<画像ディレクトリ遮断プロンプト>

画像ディレクトリ(/[Directory name]/)へのクロールを全Botで拒否する
robots.txtの定義を作成してください。

4-4..htaccess作成に使用したプロンプト

<Bot遮断用.htaccess生成プロンプト>

下記Botを遮断する.htaccessの定義を作成してください。
SetEnvIfNoCaseを使い、User-agentごとにshutoutを設定し、
最後にDeny from env=shutoutで遮断してください。

【Bot一覧】
(遮断対象Botをコピペ)

<既存.htaccessへの統合プロンプト>

下記の.htaccess内容に、先ほど生成したBot遮断定義を
冒頭に追加した完全版を作成してください。

【現在の.htaccess】
(既存内容をコピペ)

4-5.プロンプトまとめ(要点)

  • ログ解析は「300行×3回」で十分。心配なら追加する
  • Botの影響度と遮断可否はAIに判断してもらう
  • robots.txtと.htaccessはAIに生成してもらう
  • 既存ファイルとの統合もAIに任せる

まとめ:対策後の再発防止策

今回のアクセス障害は、AI系Botクローラーによる過剰アクセスが原因でした。

ログは約20万件と膨大でしたが、AIのフル活用により、原因特定から対策の実施までを短時間で完了できました。

<AIを活用した作業>

  • ログの抜粋解析
  • Botの影響度判断
  • robots.txtと.htaccessの生成

一方で、AI系Botは今後も増え続け、挙動も多様化していくことが予想されます。

そのため、今回の対策だけで終わりではなく、日常的な「再発防止策」を取り入れることが重要になります。

<定期的に行うべき再発防止策>

  • アクセス数の推移を確認し、急増がないか注意する
  • アクセスログを定期的に抽出し、新種Botや異常挙動の有無をAIに解析してもらう
  • robots.txtと.htaccessを最新のBot事情に合わせて更新する

特に後者の二つはAIが得意とする領域であり、負担を最小限にしながら高い精度でチェックすることができます。

突然のアクセス負荷に悩まされた際には、本記事の内容が少しでも参考になれば幸いです。

 

コメント

タイトルとURLをコピーしました