用語集

robots.txtとは何か?

robots.txt は、ウェブサイトのルート(例: example.com/robots.txt)に置かれたプレーンテキストファイルで、Robots Exclusion Protocol に従い、サイトオーナーがウェブクローラーにアクセスしてほしい URL としてほしくない URL を伝えます。

ロボット排除プロトコル、robots.txtが実際に強制すること(および強制しないこと)、およびスクレイパーが法的・運用上の観点からrobots.txtをどのように扱うべきかを理解する。

解説

robots.txt は 1994 年にさかのぼる慣例です。ドメインのルートに置かれたプレーンテキストファイルで、どのユーザーエージェント(クローラー)がどの URL パスへのアクセスを許可または拒否されるかを記載します。検索エンジン(Google、Bing)および行儀の良いクローラーはこれを遵守します。このファイルは公開されており、任意のサイトの robots.txt を直接取得して(`curl https://example.com/robots.txt`)、サイトオーナーがクローラーに何をしてほしいかを読むことができます。

Robots Exclusion Protocol は純粋に勧告的なものです。ウェブサーバーは robots.txt のディレクティブを強制しません。単に公開するだけです。不正なクローラーは robots.txt を無視でき、サイトはリクエストされた URL を通常どおり提供します。強制力は、検索エンジンのポリシー(Googlebot は robots.txt で拒否されたページをインデックスしない)と、商業的なスクレイパーがオーナーの明示的な意図を無視した場合の法的・評判上の影響から生まれます。

商業スクレイピングにおいて、robots.txt は 2 つの点で重要です。法的には、明示的な `Disallow` ディレクティブを無視することは、CFAA やコンピュータ不正使用に関する訴訟(特に米国での hiQ v LinkedIn 判決以降)において悪意あるアクセスの証拠として引用される可能性があります。運用面では、特定のパスを拒否しているサイトは、そのパスに対してより強力なアンチボット保護を施していることが多く、`Disallow: /search` は通常、`/search` のスクレイピングがサイトの他の部分よりも強固な防御を引き起こすことを意味します。

仕組み

クローラーがドメインで開始すると、まず `/robots.txt` を取得してディレクティブを解析します。このファイルはシンプルな文法を使用しています: `User-agent: ` ブロックは、以下のルールが適用されるクローラーを指定します(`*` はすべてを意味します)、`Disallow: ` は特定のURL プレフィックスをブロックします、`Allow: ` は禁止されたプレフィックス内のパスを再許可します、オプションの `Crawl-delay: ` と `Sitemap: ` ディレクティブはメタデータを提供します。

クローラーは取得を検討する各URL をルールと照合し、禁止されたパスをスキップします。一部のクローラーはrobots.txtを24時間キャッシュしますが、成熟した本番クローラーは変更を検出するためにより頻繁に更新します。

拒否

プレフィックスに一致するURLへのアクセスをクローラーに禁止します。`Disallow: /admin/`は/admin/以下のすべてを除外します。最も一般的なディレクティブです。

許可

許可されていないプレフィックス内の特定のパスを再許可します。`Disallow: /private/` + `Allow: /private/public-data/` は /private/ を除外しますが、/private/public-data/ は許可します。

User-agent

特定のクローラーをターゲットにします。`User-agent: Googlebot`は以下のルールをGoogleのクローラーにのみ適用します。`User-agent: *`はフォールバックとしてすべてのクローラーに適用されます。

Crawl-delay

リクエスト間の最小遅延(秒)を提案します。BingおよびYandexでは考慮されますが、Googleは無視します(代わりにSearch Consoleのクロールレート設定を使用してください)。

サイトマップ

サイトの XML サイトマップを指定します。`Sitemap: https://example.com/sitemap.xml`。クローラーがサイトのインデックス登録を希望するすべての URL を発見するのに役立ちます。

主な使用事例

検索エンジンにインデックスしないページを指示する
高コストなエンドポイントへのクローラーの集中アクセスを防止
クローラーを正規のサイトマップに向ける
管理者 / プライベートパスを公開インデックスから除外する
協調クローラー向けのcrawl-delayの指定
サイト全体のクローラーポリシーの文書化
FAQ

よくある質問

よくある質問: robots.txt.

それだけでは判断できません。robots.txtは勧告的なものであり、サーバーが強制するものではなく、協力しないクローラーは無視できます。ただし、特に米国のCFAAに基づく裁判において、明示的なDisallowディレクティブがサイト所有者の意図を示す証拠として引用されており、コンピュータ不正利用事案でスクレイパー側の主張を弱めることがあります。コンプライアントなスクレイピングの法的な最低基準として扱ってください。

はい、ほとんどの場合。robots.txtを尊重することは、紛争が生じた場合に善意のアクセスを示す最も簡単な方法であり、禁止されているパスには通常より強力なアンチボット保護があります。一部の商業的スクレイピングでは、正当な公開データの利用(検索エンジンランキング分析、競合情報収集)のためにrobots.txtを無視することがあります。これは弁護士と相談の上で判断すべき法的な判断です。

常にルートに配置してください: `https://example.com/robots.txt`。robots.txtはホストごとに1つだけ存在します。有効であるためには、200 OKレスポンスと`Content-Type: text/plain`で提供される必要があります。

すべての協調クローラーを停止させるには `User-agent: *` + `Disallow: /` を使用できます。ただし、ルールを無視する悪意あるクローラーはこれに従いません。クローラーを実際にブロックするには、サーバーサイドでの対策(レート制限、Cloudflare などのアンチボットツール、IP 許可リスト)が必要です。robots.txt は丁重なお願いであり、セキュリティの仕組みではありません。

クロールについては、はい——Googlebotは Disallow されたページをフェッチしません。インデックスについては、おおむねそうですが、常にそうとは限りません。Disallow されたページが他の多くのページからリンクされている場合、Googleはリンクシグナルのみに基づいてそのページを検索結果に含め、クロールできない旨の通知を表示することがあります。インデックスを完全に防止するには、robots.txt ではなく `noindex` メタタグを使用してください。

robots.txt は URL パターンレベルで機能し、クロールセッションごとに 1 回取得されます。メタ robots タグ(`<meta name='robots' content='noindex'>`)はページごとのもので、HTML の head に埋め込まれます。robots.txt はクロールを防ぎ、メタ robots はクロールされたページのインデックス登録を防ぎます。両者は異なる目的を持ち、多くの場合併用されます。