AIアシスタントがウェブページを取得する方法:ChatGPT、Claude、GeminiなどのNginxログ分析

ある開発者が、ユーザーが特定のサイトについて尋ねた際に、AIアシスタントがウェブページをリアルタイムで取得するのか、それともキャッシュされたインデックスから回答するのかを判断するための実践的な実験を行いました。カスタムNginxログ設定と、主要なチャットボットにユニークなクエリ文字列を含むプロンプトを与えることで、取得行動の明確な証拠を捉えました。
調査のセットアップ
このテストでは、デフォルトのcombinedログが圧縮するヘッダーを捕捉するために、カスタムNginxログフォーマットを使用しました:
log_format ai_probe escape=json '{' '"time":"$time_iso8601",' '"ip":"$remote_addr",' '"uri":"$request_uri",' '"status":$status,' '"ua":"$http_user_agent",' '"referer":"$http_referer",' '"accept":"$http_accept"' '}';
各アシスタントには、ユニークなクエリ文字列(/?ai=chatgpt、/?ai=claudeなど)を指し示すプロンプトが与えられ、帰属を簡単に追跡できるようにしました。一時的なキャッシュヒットが取得パターンを隠蔽しないよう、プロンプトは複数のセッションで再実行されました。
専用ユーザーエージェントで自らを明示したもの
5つのアシスタントが、取得特有のシグナルと共にアクセスしました:
- ChatGPT: ChatGPT-User/1.0 (ChromeスタイルのAccept、robots.txtチェックなし)
- Claude: Claude-User/1.0 (*/* Accept、常に最初にrobots.txtをチェック)
- Perplexity: Perplexity-User/1.0 (空のAcceptヘッダー)
- Meta AI: meta-webindexer/1.1 (*/* Accept、robots.txtチェックなし)
- Manus: Manus-User/1.0 サフィックス付きChrome UA (ChromeスタイルのAccept)
これら5つはすべて、オリジンから直接ページを取得しました。
自らを明示しなかったもの
- Gemini: プロンプトウィンドウ中、Googleのユーザーエージェントからのリクエストはゼロでした。ライブでのプロバイダー側の取得を行わず、完全に自らのインデックスから回答しました。
- Copilot: プレーンなChrome 135 on Linux x86_64、完全なブラウザスタイルのAccept。取得は行いましたが、人間の訪問者と区別がつきません。
- Grok: プレーンなMac Safari 26とプレーンなMac Chrome 143。取得は行いましたが、人間の訪問者と区別がつきません。
観察された主要な行動パターン
ChatGPT: 同じバースト内で複数の送信元IPからヒットし、通常、引用するページを決定する間に複数の候補ページを一度に取得します。24時間の本番ウィンドウでは、ChatGPT-Userリクエストは5つの異なるAzure範囲から来ました:23.98.x.x、20.215.x.x、40.67.x.x、51.8.x.x、51.107.x.x。
Claude: 常に、すべてのページ取得の前に /robots.txt を取得します(Anthropicが所有するIP空間、216.73.216.0/24 範囲から)。リダイレクトをクリーンに追従し、末尾スラッシュの正規化も含みます。Anthropicは3つの異なるボットを運用しています:Claude-User(ユーザー主導の取得)、Claude-SearchBot(検索インデックス作成)、ClaudeBot(トレーニングクローラー)。
Perplexity: Acceptヘッダーやリファラーなしでの直接取得。PerplexityBot(彼らの検索インデックス作成クローラー)は別途 /robots.txt にpingを送信しました。著者は、Perplexityはライブで取得できるが、自らのインデックスから回答することもできると指摘しています。
Gemini: ライブでのプロバイダー側の取得は観察されませんでした。GoogleはGemini用の取得専用ユーザーエージェントを公開しておらず、Googleのクローラードキュメントによると、AI OverviewsとAI Modeは、Googlebotが構築するのと同じ検索インデックスに基づいています。
この実験は、2つのシグナルを区別しています:プロバイダー側の取得(アシスタントが専用ユーザーエージェントでオリジンにアクセス)と、実際のクリックスルー訪問(人間がAIの回答を読み、引用をクリックし、通常のブラウザとしてアシスタントをリファラーとして到着)。これら両方を単一の「AIトラフィック」数値にまとめると、この有用な区別が隠れてしまいます。
📖 完全なソースを読む: HN AI Agents
👀 See Also

パイロットコンソール:プライベートAIエージェントネットワーク管理用ウェブダッシュボード
ある開発者が、Pilot Protocolを基盤とするP2Pネットワーク層を使用して、プライベートAIエージェントネットワークを管理するためのウェブダッシュボード「Pilot Console」を構築しました。開発者はClaudeを活用してバックエンドAPIのルーティングを生成し、Reactダッシュボードの構造を設計することで、開発を加速させました。

altRAG:AIコーディングエージェント向けにベクトルDB RAGを2KBポインタファイルで置き換える
altRAGは、ベクトルデータベースRAGを軽量なポインタファイルに置き換えるPythonツールです。Markdown/YAMLスキルファイルをスキャンして、セクションを正確な行番号とバイトオフセットにマッピングする2KBのスケルトンファイルを作成し、AIエージェントが必要なセクションのみを読み取れるようにします。

エージェントコレクション:129のクロードコードエージェントを1つのリポジトリに集約
ある開発者が129個のClaude Codeエージェントを単一のリポジトリにまとめ、~/.claude/agents/形式で提供しています。簡単なコピーコマンドでインストール可能です。このコレクションには、複数の分野にまたがる68の個性豊かなエージェントを含む完全なagency-agentsシステムに加え、マルチエージェントチームワークフロー用の追加エージェントも含まれています。

Tilde.run: トランザクション型・バージョン管理型ファイルシステムを備えたエージェントサンドボックス
Tilde.runは、AIエージェント向けの隔離されたリバーシブルなサンドボックスを提供し、GitHub、S3、Googleドライブをマウントするバージョン管理されたファイルシステムと、デフォルトでのネットワーク分離を備えています。