AIボットの名前で日本語サイトを開くと何が返るか|50ドメイン実測、robots.txtの許可とHTTP応答は別の層で決まる

robots.txtを開き、GPTBotやOAI-SearchBotが許可されていれば、AIの取込は通っている。そう判断して確認を終えていないでしょうか。2026年11月13日、日本語ユーザー向けに選んだ50ドメインのトップページへ、AIボットと検索ボットの名前を名乗ってアクセスしてみました。返ってきた応答は、robots.txtの中身とは別の場所で決まっていました。
robots.txtが「Disallow: /」としているボット名で開いた23組は、全てHTTP 200。robots.txtは許可しているのに、ブラウザには200を返すサイトがそのボット名に403を返した組は8組・4ドメイン。二つが重なった組は0です。robots.txtを読んでも、サーバーがそのボット名に何を返すかは分かりません。403の応答ヘッダには、手前にあるCDNやWAF(Webアプリケーションファイアウォール)などの層の名前(AkamaiGHost・CloudFront・HAProxy)が残っていました。
先に限界を書きます。今回は各社の公式IPではない一般回線から、User-Agent(以下UA)の文字列だけを変えて測りました。本物のGPTBotやGooglebotが遮断されているかどうかは、この方法では言えません。言えるのは「UAの文字列によって応答が分かれる」ところまでです。扱うのはAIがサイトを読みに来る入口、取込層(LLMO)の話です。日本向けサイトの運用を海外本社のチームと分け合っているブランドの担当者を、主な読者に想定しています。
KEY POINTS
| 項目 | 内容 |
|---|---|
| 測ったもの | 50ドメインのトップページ1URLに、UA 9種(ブラウザ1種、AI・検索ボット8種)で各3回、計1,350試行。2026年11月13日 10:25〜10:39(日本時間) |
| UAで応答が分かれたドメイン | 3回中2回以上一致した結果(代表値)がUAによって違ったのは、50ドメイン中11件 |
| ブラウザには200、ボット名には200以外 | ブラウザUAの代表値が200だった40ドメインのうち5件。いずれもボットUAのどれかに403 |
| robots.txtとの照合 | 11月6日に取得できたrobots.txt(31ドメイン)と照合。結果は本文の表 |
| 公式文書の処方 | Googleは「CDNとファイアウォールの設定で検証済みボットを許可する」。OpenAIは広告ランディングページ向けの案内で「robots.txt のルールだけでは不十分な場合があります」 |
robots.txtで断った組は200、許可した組に403
照合できた248組で、robots.txtの判定とHTTPの応答は一度も重なりませんでした。
照合に使ったのは、11月6日の記事で取得した31ドメインのrobots.txtです。トップページに「Disallow: /」が指定されている場合だけを「拒否」と数え、ボットUA 8種との248組を分けました。
| robots.txt | HTTPの代表値 | 組数 |
|---|---|---|
| 許可 | 200 | 194 |
| 許可 | 200以外(タイムアウト・接続切断を含む) | 31 |
| 許可 | 403(同じドメインのブラウザUAは200) | 8組・4ドメイン(上の31組の内数) |
| Disallow: / | 200 | 23 |
| Disallow: / | 200以外 | 0 |
Disallowの23組は、nikkei.com・asahi.com・www3.nhk.or.jp・yahoo.co.jp・tabelog.com・cookpad.comの6ドメインです。robots.txtで断ったボット名にも、サーバーはトップページを返していました。これは設定の不備ではありません。robots.txtはボットの側が読んで従う取り決めで、門を閉める装置ではない。Googleは自社の一般クローラーについて、自動クロールでは常にrobots.txtのルールに従うと書いています。
反対側にあるのが8組です。robots.txtはそのボット名を通し、同じサイトはブラウザに200を返している。それでも、ボット名には403が返りました。robots.txtだけを点検していれば「許可済み」で終わる組です。
403を返していたのは、robots.txtより手前の層
403の応答ヘッダには、CDNやプロキシの名前が残っていました。
global.toyotaはブラウザUAに200を返し、その応答にはCloudFrontのヘッダが付いていました。ボットUA 8種には全て403で、ヘッダは「Server: AkamaiGHost」、本文の見出しは「Access Denied」。一つのドメインの前に、応答の違う層が重なっています。
note.comで403になったのはGPTBotとClaudeBotの2種だけ。CloudFrontの「The request could not be satisfied」という画面です。OAI-SearchBot・ChatGPT-User・Claude-SearchBot・PerplexityBot・Googlebot・Bingbotには200で、robots.txtはGPTBotもClaudeBotも許可していました。OpenAIの文書は、GPTBotの拒否を「学習に使わないでほしい」という意思表示、OAI-SearchBotをChatGPTの検索機能のためのボットと分けて説明しています。
ja.wikipedia.orgは、ClaudeBot・Googlebot・Bingbotの3種に403(server: HAProxy)。本文は「Too many requests. Please contact [email protected] to discuss unblocking.」でした。同じ時間帯に他の6種は200で、UAの文字列で分岐していると読めます。
samsung.comは、GooglebotのUAにだけ403(Akamai)。他の8種は /jp/ へリダイレクトされ、200が返りました。
5件目のwww.amorepacific.comは、どのUAでも韓国語のページ(ap-beauty.com)へリダイレクトされるため、日本語サイトの事例としては扱いません。代表値の集計にだけ残しています。
ブラウザ自体が200でなかったサイトにも、層の気配は見えます。www.meti.go.jpはブラウザUAでも3回中2回が202で、応答ヘッダは「x-amzn-waf-action: challenge」。AWS WAFのチャレンジです。ボットUA 8種には403でした。Googleは、CAPTCHAのようなチャレンジをGoogleのクローラーは通れないと書いています。
Googlebotの名前でも403が返る
403はAIボットの名前にだけ返っていたわけではありません。
| 名乗ったUA | ブラウザ200の40ドメインのうち、200以外を返したドメイン数 |
|---|---|
| ClaudeBot | 4 |
| GPTBot | 3 |
| Googlebot | 3 |
| Bingbot | 2 |
| OAI-SearchBot / ChatGPT-User / Claude-SearchBot / PerplexityBot | 各1(いずれもglobal.toyota) |
Googlebotの名前で200以外になったのは3ドメインで、GPTBotと同じ数です。目を引くのはsamsung.comの1件です。Googlebotにだけ403を返し、AIボットの名前は全て通していました。公式IP以外から「Googlebot」を名乗る接続を弾く、なりすまし対策が働いた可能性があります。Googleの検証手順の文書自体、Googleを名乗るスパマーなどのアクセスを見分けたい場合のための文書として書かれています。
この1件が、今回の数字の読み方を決める。私たちの403は「ボットを名乗った一般回線の接続」への応答です。サイトが公式IPで本物を見分けているなら、403は正しく働いた結果かもしれない。UAの文字列だけで判定しているなら、本物にも同じ403が返っているかもしれない。外から測っただけでは、どちらとも決められません。決められる場所はサイトの中、CDNの設定画面とアクセスログです。
GoogleとOpenAIの文書は「robots.txtの外」を指している
両社とも、取込の確認をrobots.txtだけで終わらせていません。
Googleは11月11日のSearch Central Blogで、CDNへの移行直後にクロールが増え、慌てて一括のボット保護を有効にする場面を取り上げました。検証済みのクローラーを除外しないまま放置すると、クローラーは後退し、ページやショッピングの掲載は検索から落ち始めるといいます。処方は次の一文です。
"If you need to block bots, allow verified bots in your CDN and firewall settings."
Google Search Central Blog「Moving to a CDN without overwhelming your origin (or blocking Googlebot)」
主要なCDNやWAFの多くには、既知・検証済みのボットを許可する切り替えやマネージドルールがある、とも書かれています。まとめの節では、一括のWAFやCAPTCHAのルールで「403 walls」やチャレンジページを立てるな、とまで言っています。この記事が扱うのはGoogleのクローラーで、AIクローラーには触れていません。同じ記事が勧める429・503は、キャッシュが温まるまでオリジンの負荷を逃がす一時的なブレーキです。期間は "a few hours, or 1-2 days at most"。ボットを締め出すための手段としては書かれていません。
OpenAIのボット文書は、OAI-SearchBotを「ChatGPTの検索機能で検索結果にサイトを表示するために使う」と説明し、表示されるためにrobots.txtでの許可に加えて "allowing requests from our published IP ranges" を勧めています。OAI-SearchBotをオプトアウトしたサイトはChatGPTの検索回答に表示されない。ナビゲーション用のリンクとしては表示され得る、という但し書きが付きます。IP範囲はsearchbot.json・gptbot.json・chatgpt-user.json・adsbot.jsonとして公開されています。
OpenAIのヘルプ記事20001243は、日本語版もある文書です。ただし題名は「OpenAI のウェブクローラーを許可するための広告主向けガイダンス」。広告のランディングページをOAI-AdsBotが検証できるようにするための案内で、OAI-SearchBotの許可は「おすすめ」として添えられています。検索全般の規則ではないと断った上で、次の二文は今回の測定そのものを言い当てていました。
「robots.txt のルールだけでは不十分な場合があります。ファイアウォール、コンテンツ配信ネットワーク(CDN)、またはボット保護サービスによって、別個の制限が適用されることがあります。」
「ブラウザーでページが開くからといって、クローラーが同じコンテンツを受け取るとは限りません。」
OpenAI ヘルプセンター「OpenAI のウェブクローラーを許可するための広告主向けガイダンス」
同じ記事の表は、403が返ったら「リクエストを拒否したホストのセキュリティルールを確認してください」と案内しています。
CDNの側も、ボットを用途で分ける設定を増やしています。Cloudflareは9月15日、BlockとBlock on pages with adsを、検索と学習を兼ねるクローラー(Googlebot・Bingbot・Applebot)にも適用すると発表しました。Blockを選べばこの3つがサイトに届かなくなり、検索も含めて止まる、と自社のブログで明記しています。11月4日には設定名を「AI Crawler and Agent access policies」に改め、対応するパーソナルエージェントごとに Allow (do not block)・Block on pages with ads・Block を選べるようにしました。robots.txtの手前で決まることは、設定画面の上で細かくなり続けています。
robots.txtは掲示、CDNとWAFは門番
問うべきは「robots.txtに何と書いたか」ではなく、「ボットの名前で来た接続に、誰が何を返しているか」です。
robots.txtは、来訪したボットが読む掲示です。CDNやWAFは、オリジンに届く前に応答を返す門番。今回の248組で二つが一度も重ならなかったのは、両者が別々に動いているからでしょう。掲示を書き直しても、門番の判断は変わりません。
二つの層は、持ち主が別のこともあります。robots.txtはWebやSEOの担当、CDNとWAFはセキュリティやインフラの担当。海外本社がグローバルのCDN契約をまとめて管理している場合、日本の担当者からはルールが見えないこともあります。OpenAIの広告主向け案内も、サイトを他の人が管理しているならチェックリストを「ウェブ開発者、ホスティングプロバイダー、またはセキュリティチームと共有してください」と書いていました。取込の確認は、一つのチームでは閉じません。
日本の担当者が今週確かめること
- 自社のトップと主要ページを、ボットの名前で開いてみる:
curl -s -o /dev/null -w "%{http_code}\n" -A "(各社公式のUA文字列)" https://(自社ドメイン)/でステータスを見ます。ブラウザと違う数字が出たら、そこが入口です。ただし自社回線から返った403は「なりすましへの応答」かもしれず、本物のボットが止まっている証拠にはなりません。 - CDN・WAFのボット対策が、何で判定しているかを確認する:UAの文字列だけで弾くルールなら、本物のボットにも同じ応答が返ります。検証済みボットを許可する設定(公式IPや逆引きDNSで確かめる方式)があるか、有効になっているかを見ます。Cloudflareを使っているなら、AI Crawler and Agent access policiesの中のTraining(学習)ポリシーでBlockを選んでいないかも確認対象です。選ぶと、Googlebot・Bingbot・Applebotまで止まります。
- アクセスログで、公式IPから来た要求に返したステータスを数える:本物が受け取った応答は、ここでしか分かりません。Googleが示す確認手順は、アクセス元IPを逆引きし、googlebot.com・google.com・googleusercontent.comのいずれかであるかを見ること。その名前を正引きし、元のIPと一致すれば本物です。IP範囲は、GoogleがJSON(common-crawlers.jsonなど)を、OpenAIがsearchbot.jsonなどを、それぞれ公開している。その範囲からの要求に403・202・チャレンジ画面を返していないかを数えます。
- 海外本社がCDNを持っているなら、日本向けドメインのルールを本社のセキュリティ担当と一緒に開く:robots.txtを日本側で直しても、手前の層の応答は変わりません。どの層を誰が持っているかを一枚に書き出すところから始めます。
測定方法と限界
標本:10月22日・11月6日の記事と同じ50ドメイン。日本語ユーザー向けのサイトを、業種を混ぜて任意に選んだもので、一部は海外本社のグローバルホストです。日本語サイト全体の比率を示す数字ではありません。
取得方法:Pythonのurllib(HTTP/1.1、Python既定のTLS)で https://(ドメイン)/ にGETし、リダイレクトを追いました。UA以外の要求ヘッダは全UA共通(Accept-Language: ja,en;q=0.8)、タイムアウトは20秒。UA 9種×3回で計1,350試行です。代表値は3回中2回以上一致した結果とし、CDNは応答ヘッダに根拠がある場合だけ推定しました(推定できなかったドメインが22件あり、CDN別の比較はしていません)。
UA文字列:GPTBot・OAI-SearchBot・ChatGPT-User・PerplexityBotは各社公式文書の文字列。Googlebot・Bingbotは公式テンプレートのChromeのバージョン部分を130.0.0.0にしたものです。ClaudeBot・Claude-SearchBotは、Anthropicの公式文書がトークン名しか公開していないため、サーバーログの観測として報告されている文字列を使いました。公式の文字列ではありません。
除外と保留:yodobashi.com・biccamera.com・muji.comは全UA・全回でタイムアウトし、この回線からは到達できなかったため分析から外しました。nitori-net.jpはブラウザUAの200自体に17.7〜19.5秒かかっており、ボットUAのタイムアウトを遮断と区別できないので判定を保留しています。
安定性:ドメインとUAの450組のうち、3回の結果が過半数で揃わなかった組は0、3回中1回でも結果が違った組は9でした。計測は回線の中断を挟んで2回に分かれ(10:25〜10:31と10:33〜10:39)、中断をまたいだ54組は3回とも結果が一致しています。
限界:公式IPではない単一の回線から測っており、「本物のボットの遮断」と「ボットを名乗った接続の遮断」を区別できません。クライアントがPythonなので、TLSの指紋も実際のブラウザとは違います。逆向きの差がその表れかもしれません。www.jnto.go.jpはブラウザUAに403(CloudFrontの「Request blocked」)を返し、GPTBot・OAI-SearchBot・ChatGPT-User・Claude-SearchBot・PerplexityBotには200。www.homes.co.jpはブラウザ・Googlebot・Bingbot・Claude-SearchBotに202(AWS WAFのチャレンジ)を返し、他のAIボットUA 5種には200でした。Chromeを名乗るPythonの接続が、なりすましとして扱われた可能性があります。測ったのはトップページ1URLだけで、下層ページは見ていません。robots.txtは11月6日に取得したもので、今回の測定とは7日ずれています。
生データ:測定スクリプト(probe-ai-bot-ua-response.py)、集計結果(2026-11.ai-bot-ua-response-probe.json)、1,350試行それぞれの応答ヘッダと本文の先頭(最大2,048バイト)を保存しています。
参考資料
- Google Search Central Blog「Moving to a CDN without overwhelming your origin (or blocking Googlebot)」(2026年11月11日)
- Google Crawling Infrastructure「Verify requests from Google crawlers and fetchers」(2026年3月20日更新)
- Google Crawling Infrastructure「Reduce Google Crawl Rate」(2026年11月13日確認)
- OpenAI「Overview of OpenAI Crawlers」(2026年11月13日確認)
- OpenAI「OAI-SearchBot IP addresses」searchbot.json (2026年11月13日確認)
- OpenAI ヘルプセンター「OpenAI のウェブクローラーを許可するための広告主向けガイダンス」(2026年11月13日確認)
- Cloudflare Blog「Have it both ways: stay discoverable in search while disallowing AI training」(2026年9月15日)
- Cloudflare Blog「See the agents, set the terms: new visibility and control for personal agents」(2026年11月4日)
- MenuMenu「AI学習拒否の共通トークン「__usage_ai-training」|日本語ユーザー向け31サイトの実測で記載0件」
- MenuMenu「本国の「AI除外」設定は日本向けドメインに届くか|Search Console・Cloudflare・robots.txtの効く単位」

株式会社MenuMenu 代表取締役
ソフトウェアエンジニアであり、UI・UXデザイナー。2012年からシリコンバレーと韓国でプロダクトをつくってきました。SEO・MEO・AEOの専門家として、訪日観光客と日本のローカルビジネスをつなぐMenuMenuを自ら設計・開発しています。
プロフィールを見る →Next
「見つかっているか」を、数字で確かめませんか。
AIの答え、検索、地図。どこで見つかっていて、どこで見つかっていないのか。まずはサイトを点検し、現状を数字にしてから次の一手を決められます。