# AIクローラー実態調査 v1 baseline 実測報告 実行日: 2026-07-29 / 対象: Majestic Million の .jp ドメイン全件 18,976件 生成物: `data/parsed_2026-07-29.csv`(18,976行), `data/meta_2026-07-29.json`, `data/fetch_results_2026-07-29.json`, `data/fetch_timing_2026-07-29.json`, `data/raw/2026-07-29/`(622.8 MB) --- ## 1. データソースと帰属表示 > **Majestic Million** (https://majestic.com/reports/majestic-million) > licensed under **CC BY 3.0** CC BY 3.0 は表示義務があるため、本調査の結果を再配布・引用する場合は上記の帰属表示を省略しないこと。 | 項目 | 値 | |---|---| | ソース名 | Majestic Million | | ソースURL | https://majestic.com/reports/majestic-million | | ライセンス | CC BY 3.0 | | ダウンロードURL | https://downloads.majestic.com/majestic_million.csv | | スナップショット | `data/source/majestic_million_2026-07-29.csv` | | SHA256 | `781ecf0d094f1431c5ac8c53d58a8dd1a51a3dc850b407dd70d2c2a696e2c507` | | Last-Modified | Wed, 29 Jul 2026 05:00:25 GMT | | ETag | `"4cb2745-657b8d558bfe7-gzip"` | | 取得時刻 (UTC) | 2026-07-29T06:06:34Z | | 取得時刻 (JST) | 2026-07-29T15:06:34+09:00 | | 元CSV総件数 | 1,000,000 行(不正行 0) | | 抽出条件 | **ドメイン末尾が `.jp` の行を全件抽出。正規化・除外は一切行わない** | | 抽出件数(コホート) | **18,976 件** | | 最下位ランク | 999,906 | コホートは `data/cohort.csv` に固定した。月次追跡ではこのファイルを再生成しない。 --- ## 2. 調査手法 | 項目 | 値 | |---|---| | UA文字列 | `GRLabSurveyBot/0.1 (+https://lab.guest-reply.jp/bot)` | | 身元ページ | https://lab.guest-reply.jp/bot/ (公開済み。起動時に200を検証するゲートあり) | | 同一ホストへのリクエスト間隔 | 1.0 秒(1req/s を超えない) | | ホスト間並列度 | 30 | | タイムアウト | 10.0 秒 | | リトライ | 1(例外時のみ。HTTPステータス応答があれば再試行しない) | | 取得対象 | `/robots.txt`, `/llms.txt`, `/ads.txt`, トップページへの `HEAD` 1件 | | 1ドメインあたりのリクエスト数 | 通常 最大4。apex がDNS/TLS/connect系エラーのとき www へ再試行するため最大5。robots_differs_www 標本200件も最大5 | | robots.txt の尊重 | `llms.txt` / `ads.txt` / トップHEAD は robots.txt の判定に従いスキップ | | 取得日時 (UTC) | 2026-07-29 06:42 〜 08:28 | | 取得日時 (JST) | 2026-07-29 15:42 〜 17:28 | | 実測所要時間 | **6,378 秒 = 1.77 時間**(平均 2.98 ドメイン/秒) | | robots.txt パーサ | protego | ### www の扱い(v0 からの変更) - 本体の取得は apex のみ。**apex が DNS/TLS/connect 系エラーの場合のみ www で再試行**する - **apex 成功時に www を追加取得しない**(健全なサイトへのリクエストを倍にしないため) - `robots_differs_www` の測定は、コホートからランダム抽出した **200件の標本のみ**で行う - 乱数シード: **20260729**(固定) - 抽出方法: `random.Random(20260729).sample(sorted(all_domains), 200)` - 抽出母集団: コホート全体 18,976 件をドメイン名昇順に並べたもの - **抽出された200件の全リストは `data/fetch_timing_2026-07-29.json` の `www_sample.domains` に記録**(再現性のため) --- ## 3. 限界(必ず参照すること) 1. **Majestic は被リンク数ベースのランキングであり、トラフィックベースではない。** メディア・官公庁・大学など被リンクの多いサイトに偏り、高トラフィックだが被リンクの少ない サイトは過小評価される。本調査の数値を「日本のウェブ全体の実態」と読み替えることはできない。 2. **コホートに14件のサブドメイン形式を含む。正規化していない。** `b.hatena.ne.jp`, `blog.livedoor.jp`, `news.yahoo.co.jp`, `d.hatena.ne.jp`, `blogs.yahoo.co.jp`, `hb.afl.rakuten.co.jp`, `livedoor.blogimg.jp`, `cies.xrea.jp`, `m.adlf.jp`, `al.dmm.co.jp`, `al.fanza.co.jp`, `www.city.motosu.lg.jp`, `video.dmm.co.jp`, `service.shiftinc.jp` (18,976件中14件 = 0.07%) 3. **protego は User-agent を前方一致で照合する。** `User-agent: Applebot` しか書いていない robots.txt が `Applebot-Extended` にも適用される (逆方向は適用されない)。該当分は `prefix_named` として分離し、含む数字と含まない数字を両方示す。 実際に影響が出たのは **Applebot-Extended のみ(56件)**。他UAは0〜1件。 4. **`robots_differs_www` は全件ではなく200件のサンプル調査である。** さらに、標本200件のうち apex/www 双方を比較できたのは **90件**(残り110件は apex が404/エラー等で 比較が成立しない)。分母は200でも18,976でもなく **90** である。 5. HTTPステータス200だけでファイル保有を数えると大幅に過大になる。 トップページのHTMLを200で返す「ソフト404」が `llms.txt` で1,989件、`ads.txt` で1,962件、 `robots.txt` で1,077件ある。本報告の保有数はすべて内容検証後の値。 6. 到達判定は apex(+www再試行)基準。CDN配下でapexが実サイトでないケースを取りこぼしている可能性がある。 --- ## 4. 数字の提示ルール - **すべての率に分母を明記する。** - 見出しに使う数字は **rate_among_reachable**(= robots.txt が解析できた 9,919件 + robots.txt が404だった 4,124件 = **14,043件** を分母とする)。robots.txt が404のサイトは「クロールを許可している」という 情報を持つため、分母に含めないと拒否率が過大になる。 - `prefix_named` を含む数字と含まない数字を両方出す。 ### 分母の定義 | 記号 | 定義 | 件数 | |---|---|---:| | `n` | コホート全件 | 18,976 | | `reachable` | apex または www に到達できた(HEADのみ成功も含む) | 15,962 | | `denom_robots` | robots.txt を取得し内容として解析できた | 9,919 | | `denom_reachable` | `denom_robots` + robots.txt が404(=未設置・許可) | **14,043** | --- ## 5. 見出しに使える数字 ### ① 主要AIクローラーを robots.txt でブロックしているサイトは 3.9%(549 / 14,043) GPTBot を disallow しているのは **549件 / 14,043件(reachable分母)= 3.9%**。 robots.txt 設置分母(9,919件)で見ると **5.5%**。 ### ② 対照の検索エンジンとは約9倍の差(GPTBot 3.9% vs Googlebot 0.4%) | | ブロック数 | 分母 | 率 | |---|---:|---:|---:| | GPTBot | 549 | 14,043 | **3.9%** | | Googlebot(対照) | 54 | 14,043 | **0.4%** | | Bingbot(対照) | 85 | 14,043 | **0.6%** | AI系クローラーの disallow の大半は `User-agent:` での**名指し**指定由来。 `User-agent: *` 由来(サイト全体closed)は全UA共通で88〜97件にとどまる。 ### ③ llms.txt の保有率は 5.5%(882 / 15,962) 到達可能な15,962件のうち **882件 = 5.5%**。 ただし **HTTP 200 だけで数えると2,893件(18.1%)** になり、うち **1,989件がHTMLのソフト404**、 21件が形式不明。ステータスコードでの集計は不可。 ### ④ ads.txt の保有率は 8.5%(1,352 / 15,962) 到達可能分母で **1,352件 = 8.5%**(ソフト404 1,962件を除外後)。 ### ⑤ 到達失敗率は 15.9%(3,014 / 18,976) www フォールバックにより **4,508件が www 経由で取得できた**。これがなければ失敗率は大幅に悪化していた。 --- ## 6. UA別 disallow 集計 分母: `denom_reachable` = 14,043 / `denom_robots` = 9,919 | UA | disallow | among_reachable | among_robots | 名指し言及 | +prefix | `*`由来 | |---|---:|---:|---:|---:|---:|---:| | GPTBot | 549 | **3.9%** | 5.5% | 599 | 599 | 91 | | ClaudeBot | 508 | **3.6%** | 5.1% | 569 | 570 | 91 | | Amazonbot | 480 | 3.4% | 4.8% | 451 | 451 | 95 | | Bytespider | 476 | 3.4% | 4.8% | 424 | 424 | 97 | | CCBot | 467 | 3.3% | 4.7% | 445 | 445 | 91 | | meta-externalagent | 458 | 3.3% | 4.6% | 427 | 427 | 92 | | Applebot-Extended | 429 | 3.1% | 4.3% | 325 | 422 | 88 | | Google-Extended | 401 | 2.9% | 4.0% | 400 | 400 | 92 | | ChatGPT-User | 248 | 1.8% | 2.5% | 238 | 242 | 92 | | OAI-SearchBot | 239 | 1.7% | 2.4% | 225 | 225 | 94 | | PerplexityBot | 225 | 1.6% | 2.3% | 242 | 243 | 93 | | Claude-SearchBot | 209 | 1.5% | 2.1% | 156 | 158 | 94 | | Applebot | 165 | 1.2% | 1.7% | 130 | 130 | 90 | | Claude-User | 157 | 1.1% | 1.6% | 104 | 105 | 94 | | Perplexity-User | 152 | 1.1% | 1.5% | 94 | 95 | 95 | | **Bingbot(対照)** | 85 | 0.6% | 0.9% | 550 | 550 | 57 | | **Googlebot(対照)** | 54 | 0.4% | 0.5% | 385 | 385 | 51 | ### prefix_named を含む数字 / 含まない数字 前方一致(`User-agent: Applebot` が `Applebot-Extended` に適用される等)由来の disallow を 分離した結果。分母はいずれも 14,043。 | UA | prefix由来 | **含む**率 | **除いた**率 | |---|---:|---:|---:| | Applebot-Extended | 56 | **3.1%**(429件) | **2.7%**(373件) | | ChatGPT-User | 1 | 1.8%(248件) | 1.8%(247件) | | 上記以外の全UA | 0 | 変化なし | 変化なし | **前方一致問題が実質的に影響するのは Applebot-Extended のみ**。他UAの数字は prefix を含めても除いても変わらない。 --- ## 7. robots.txt / 到達状況の内訳 | 分類 | 件数 | 対 n=18,976 | |---|---:|---:| | robots.txt 200 かつ解析可能 (`ok`) | 9,919 | 52.3% | | robots.txt 404(未設置=許可) | 4,124 | 21.7% | | 取得エラー | 3,029 | 16.0% | | HTMLソフト404 | 1,077 | 5.7% | | 403 | 503 | 2.7% | | 200だが本文なし | 222 | 1.2% | | 5xx / その他ステータス | 102 | 0.5% | ### エラー内訳(robots.txt 取得時) | 種別 | 件数 | |---|---:| | DNS解決失敗 | 1,883 | | TLSエラー | 708 | | connect timeout | 260 | | connect error | 129 | | read timeout | 36 | | too many redirects | 11 | **protego のパース例外・can_fetch 例外は 0件**(解析対象 9,919件)。 ### robots_differs_www(標本調査) | 項目 | 値 | |---|---:| | 標本サイズ | 200 | | 乱数シード | 20260729 | | うち apex/www を比較できた件数(**分母**) | **90** | | apex と www で robots.txt の内容が異なった件数 | **2** | | 率 | **2.2%(2 / 90)** | 標本200件の全ドメインリストは `data/fetch_timing_2026-07-29.json` の `www_sample.domains` にある。 --- ## 8. クロス集計(数字のみ) 分母はいずれも `denom_reachable` の部分集合。**以下は観測された数字であり、因果や解釈は含めない。** ### ads.txt 保有 × ブロック | | | blocked | not blocked | n | block率 | |---|---|---:|---:|---:|---:| | GPTBot | ads.txt あり | 159 | 1,101 | 1,260 | 12.6% | | GPTBot | ads.txt なし | 390 | 12,393 | 12,783 | 3.0% | | ClaudeBot | ads.txt あり | 147 | 1,113 | 1,260 | 11.7% | | ClaudeBot | ads.txt なし | 361 | 12,422 | 12,783 | 2.8% | ### Cloudflare 配下 × ブロック | | | blocked | not blocked | n | block率 | |---|---|---:|---:|---:|---:| | GPTBot | Cloudflare 配下 | 163 | 877 | 1,040 | 15.7% | | GPTBot | 非Cloudflare | 386 | 12,617 | 13,003 | 3.0% | | ClaudeBot | Cloudflare 配下 | 153 | 887 | 1,040 | 14.7% | | ClaudeBot | 非Cloudflare | 355 | 12,648 | 13,003 | 2.7% | いずれも「該当群のブロック率が非該当群より高い」方向。解釈は本報告では行わない。 --- ## 9. 実行実績 | 項目 | 値 | |---|---| | 対象 | 18,976 ドメイン | | 所要時間 | **6,378 秒 = 1.77 時間** | | 平均スループット | 2.98 ドメイン/秒(序盤 5.49/s → 終盤 3.02/s) | | 到達率 | **84.1%(15,962 / 18,976)** | | 到達失敗率 | **15.9%(3,014 / 18,976)** | | 終了コード | 0(完走) | | raw データ量 | 622.8 MB | 序盤に rate が高く終盤に落ちるのは、下位ランクほど DNS/TLS 失敗が増えタイムアウト待ちが 滞留するため。v0(500件・並列10)の 8.4分から線形換算した約5.6時間に対し、 並列30 + www フォールバック方式変更で **1.77時間**に収まった。 --- ## 10. ランク帯別の層化集計 `data/parsed_2026-07-29.csv` からの再集計。再取得はしていない。 **以下はすべて観測された数字であり、因果や解釈は含めない。** ### 層化の定義 コホート 18,976 件を Majestic ランクの昇順に並べ、**その並び順の位置**で4帯に区切った。 帯の定義に「Majestic のグローバルランクそのもの」を使うと、.jp は上位に薄いため 帯の分母が成立しない。参考値は下表のとおりで、この切り方は採用していない。 | グローバルランク帯 | コホート件数 | reachable分母 | |---|---:|---:| | 〜1,000 | 9 | 8 | | 1,001〜5,000 | 82 | 51 | | 5,001〜10,000 | 101 | 66 | | 10,001〜 | 18,784 | 13,918 | 採用した「コホート内順位」による帯は次のとおり。コホート内順位1,000位は グローバルランク 48,444、5,000位は 260,858、10,000位は 500,340 に相当する。 | 帯(コホート内順位) | コホート件数 | **分母** `reachable` | 分母 `robots` | |---|---:|---:|---:| | 1〜1,000 | 1,000 | **675** | 464 | | 1,001〜5,000 | 4,000 | **2,897** | 2,002 | | 5,001〜10,000 | 5,000 | **3,700** | 2,623 | | 10,001〜18,976 | 8,976 | **6,771** | 4,830 | | 合計 | 18,976 | **14,043** | 9,919 | ### 帯別 disallow 率(分母 = 各帯の `rate_among_reachable`) セルは `率 (件数)`。分母は列見出しの値。 | UA | 1〜1,000
(分母 675) | 1,001〜5,000
(分母 2,897) | 5,001〜10,000
(分母 3,700) | 10,001〜18,976
(分母 6,771) | 全体
(分母 14,043) | |---|---:|---:|---:|---:|---:| | GPTBot | **9.0%** (61) | 5.4% (155) | 3.5% (130) | 3.0% (203) | 3.9% (549) | | ClaudeBot | **7.9%** (53) | 4.9% (142) | 3.4% (126) | 2.8% (187) | 3.6% (508) | | Bytespider | 7.4% (50) | 4.3% (126) | 3.2% (117) | 2.7% (183) | 3.4% (476) | | CCBot | 7.4% (50) | 4.4% (128) | 3.1% (113) | 2.6% (176) | 3.3% (467) | | meta-externalagent | 7.3% (49) | 4.3% (124) | 3.0% (111) | 2.6% (174) | 3.3% (458) | | Google-Extended | 6.8% (46) | 4.1% (119) | 2.5% (91) | 2.1% (145) | 2.9% (401) | | **Bingbot(対照)** | 0.4% (3) | 0.8% (22) | 0.6% (24) | 0.5% (36) | 0.6% (85) | | **Googlebot(対照)** | 0.1% (1) | 0.6% (18) | 0.2% (9) | 0.4% (26) | 0.4% (54) | 各UAの帯別件数の合計は §6 の全体件数と一致する(例: GPTBot 61+155+130+203 = 549)。 ### v0 と同条件(`rate_among_robots`)での帯別 v0 の GPTBot 16.7% は **robots.txt 解析可能 216件を分母**とした値であるため、 比較する場合は同じ分母系統を使う。 | 帯(コホート内順位) | 分母 `robots` | GPTBot | ClaudeBot | |---|---:|---:|---:| | 1〜1,000 | 464 | **13.1%** (61) | 11.4% (53) | | 1,001〜5,000 | 2,002 | 7.7% (155) | 7.1% (142) | | 5,001〜10,000 | 2,623 | 5.0% (130) | 4.8% (126) | | 10,001〜18,976 | 4,830 | 4.2% (203) | 3.9% (187) | | 合計 | 9,919 | 5.5% (549) | 5.1% (508) | コホート上位500件に限定した場合の GPTBot: | 集計 | 件数 / 分母 | 率 | |---|---:|---:| | v1 コホート上位500(`among_robots`) | 34 / 221 | **15.4%** | | v1 コホート上位500(`among_reachable`) | 34 / 311 | 10.9% | | v0 Tranco .jp 上位500(`among_robots`、`REPORT.md` §判定結果) | 36 / 216 | **16.7%** | | v1 全件(`among_robots`) | 549 / 9,919 | 5.5% | --- ## 11. Cloudflare 配下 × ads.txt 保有 × 未ブロック の件数 分母系統はすべて `denom_reachable` = 14,043 の部分集合。 `ads.txt` 保有はソフト404除外後の値。「未ブロック」は当該UAの `verdict` が `disallowed` **以外**(= `allowed` または `no_robots_404`)であること。 ### 段階別の件数 | 条件 | 件数 | |---|---:| | `denom_reachable` | 14,043 | | Cloudflare 配下 | 1,040 | | `ads.txt` 保有 | 1,260 | | Cloudflare 配下 **かつ** `ads.txt` 保有 | **154** | | ↑ かつ GPTBot 未ブロック | 115 | | ↑ かつ ClaudeBot 未ブロック | 118 | | ↑ かつ **GPTBot・ClaudeBot とも未ブロック** | **113** | ### 3条件を満たす113件の比率(分母別) | 分母 | 件数 / 分母 | 率 | |---|---:|---:| | Cloudflare 配下全体 | 113 / 1,040 | **10.9%** | | `ads.txt` 保有全体 | 113 / 1,260 | **9.0%** | | Cloudflare かつ `ads.txt` 保有 | 113 / 154 | 73.4% | | `denom_reachable` 全体 | 113 / 14,043 | 0.8% | --- ## 12. `ads.txt` × Cloudflare の交絡確認 ### 2x2(分母 = `denom_reachable` 14,043) | | `ads.txt` あり | `ads.txt` なし | 計 | |---|---:|---:|---:| | Cloudflare 配下 | **154** | 886 | 1,040 | | 非Cloudflare | 1,106 | 11,897 | 13,003 | | 計 | 1,260 | 12,783 | 14,043 | 重なりの程度: | 指標 | 件数 / 分母 | 率 | |---|---:|---:| | Cloudflare 配下のうち `ads.txt` 保有 | 154 / 1,040 | 14.8% | | `ads.txt` 保有のうち Cloudflare 配下 | 154 / 1,260 | 12.2% | ### 層別 disallow 率(4セルそれぞれの分母を明記) | UA | 群 | disallow | 分母 | 率 | |---|---|---:|---:|---:| | GPTBot | Cloudflare / `ads.txt` あり | 39 | 154 | **25.3%** | | GPTBot | Cloudflare / `ads.txt` なし | 124 | 886 | 14.0% | | GPTBot | 非Cloudflare / `ads.txt` あり | 120 | 1,106 | 10.8% | | GPTBot | 非Cloudflare / `ads.txt` なし | 266 | 11,897 | 2.2% | | ClaudeBot | Cloudflare / `ads.txt` あり | 36 | 154 | **23.4%** | | ClaudeBot | Cloudflare / `ads.txt` なし | 117 | 886 | 13.2% | | ClaudeBot | 非Cloudflare / `ads.txt` あり | 111 | 1,106 | 10.0% | | ClaudeBot | 非Cloudflare / `ads.txt` なし | 244 | 11,897 | 2.1% | | Google-Extended | Cloudflare / `ads.txt` あり | 31 | 154 | 20.1% | | Google-Extended | Cloudflare / `ads.txt` なし | 118 | 886 | 13.3% | | Google-Extended | 非Cloudflare / `ads.txt` あり | 83 | 1,106 | 7.5% | | Google-Extended | 非Cloudflare / `ads.txt` なし | 169 | 11,897 | 1.4% | | **Googlebot(対照)** | Cloudflare / `ads.txt` あり | 0 | 154 | 0.0% | | **Googlebot(対照)** | Cloudflare / `ads.txt` なし | 0 | 886 | 0.0% | | **Googlebot(対照)** | 非Cloudflare / `ads.txt` あり | 2 | 1,106 | 0.2% | | **Googlebot(対照)** | 非Cloudflare / `ads.txt` なし | 52 | 11,897 | 0.4% | ### 片方を固定したときの対比(再掲・分母付き) | UA | 固定した条件 | `ads.txt` あり | `ads.txt` なし | |---|---|---:|---:| | GPTBot | Cloudflare 配下に限定 | 25.3% (39/154) | 14.0% (124/886) | | GPTBot | 非Cloudflare に限定 | 10.8% (120/1,106) | 2.2% (266/11,897) | | ClaudeBot | Cloudflare 配下に限定 | 23.4% (36/154) | 13.2% (117/886) | | ClaudeBot | 非Cloudflare に限定 | 10.0% (111/1,106) | 2.1% (244/11,897) | | UA | 固定した条件 | Cloudflare 配下 | 非Cloudflare | |---|---|---:|---:| | GPTBot | `ads.txt` あり に限定 | 25.3% (39/154) | 10.8% (120/1,106) | | GPTBot | `ads.txt` なし に限定 | 14.0% (124/886) | 2.2% (266/11,897) | | ClaudeBot | `ads.txt` あり に限定 | 23.4% (36/154) | 10.0% (111/1,106) | | ClaudeBot | `ads.txt` なし に限定 | 13.2% (117/886) | 2.1% (244/11,897) | 各セルの周辺合計は §8 の数字と一致する (GPTBot: `ads.txt` あり 39+120 = 159、Cloudflare 配下 39+124 = 163)。 --- ## 13. NS レコードによる Cloudflare 判定(U4 で追加) §8 / §11 / §12 の「Cloudflare 配下」は、ルートへの HEAD のレスポンスヘッダ (`cf-ray` があるか `server: cloudflare`)で判定している。この判定は Cloudflare をプロキシ(オレンジクラウド)で使っている場合にのみ立ち、 DNS-only(グレークラウド)で使っている場合は立たない。DNS-only の規模を 測るため、コホート全件の NS レコードを引いて別の判定を追加した。 ### 取得条件 | 項目 | 値 | |---|---| | 取得日時 | 2026-07-29 22:48:28 〜 22:49:17 JST(13:48:28 〜 13:49:17 UTC) | | 対象 | コホート全件 18,976 | | 問い合わせ | NS レコード(再帰問い合わせ)。対象サイトへの HTTP リクエストなし | | リゾルバ | 8.8.8.8 / 8.8.4.4 | | ライブラリ | dnspython 2.7.0 | | 並列数 / タイムアウト / 再試行 | 25 / 5秒 / 1回 | | 判定条件 | NS のいずれかが `*.ns.cloudflare.com` | | 出力 | `data/ns_2026-07-29.csv`、`data/ns_meta_2026-07-29.json` | `news.yahoo.co.jp` のようにゾーンの頂点でない名前は NS を持たないため、 囲みゾーンの頂点まで遡って引いている(遡り先は CSV の `zone` 列)。 遡った先が `jp` / `co.jp` 等のレジストリのゾーンだった場合 (`tokyo.jp` のような地域型ラベル)は、サイトの NS ではないので判定不能とした。 ### 解決結果(分母 = コホート全件 18,976) | 区分 | 件数 | 率 | |---|---:|---:| | 解決成功 | 17,880 | 94.2% | | 判定不能: 遡り先がレジストリのゾーン | 777 | 4.1% | | 判定不能: NXDOMAIN | 185 | 1.0% | | 判定不能: SERVFAIL | 121 | 0.6% | | 判定不能: タイムアウト | 7 | 0.0% | | 判定不能: 頂点でも NS なし | 6 | 0.0% | | **NS = Cloudflare** | **774** | **4.1%** | ### クロス集計(分母 = NS 判定が付いた 17,880) | | header=CF | header≠CF | 計 | |---|---:|---:|---:| | **NS=CF** | 618 | **156** | 774 | | **NS≠CF** | 544 | 16,562 | 17,106 | | 計 | 1,162 | 16,718 | 17,880 | `NS=CF かつ header≠CF` = 156件(17,880 の 0.87%)。この 156件には HEAD が 失敗して判定できなかったものが含まれる。分解は後述「DNS-only 層を HEAD の 成否で分解する」を参照(真の DNS-only は 124件)。 ### `denom_reachable` に限定したクロス集計 §11 / §12 と分母を揃えた場合。`denom_reachable` 14,043 のうち NS 判定が 付いたのは 14,039(判定不能 4)。 | | header=CF | header≠CF | 計 | |---|---:|---:|---:| | **NS=CF** | 554 | **114** | 668 | | **NS≠CF** | 486 | 12,885 | 13,371 | | 計 | 1,040 | 12,999 | 14,039 | header=CF の周辺合計 1,040 は §11 の「Cloudflare 配下 1,040」と一致する。 ### `NS≠CF かつ header=CF` の 544件の内訳 544件すべてで `cf-ray`(コロコード付き)が返っており、541件は `server: cloudflare` を伴う。DNS のみで内訳を取った結果。 | 区分 | 件数 | 率 | |---|---:|---:| | 取得したホスト名の A/AAAA が全て Cloudflare の公開レンジ内 | 179 | 32.9% | | 同 レンジ外 | 365 | 67.1% | 取得したホスト名の CNAME: | 区分 | 件数 | 率 | |---|---:|---:| | CNAME なし(A レコード直) | 441 | 81.1% | | CNAME が Cloudflare 系(`*.cdn.cloudflare.net` 等) | 65 | 11.9% | | CNAME が Cloudflare 以外 | 38 | 7.0% | apex と www の両方を引いた場合: | 区分 | 件数 | 率 | |---|---:|---:| | apex か www のどちらかが Cloudflare の公開レンジ内 | 266 | 48.9% | | apex も www も公開レンジ外 | 278 | 51.1% | Cloudflare の公開 IP レンジは `https://www.cloudflare.com/ips-v4` および `ips-v6` を 2026-07-29 13:52 UTC に取得したもの(`data/cfips/`)。 #### 「apex も www も公開レンジ外」278件について追加調査を行わない理由 - 544件すべてに Cloudflare 由来のレスポンスヘッダ(`cf-ray`。コロコード付き)が あり、541件は `server: cloudflare` を伴う。`cf-mitigated` や `cf-nel` を 含むものもある。これは HTTP が Cloudflare のエッジを通ったことの直接証拠。 - IP レンジ照合は間接的な指標にとどまる。公開レンジ一覧は ファイアウォール許可用に公開されているもので、Cloudflare が使う範囲を 網羅していない(例: `199.60.103.0/24` は一覧に含まれないが本調査の 278件に出現する)。278件は一覧の網羅性の問題であり、ヘッダの証拠を 覆すものではない。 - 追加で切り分けるには `fetch_v1.py` にルートへの HEAD の最終 URL (`final_url`)を記録する変更を入れ、対象サイトを取得し直す必要がある。 既に答えの出ている問いのために対象サイトへのリクエストを増やすことになる。 以上より、544件は「Cloudflare のプロキシ配下である」と扱い、内訳の 確定はここで打ち切る。 ### DNS-only 層(NS=CF かつ header≠CF)を HEAD の成否で分解する `denom_reachable` は robots.txt の取得可否で定義されており、ルートへの HEAD の 成否を問わない。したがって `header≠CF` には「HEAD が成功して Cloudflare の ヘッダが無かった」ものと「HEAD 自体が失敗して判定できなかった」ものが混在する。 前者だけが DNS-only の証拠になる。 | 区分 | コホート全件 | `denom_reachable` | |---|---:|---:| | NS=CF かつ header≠CF(分解前) | 156 | 114 | | ├ HEAD 成功 = **真の DNS-only** | **124** | **103** | | └ HEAD 失敗・抑止 = 判定不能 | 32 | 11 | 分解前の内訳(`denom_reachable` 14,039 のうち): | HEAD の結果 | 件数 | |---|---:| | HEAD 成功 200 | 98 | | HEAD 成功 403 | 2 | | HEAD 成功 404 | 2 | | HEAD 成功 307 | 1 | | robots.txt により HEAD 抑止 | 8 | | HEAD 失敗: read_timeout | 2 | | HEAD 失敗: too_many_redirects | 1 | ### 真の DNS-only 層の段階別件数 分母は `denom_reachable` の部分集合。§11 と同じ条件で数えたもの。 | 条件 | 真の DNS-only | (判定不能分) | |---|---:|---:| | 該当層 | **103** | 11 | | ↑ かつ `ads.txt` 保有 | 21 | 1 | | ↑ かつ GPTBot 未ブロック | 19 | 1 | | ↑ かつ ClaudeBot 未ブロック | 19 | 1 | | ↑ かつ **GPTBot・ClaudeBot とも未ブロック** | **18** | 1 | ### §11 の 113件との関係 | 判定 | 3条件を満たす件数 | |---|---:| | header=CF(§11 の 113件) | 113 | | 真の DNS-only(HEAD 成功・Cloudflare ヘッダなし) | 18 | | 合算 | 131 | | (判定不能層に含まれる該当分) | 1 | Cloudflare の AI Crawl Control は、ドメインが Cloudflare 経由でプロキシ されていること(DNS レコードが Proxied)を前提条件として明記している ()。 DNS-only のレコードについては、Cloudflare は HTTP/HTTPS トラフィックを 自社ネットワークに通さないと記載している ()。 2026-09-15 のデフォルト変更の適用範囲は、Cloudflare のプレスリリースに 次のとおり記載されている ()。 - 新規顧客、および既存顧客の新規サイト - 2026-09-15 までにダッシュボードで設定を変更していない既存の無料顧客 上記の適用範囲について、プロキシ経由と DNS-only を区別する記述は Cloudflare のドキュメント・ブログ・プレスリリースのいずれにも **確認できなかった**。 --- ## 14. 手法上の発見: Cloudflare のプロキシ利用は NS レコードでは測れない §13 のクロス集計から、判定方法そのものについての事実が出た。 再利用できる形で独立させておく。 ### 数字 分母 = NS 判定が付いた 17,880。 | | 件数 | プロキシ配下(header=CF)1,162 に占める割合 | |---|---:|---:| | header=CF **かつ** NS=CF | 618 | 53.2% | | header=CF **かつ** NS≠CF | **544** | **46.8%** | **Cloudflare のプロキシ配下 1,162件のうち 544件(46.8%)は、Cloudflare の ネームサーバー(`*.ns.cloudflare.com`)を使っていない。** NS だけで Cloudflare 利用を判定した場合の到達範囲: | 判定方法 | 検出できる件数 | プロキシ配下 1,162 に対する取りこぼし | |---|---:|---:| | NS = `*.ns.cloudflare.com` | 618 | 544件(46.8%) | | レスポンスヘッダ(`cf-ray` / `server: cloudflare`) | 1,162 | 0 | ### 根拠 544件が Cloudflare を通っていることの根拠は §13 のとおり (全件に `cf-ray`、541件に `server: cloudflare`)。NS が Cloudflare でない まま Cloudflare を通す構成として、DNS のみで次を確認した。 | 構成 | 件数 | |---|---:| | 取得したホスト名の CNAME が `*.cdn.cloudflare.net` 等(CNAME setup / 部分ゾーン) | 65 | | 取得したホスト名の A/AAAA が Cloudflare の公開レンジ内 | 179 | | apex か www のどちらかが Cloudflare の公開レンジ内 | 266 | ### 逆方向 逆に、NS=CF でもプロキシを通っていない(DNS-only)ものが コホート全件で 124件(真の DNS-only)ある。NS=CF 774件のうち 16.0%。 | | 件数 | NS=CF 774 に占める割合 | |---|---:|---:| | NS=CF かつ header=CF | 618 | 79.8% | | NS=CF かつ header≠CF・HEAD 成功(真の DNS-only) | 124 | 16.0% | | NS=CF かつ header≠CF・HEAD 失敗(判定不能) | 32 | 4.1% | ### 帰結 NS 判定とヘッダ判定は、測っている対象が違う。 | 判定 | 測っているもの | |---|---| | NS = `*.ns.cloudflare.com` | Cloudflare の権威 DNS を使っているか | | レスポンスヘッダ | HTTP が Cloudflare のエッジを通っているか | Cloudflare の AI Crawl Control はプロキシ経由であることを前提条件と しているため(§13 の根拠URL)、その適用範囲を測る目的では ヘッダ判定が対応する。NS 判定は DNS-only 層の把握に対応する。 なお本調査の NS 判定は `*.ns.cloudflare.com` の一致で行っており、 Cloudflare のカスタムネームサーバー(別名で提供される構成)は捕捉しない。 コホート全件の NS ホスト名を走査した範囲では、`cloudflare` を含みつつ この条件に一致しないものは1件のみだった。