Claude-Agent User-Agentの見分け方 — Anthropic運用ブラウザの識別
Claude Duetなどが使うAnthropic運用のブラウザは、User-AgentにClaude-Agentトークンを付けて訪問します。見分け方、IPの照合、許可と拒否が何を左右するかを押さえます。
Anthropicが運用するブラウザからのアクセスは、User-Agentに Claude-Agent というトークンを含みます。サイト管理者は、このトークンと公開されたIPアドレス一覧の2点で、通信の出どころを見分けられます。
ヘルプセンターに新しい記事が加わり、Claude Duetなど一部のClaude製品が使うブラウザの名乗り方と、許可・拒否の考え方が示されました。ClaudeBotなどのクローラーとは別枠の話です。
要点
Claude-Agentトラフィックの押さえどころ
- Claude Duetを含む一部のClaude製品は、Anthropicがホストするブラウザで、ユーザーの指示どおりにタスクを進める
- この使い方は「agentic browser use」と呼ばれ、ClaudeBot・Claude-User・Claude-SearchBotとは別物
- 見分けるキーは2つ。User-Agentの
Claude-Agentトークンと、公開IP一覧のClaude-Agent欄 - User-Agentは誰でも偽装できるため、IPの照合が欠かせない
- 許可か拒否かは、ユーザーがそのサイトでの作業をClaudeに頼めるかどうかを左右する
全体としては、サイト側に新しい選択肢が1つ増えた話です。クローラー向けの設定を変えなくても、この種のアクセスは独立して扱えます。
サイト管理者の選択肢はどう変わるか
User-Agentで見分ける
ヘルプセンターによると、リクエストはAnthropicのインフラ上で動く実際のブラウザから届きます。ブラウザ本来のUser-Agentヘッダーに、Anthropicのホスト型Claudeエージェントが操作していることを示す Claude-Agent トークンが加わった形です。示されている例は次のとおりです。
Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko; compatible; Claude-Agent/1.0) Chrome/154.0.0.0 Safari/537.36文字列の他の部分は変わることがあります。ChromeのバージョンやOSの表記で完全一致させると、次の更新で外れます。照合は Claude-Agent というトークンの部分一致で行います。
IPアドレスで裏を取る
通信元のIPは、https://claude.com/.well-known/sail に公開されています。一覧の中の Claude-Agent と書かれた欄が対象です。
アドレスは変わることがあります。ルールに直書きせず、ファイルを定期的に取得して更新する運用が前提です。手で貼り付けた値は、いずれ古くなります。
User-Agentだけで判断してはいけません。同じヘッダーは誰でも送れるので、一覧にあるIPから来たことを確かめて初めて、正規の通信と言えます。
リクエストの真偽を判断する流れ
- 1
User-Agentを見る
Claude-Agentのトークンが含まれるかを部分一致で確かめます。含まれなければ、この記事の対象外です。 - 2
送信元IPを見る
公開されている一覧の
Claude-Agent欄にあるアドレスかを確かめます。 - 3
結果で扱いを分ける
両方に当てはまれば、Claudeが運用するブラウザからの通信です。User-Agentだけが一致してIPが一覧にないなら、名乗りだけを真似た通信です。
ログで当たりをつける
まず自分のサイトに実際に来ているかを知りたい場合は、アクセスログを検索します。次の例は、一般的なcombined形式のログを前提にした一例です。
# Claude-Agentを名乗るリクエストの送信元IPを集計
awk -F'"' '/Claude-Agent/ {split($1, a, " "); print a[1]}' \
access.log | sort | uniq -c | sort -rn出てきたIPを、公開されている一覧の Claude-Agent 欄と突き合わせます。一覧のファイル形式の詳細はヘルプセンターの記事に載っていないため、取得したファイルの中身を直接開いて確かめます。
許可と拒否は何を左右するのか
この通信を許可するか拒否するかは、ユーザーがClaudeのサービスに「あなたのサイトでのタスク」を頼めるかどうかを決めます。クローラーの許可・拒否とは性質が違います。
| 比べる点 | クローラー・フェッチャー | Claude-Agent |
|---|---|---|
| 名前 | クローラー・フェッチャーClaudeBot、Claude-User、Claude-SearchBot | Claude-AgentClaude-Agent |
| 動く場面 | クローラー・フェッチャー学習用の収集、検索品質の向上、ユーザーの質問に応じた取得 | Claude-Agentホスト型ブラウザでの、ユーザー指示のタスク実行 |
| 通信の形 | クローラー・フェッチャーロボットによる取得 | Claude-Agent実在のブラウザがエージェントに操作される |
| 拒否の影響 | クローラー・フェッチャー学習対象・検索での見え方・質問時の取得に響く | Claude-Agentユーザーがサイト上の作業を頼めなくなる |
設定は独立しています。ClaudeBotを止めていても、Claude-Agentの許可は別に決められます。逆も同じです。
具体的には、たとえば次のような場面で判断が分かれます。
Claude-Agentの扱いを考える場面
会員向けの機能を提供している
ユーザーが予約や申し込みの作業をClaudeに任せたいなら、拒否するとその道が閉じます。逆に、自動操作を想定していない画面なら、拒否しておくのも一つの選び方です。
学習利用だけを避けたい
学習への利用を避ける目的なら、ClaudeBotの設定が関わります。Claude-Agentを止める理由にはなりません。
ボット対策を入れている
IPで正規かを確かめられるので、既存のWAFやボット判定に「一覧のIPかつ
Claude-Agent」という条件を加えられます。
どの扱いが正しいかは、サイトの性質次第です。記事が示しているのは判断材料で、どちらかを勧める内容ではありません。
WAFやWebサーバーに反映するとき
User-Agentの部分一致は、Webサーバー側でも書けます。下はnginxでの一例で、まずトークンを検出するところまでです。
map $http_user_agent $is_claude_agent {
default 0;
"~*Claude-Agent" 1;
}この例は検出だけで、許可・拒否の判断そのものではありません。偽装との区別には、次のようにIPの照合を重ねます。
IPの一覧と組み合わせて偽装を弾く
取得したファイルの Claude-Agent 欄からアドレスを抜き出し、nginxのgeoが読める形のファイルに書き出します。ファイルの書式は草案のままなので、キー名を思い込みで決めず、実物を開いて確かめてから変換スクリプトを書いてください。
# /etc/nginx/claude-agent-ips.conf(生成物の例。アドレスは文書用の値)
192.0.2.0/24 1;
198.51.100.7 1;geo $from_claude_agent_ip {
default 0;
include /etc/nginx/claude-agent-ips.conf;
}
map "$is_claude_agent:$from_claude_agent_ip" $claude_agent_verdict {
default "other";
"1:1" "verified"; # トークンあり、IPも一覧と一致
"1:0" "spoofed"; # トークンだけ名乗っている
}
server {
if ($claude_agent_verdict = spoofed) {
return 403;
}
}トークンがあってIPも一致すれば通し、トークンだけで一覧にないIPなら403を返す構成です。Claude-Agentそのものを断りたいサイトなら、verified の行にも return 403; を足します。
geoファイルは手書きにせず、cronなどで定期的に作り直します。取得、変換、設定の検証、再読み込みを一続きにしておくと、一覧の更新に自然に追随します。
0 4 * * * /usr/local/bin/update-claude-agent-ips.sh && nginx -t && nginx -s reloadupdate-claude-agent-ips.sh は、一覧の取得と上のgeoファイルへの書き出しを行う自作のスクリプトです。nginx -t を挟むのは、変換に失敗した壊れたファイルを読み込ませないためです。
robots.txtでは制御できるのか
ヘルプセンターの記事が識別手段として挙げているのは、User-Agentのトークンと公開IPの一覧の2つです。robots.txtには触れていません。許可と拒否の制御は、上のようにWebサーバーやWAFの側で行うことになります。クローラー向けのrobots.txtは、これまでどおり別に管理します。
クローラーとの線引きを確かめる
Anthropicの別のヘルプ記事は、ClaudeBot・Claude-User・Claude-SearchBotの3つを、データ収集・検索・ユーザー指示での取得のためのロボットとして説明しています。その記事の冒頭には、Claudeがユーザーのタスクのために使うAnthropic運用のブラウザ(Claude Duetを含む)は Claude-Agent であり、別の記事で扱う旨の案内が置かれています。
つまり、クローラー向けの記事が「ロボット」を、今回の記事が「ブラウザ」を受け持つ分担です。robots.txtの書き方はClaudeBotをブロックするrobots.txtの書き方にまとめています。
背景 — エージェントがブラウザを使う流れ
Claudeがブラウザを操作する製品は増えています。Claude Duetは、向こうから声をかけて仕事を進めるアプリとして発表されています。製品の概要はClaude Duetとはで、送信や支払いの前に止まる承認の仕組みはClaude Duetの安全設計で扱っています。
ブラウザの置き場所で見ると、大きく2種類に分かれます。手元のPCで動くものと、Anthropicの側で動くものです。前者の例はClaude Coworkの内蔵ブラウザで、ユーザー自身の環境から通信します。今回のClaude-Agentは後者にあたり、Anthropicのインフラから届きます。
サイト側から見ると、送信元が違えば照合の方法も違います。手元のブラウザ由来の通信は、ユーザー本人のブラウザと区別しにくくなります。Anthropicの側で動くブラウザは、トークンとIP一覧で見分けられます。
一覧の仕様はまだ標準ではない
IP一覧の公開形式は、draft-kelley-webbotauth-sail-00という文書に基づきます。この文書は標準ではなく、草案のままなので形式も変わることがあります。
そのため、一覧を読むスクリプトは形式が変わると壊れることがある前提で作ります。取得や変換に失敗したら直前の一覧を使い続ける作りにしておくと、全許可や全拒否に切り替わる事故を防げます。
一覧の更新頻度や書式の変更予定は、ヘルプセンターの記事には載っていません。
まとめ
- サイト管理者: ログで
Claude-Agentを検索し、出てきたIPを公開一覧と照合すると、正規の通信かどうかが分かります - ボット対策の担当者: User-Agentの部分一致とIP一覧の自動取得を組み合わせます。完全一致や手貼りは避けます
- クローラー向けの設定をしている人: ClaudeBotなどのrobots.txt設定は、Claude-Agentの許可・拒否とは独立しています
作業をClaudeに任せるユーザーがいるサイトほど、拒否の影響は大きくなります。Claude Duetの動きはClaude Duetとはにまとめています。
参照した一次ソース
この記事の記述は、次の一次ソースと照合しています。更新時に参照先が変わった場合は一覧も更新します。