## 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ファイルを公開します:

```json
{
  "members": [
    {
      "name": "my-agent",
      "publicKeyUrl": "https://example.com/.well-known/keys/agent.pub"
    }
  ]
}
```

既知のエージェント（ChatGPTなど）からの署名付きリクエストを検証するには、`web-bot-auth` npmパッケージを使用します:

```bash
npm install web-bot-auth
```

## 既知のエージェントディレクトリ

| エージェント | ディレクトリURL |
|-------|---------------|
| ChatGPT | `https://chatgpt.com/.well-known/http-message-signatures-directory` |

## 詳細情報

- [RFC 9421: HTTP Message Signatures](https://www.rfc-editor.org/rfc/rfc9421)
- [web-bot-auth npm package](https://www.npmjs.com/package/web-bot-auth)
- [Cloudflare blog: web-bot-auth](https://blog.cloudflare.com/web-bot-auth/)
- [SeatGeek implementation](https://chairnerd.seatgeek.com/chasing-signature/)

## 関連

- [A2A](/kb/ja/a2a)
- [SKILL.md](/kb/ja/skills)
