法律・倫理スクレイピング

【スクレイピング対策】robots.txtの確認方法を解説

robots.txtの確認方法をブラウザとcurlで解説。User-agent別の読み方、Allow/Disallowの最長一致による判定、取得エラーやリダイレクトなど落とし穴と対処まで整理します。

Ibuki Yamamoto
Ibuki Yamamoto
2026年1月15日 18分で読めます

【スクレイピング対策】robots.txtの確認方法を解説!

robots.txtは、クローラー(ボット)に対して「どのURLをクロールしてよいか/避けるべきか」を伝えるためのルールファイルです。スクレイピングの可否や、クロール時のトラブル回避を考えるなら、まずrobots.txtを正しく確認できることが重要です。本記事では、ブラウザ・コマンド・ツールでの確認手順と、読み方の要点を整理します。

この記事でわかること
  • robots.txtの基本仕様と確認の最短手順
  • Disallow/Allowの読み方と判定のコツ
  • 確認時のよくある落とし穴と対処

robots.txtとは

robots.txtは、サイトのトップ(ルート)に置かれるテキストファイルで、クローラーに対するアクセスルール(Allow/Disallowなど)を記述します。標準仕様としてはRobots Exclusion Protocol(REP)があり、ファイルは原則として 「/robots.txt」 に配置されます。

重要: REPの仕様では、ルールは「/robots.txt(小文字)」で提供される必要があり、比較は基本的にパス先頭から行われ、最も具体的(最長一致)なルールが採用されます。また「/robots.txt」自体は暗黙的に許可されます。

参考: RFC 9309: Robots Exclusion Protocol

注意: robots.txtはアクセス制御(認証)の代替ではありません。記載したパスは公開情報になり得るため、秘匿したい管理画面やファイルは、認証・IP制限など別の仕組みで守る必要があります(仕様のSecurity Considerationsでも注意喚起されています)。

参考: RFC 9309

確認方法の全体像

robots.txtの確認は、次の順で行うのが効率的です。

  1. URL直打ちで表示できるか(存在確認)
  2. HTTPステータスとリダイレクトの有無(取得確認)
  3. 内容(User-agent / Allow / Disallow / Sitemap)を読む
  4. 特定URLが許可か禁止かを判定する

なお、Googleはrobots.txtを取得して解析し、ホスト・プロトコル・ポート単位で適用範囲が決まる点などを明記しています。

参考: How Google interprets the robots.txt specification

手順1 URLで確認

まずは対象サイトのルート直下に robots.txt があるかを確認します。

ここで見るべきポイントは2つです。

  • 表示されるか(404ではないか)
  • 内容が意図したものか(CMSやプラグインの自動生成で想定外になっていないか)

注意: robots.txtは「サブディレクトリ配下」に置いても効きません。原則として /robots.txt に置かれます(仕様)。

参考: RFC 9309

手順2 curlで確認

ブラウザ表示だけだと、リダイレクトやステータスの見落としが起きがちです。スクレイピング用途では、HTTP的に「どう返ってくるか」を必ず確認しましょう。

ステータス確認

curl -I https://example.com/robots.txt

期待値は基本的に 200 OK です。3xx(リダイレクト)や4xx/5xxが出る場合は、クローラー側の扱いも変わり得ます(特に到達不能時の扱いなどは仕様に定義があります)。

本文を取得

curl -s https://example.com/robots.txt

User-Agent別に確認

サイトによってはUser-Agentで挙動が変わることがあります。最低限、あなたのクローラーのUAで取得できるか確認します。

curl -s -A "MyCrawler/1.0" https://example.com/robots.txt

重要: robots.txtのルール適用は「User-agentグループ」単位です。自分のクローラー名(User-agent)がどのグループにマッチするかを前提に読まないと、判定を誤りやすい点は押さえておきたいところです。

参考: RFC 9309

手順3 読み方の基本

robots.txtは、概ね次のような「グループ(User-agent)→ルール(Allow/Disallow)」の並びで書かれます。

User-agent: *
Disallow: /private/
Allow: /private/public-info/
Sitemap: https://example.com/sitemap.xml

