Vercel・CloudFrontでAIクローラーを確認する方法

VercelとAmazon CloudFrontで、GPTBotやOAI-SearchBotなどのAIクローラーのアクセスを確認する方法を解説します。ボット管理のルール、ログの設定、WAFのログ、記録が見つからないときの考え方も紹介します。

共有
ウェブのプロジェクトへ向かうクローラーの道を記録する観測所を描いた水彩画

VercelやAmazon CloudFrontでAIクローラーを確認するには、それぞれのボット管理やログの機能で、日時、ホスト、パス、ユーザーエージェント、ステータスを記録します。 ブロックしたアクセスの理由を知りたい場合は、ファイアウォール(WAF)のログもあわせて確認します。

nginxを自分で管理している場合はnginxのログでChatGPTクローラーを確認する方法、WordPressの場合はWordPressでChatGPTクローラーを確認・制御する方法をご覧ください。

Vercelの場合

AI Botsのルールを確認する

Vercelは、すべてのプランで「AI Bots Managed Ruleset」を提供しています。既知のAIクローラーのアクセスを判定し、次のどちらかの動作を設定できます。

  • Log: ブロックせずに記録する
  • Deny: ブロックする

プロジェクトを開き、「Firewall」→「Rules」→「Bot Management」で、AI Botsのルールの動作を確認します。Denyになっている場合は、アクセスがアプリまで届いていなくても不思議ではありません。判定に使うクローラーの一覧はVercelが管理しているので、新しいクローラーの名前を自分で追加し続ける必要はありません。

記録を確認する

Firewallの画面で、ルールに一致したアクセスと、ブロックの結果を確認します。関数まで届いたアクセスは、Runtime Logsで、ユーザーエージェントやファイアウォールの判定とあわせて確認できます。

記録するのは、日時、本番のホスト名、パス、ユーザーエージェント、ステータス、ファイアウォールの動作です。

長く残すならLog Drainsを使う

Log Drainsは、ProとEnterpriseのプランで使えます。メソッド、ホスト、パス、ユーザーエージェント、ステータス、接続元のIP、参照元などを外部に送れます。

サンプリングに注意しましょう。アクセスの10%だけを送る設定では、「クローラーが来なかった」とは言えません。サンプリングの設定も記録しておくか、確認したいパスはすべてのアクセスを集めるようにします。

Amazon CloudFrontの場合

ログを有効にする

CloudFrontの標準のログは、一定期間の閲覧者のリクエストを記録し、指定した保存先にファイルとして届けます。遅れを短くしたい場合は、別にリアルタイムのログもあります。

ディストリビューションの設定で標準のログを有効にし、本番のディストリビューションが対象になっているか、確認したい期間のファイルが保存先に残るかを確認します。クローラーの確認のために残す項目は次のとおりです。

  • 日付と時刻
  • ディストリビューションとホスト
  • URIのパス
  • ステータス
  • 結果の種類(キャッシュから返したかなど)
  • ユーザーエージェント
  • 参照元

クエリ文字列は、必要で許可されている場合だけ残します。

ユーザーエージェントをデコードしてから照合する

CloudFrontのログでは、一部の値がエンコードされています。ユーザーエージェントをデコードしてから、OAI-SearchBot、GPTBot、ChatGPT-User、Claude-SearchBot、ClaudeBot、Claude-User、PerplexityBot、Perplexity-Userの名前で照合しましょう。集計では会社ごとにまとめても、元の値はそのまま残します。

ブロックした理由はAWS WAFのログで確認する

CloudFrontのログで分かるのは、閲覧者に何を返したかです。AWS WAFのWeb ACLがリクエストを処理した場合は、WAFのログで、一致したルールと動作が分かります。2つのログを日時とリクエストの内容で結び付けると、403の原因を調べやすくなります。ただし、すべての403がWAFによるものとは限りません。

どちらの場合も共通のこと

本物かどうかを確認する

ユーザーエージェントは名乗っている名前にすぎません。許可のルールを作る前に、各社が公開しているIPアドレスの範囲や、認証済みボットの仕組みで確認しましょう。名前と役割の一覧はAIクローラー一覧にまとめています。

ステータスから読み取る

ステータス意味
200ページを返した
301・302転送した
403拒否した
404パスが存在しない
429レート制限で拒否した
5xxCDNまたはオリジンのエラー

合計の件数だけでは、クローラーが役に立つページに届いたのか、転送やエラーばかりだったのかが分かりません。パスと結果の種類もあわせて確認しましょう。

記録が見つからないときは「不明」として扱う

一致する記録がない場合、次のような可能性があります。

  • クローラーがサイトにアクセスしていない
  • 確認した期間が違う
  • プロジェクトやディストリビューションの外のホスト名にアクセスした
  • その期間のログが残っていない
  • サンプリングで記録から漏れた
  • 別のセキュリティの仕組みが先に応答した

どのデータを確認したかが分かるまでは、「アクセスなし」ではなく「不明」としておきましょう。

送るログは最小限にする

Cookie、認証のヘッダー、リクエストの本文、許可されていないクエリの値は、ログに含めないようにします。

まとめ

Vercelでは、AI Botsのルールの動作を確認し、Firewallの記録やLog Drainsでアクセスを確認します。CloudFrontでは、標準のログを有効にし、ユーザーエージェントをデコードしてから照合し、ブロックの理由はAWS WAFのログで確認します。

SearchSeal は、クローラーのアクセスは記録しません。AIの回答、ブランドの言及、回答とともに返された引用元のリンクを保存するので、ログとは別に、回答の中での見え方を確認できます。

よくある質問

VercelはAIクローラーを判定できますか?

できます。VercelのAI Bots Managed Rulesetで、既知のAIクローラーのアクセスを記録(Log)またはブロック(Deny)できます。

VercelのLog Drainsは無料のプランで使えますか?

Vercelは、Log DrainsをProとEnterpriseのプランの機能としています。

CloudFrontで200が返っていれば、ChatGPTに引用されたということですか?

そうとは限りません。ログで分かるのは、そのリクエストにページを返したことだけです。引用は別の仕組みで起きるため、回答を記録して確認する必要があります。

出典

AI検索で次に取れる成果を見つけましょう

サイトをチェック