Web Bot Auth (RFC 9421)
web-bot-authとは?
web-bot-authは、AIエージェントが暗号学的なHTTPメッセージ署名(RFC 9421)を使って身元を証明するための新興標準です。偽装可能なUser-Agent文字列に頼るのではなく、エージェントは秘密鍵でリクエストに署名します。サイトは公開された公開鍵で署名を検証します。
なぜ重要か
User-Agent検出は、もはや信頼できません:
- ChatGPT Agent Mode はChromeのUA(
Chrome/138.0.0.0)を装い — UAだけではブラウザと区別できません - Perplexity は汎用ChromeのUAを使ったステルスクローラー(1日300〜600万件のリクエスト)を運用しています
- Google-Agent は標準的なChromeのUA文字列を使用しています
業界は暗号学的なアイデンティティへ移行しています。OpenAI、Google、Cloudflare、Shopify、Vercel、Visaがこのアプローチを支持しています。IETFでの標準化が進行中です。
AgentGradeが確認する項目
署名ディレクトリの公開 — /.well-known/http-message-signatures-directory を確認します。これは、サイトがエージェントのアイデンティティと、その署名付きリクエストの検証に使える公開鍵を公開する標準的な場所です。
メンバーの宣言 — ディレクトリには、サイトが認識または振る舞うエージェントのアイデンティティ(例:「ChatGPT」、「GoogleAgent」)をリストする members 配列が含まれている必要があります。
公開鍵の利用可能性 — 各メンバーは、署名検証用に取得可能な公開鍵を指す publicKeyUrl を持つべきです。
実装方法
/.well-known/http-message-signatures-directory にJSONファイルを公開します:
{
"members": [
{
"name": "my-agent",
"publicKeyUrl": "https://example.com/.well-known/keys/agent.pub"
}
]
}
既知のエージェント(ChatGPTなど)からの署名付きリクエストを検証するには、web-bot-auth npmパッケージを使用します:
npm install web-bot-auth
既知のエージェントディレクトリ
| エージェント | ディレクトリURL |
|---|---|
| ChatGPT | https://chatgpt.com/.well-known/http-message-signatures-directory |
詳細情報
- RFC 9421: HTTP Message Signatures
- web-bot-auth npm package
- Cloudflare blog: web-bot-auth
- SeatGeek implementation