見るべきディレクティブ

  • User-agent: どのクローラー向けルールか
  • Disallow: クロールしてほしくないパス
  • Allow: Disallowより優先させたい例外
  • Sitemap: サイトマップの場所(REPの必須要素ではないが広く利用)

重要: 仕様上、Allow/DisallowはURIパスに対して先頭からマッチし、最も具体的(最長一致)のルールを採用します。AllowとDisallowが同程度に一致する場合はAllowが推奨されます。

参考: RFC 9309

判定の例

例えば次のルールがある場合、/private/public-info/ は許可、それ以外の /private/ は禁止という意図になります。

User-agent: *
Disallow: /private/
Allow: /private/public-info/

手順4 可否の判定

特定URLがクロール許可かどうかは、次の観点で判断します。

  • あなたのUser-agentにマッチするグループを特定
  • 対象URLのパスに対してAllow/Disallowの一致を比較
  • 最長一致(最も具体的)を採用

チェック表

チェック項目 見る場所 判断のポイント
グループ一致 User-agent 自分のUAに最も適切な記述を探す
禁止範囲 Disallow パス先頭から一致するか
例外許可 Allow Disallowより具体的ならAllowが勝つ
robots.txt自体 /robots.txt 暗黙的に許可(取得できない場合は別問題)

確認の落とし穴

ホスト違い

robots.txtはホスト・プロトコル・ポートごとに適用されます。例えば www.example.comexample.com は別扱いになり得ます。確認対象のURLと同じホストで /robots.txt を見ているか確認してください。

参考: How Google interprets the robots.txt specification

リダイレクト

robots.txt取得がリダイレクトされていると、クローラー実装によって追従や扱いが変わります。まずは curl -I で3xxが出ていないか確認し、必要なら -L で追従して実体を見ましょう。

curl -I -L https://example.com/robots.txt

到達不能と取得不可

「404などで取得不可」と「5xxなどで到達不能」は扱いが異なり得ます。REPでは、到達不能時は原則として全面禁止を仮定する、などの挙動が定義されています。スクレイピング実装では、robots.txt取得エラー時にどう振る舞うか(停止する/リトライする/一定時間後に再判定する)を決めておくのが安全です。

注意: 「robots.txtが読めない=自由にクロールしてよい」と短絡しないでください。サイト側の一時障害やWAF設定が原因の可能性もあります。

参考: RFC 9309

文字種とエンコード

仕様ではrobots.txtはUTF-8、メディアタイプはtext/plainが求められます。文字化けや不可解な判定が出る場合は、レスポンスヘッダ(Content-Type)と実ファイルの文字コードを確認してください。

curl -I https://example.com/robots.txt | sed -n '1,20p'

スクレイピング実務の要点

robots.txt確認は「入口」にすぎません。実務では次も併せて確認するのが現実的です。

  • 利用規約・API提供の有無(規約でスクレイピングを禁じているケース)
  • アクセス頻度(レート制限)と負荷配慮
  • 機微情報や個人情報に該当しないか
  • ブロック回避目的の実装が不正アクセス等に抵触しないか(法務確認)

スクレイピングを安全化しませんか?

robots.txt確認から運用設計まで、炎上やブロックを避けるための進め方を整理できます。要件に合わせた実装・運用の相談も可能です。

お問い合わせスクレイピングに関するご相談・お見積もりはお気軽にどうぞ
相談する

まとめ

robots.txtの確認は、(1) /robots.txt を開いて存在確認し、(2) curl でHTTPステータスと本文を確認し、(3) User-agentグループとAllow/Disallowの最長一致で判定する、が基本です。特にスクレイピングでは、取得エラー時の扱い(停止・リトライ)や、規約・負荷配慮まで含めた運用設計が結果的にトラブルを減らします。

この記事を書いた人

Ibuki Yamamoto
Ibuki Yamamoto

Webスクレイピングエンジニア。10年以上の実務経験を持ち、大規模なデータ収集プロジェクトを数多く手がける。PythonとJavaScriptを得意とし、技術ブログでは実践的なスクレイピング手法を発信している。

データ収集のプロに
お任せください

年間1億件以上のデータ収集実績を持つプロフェッショナルチームが、大規模スクレイピング・アンチボット対策など、あらゆる課題を解決します。

1億+
年間データ収集件数
24/7
安定稼働
高品質
データ精度