# Webスクレイピングのためのrobots.txt: その拘束力と無力な点

robots.txtは契約ではなく、ロックでもありません。スクレイパーに求めること、強制できないこと、そしてデータを取得しながらそれを尊重する方法を紹介します。

スクレイピング倫理に関するすべての会話は**robots.txt**から始まり、多くの場合、2つの方向のいずれかで誤解されます - 破ったら逮捕される法律として扱うか、完全に無視できるノイズとして扱うか。どちらでもありません。robots.txtは、サイトが避けてほしいパスを良識あるボットに伝える任意の慣習です。何を拘束し、何を拘束しないかを正確に知ることが、プロフェッショナルなデータ操作と無謀な操作を分けるものです。これは実務者のガイドであり、最初に注意しておきます：これは法律的な助言ではなく、情報提供です。

## robots.txtの実際の姿

robots.txtはRobots Exclusion Protocolを実装しており、2022年にRFC 9309として標準化されました。これはドメインのルートに存在するプレーンテキストファイルで、ドメインまたはサブドメインごとに1つのファイルがあります。これは任意です：`404`は単にサイトにファイルがなく、何の希望も表明していないことを意味します。重要なのは、これは要求であり、障壁ではないということです。robots.txtを提供することは技術的にアクセスを防ぐものではなく、それを読むボットの善意に依存しています。

読むのは単一のリクエストです - 何かをクロールする前に、毎回これを行ってください：

```bash
# Just read it
curl -s https://example.com/robots.txt

# Through a proxy, as your scraper would see it
curl -s -x http://USER:PASS@residentialpremium.quantumproxies.io:8080 https://example.com/robots.txt
```

## 重要な指令

語彙は小さいです。これらを学べば、どのrobots.txtも一目で読めます：

- `User-agent` - 次のルールが対象とするボット。`*`はすべてのボットを意味し、`Googlebot`のような名前は特定のボットを対象とします。指令名は大文字小文字を区別しませんが、パスの値は区別します：`/Private/`は`/private/`ではありません。
- `Disallow` - クロールしないパスのプレフィックス。`Disallow: /admin/`はそのフォルダとその下のすべてをブロックします。`Disallow: /`はサイト全体をブロックし、空の`Disallow:`はすべてを許可します。
- `Allow` - 非標準ですが普遍的に尊重される、禁止されたパス内のパスを再許可するオーバーライド。
- `Crawl-delay` - リクエスト間にN秒を求める非標準のヒント。これを尊重してください：無視することは最も早くフラグを立てられる方法の一つです。
- `Request-rate`と`Visit-time` - インターバルごとのリクエストを制限したり、特定のUTC時間にクロールを制限する希少な指令。
- `Sitemap` - XMLサイトマップへの絶対URL。制限ではなく贈り物：サイトの構造をマッピングします。

構文に関する注意点：パスパターンのワイルドカード`*`と`$`は元の標準にはありませんが、すべての主要エンジンがそれを尊重しているため、`Disallow: /*.pdf$`は実際に一般的で効果的です。

```python
import urllib.robotparser as rp

# Parse robots.txt and check a URL for your user agent
robots = rp.RobotFileParser()
robots.set_url("https://example.com/robots.txt")
robots.read()

UA = "MyResearchBot/1.0"
print(robots.can_fetch(UA, "https://example.com/products"))  # True / False
print(robots.crawl_delay(UA))                                 # seconds, or None
```

![robots.txtについての2つのパネル：それが何であるか（RFC 9309として標準化された任意の慣行であり、尊重すべきレートのシグナル）と、何でないか（アクセスを阻む鍵でも、それ自体で拘束力を持つ契約でもない）。カードは慣行とCrawl-delayを実在するものとしてチェックし、法的効力とアクセス制御には×印を付けている。](https://res.cloudinary.com/dmqliab0t/image/upload/f_auto,q_auto,w_1200/v1785335202/blog/generated/qp-b9-072-diag1.png)
*robots.txtは尊重すべき信号であり、あなたを止めるロックでも、それ自体で拘束する契約でもありません。*

## 拘束するもの - そしてしないもの

これは人々が最も明確にする必要がある部分です。robots.txtはそれ自体では法的に拘束力がなく、技術的なアクセス制御メカニズムでもありません - 何もロックしません。裁判所は一般的に、よく知られた公的データを公的なものとして扱っています。しかし「それ自体での法律ではない」は「結果がない」と同じではありません。サイトの明示された希望を無視することは、利用規約、侵入、またはコンピュータの誤用の議論の要因となり、ブロックや追加の精査を招き、単に悪い市民行為です。実用的な立場：robots.txtを尊重すべき倫理的な基準として扱い、実際の法的な質問 - 個人データ、契約、管轄 - を別の問題として正しく扱います。[2026年のウェブスクレイピングの合法性](https://quantumproxies.io/blog/is-web-scraping-legal-2026)に関する私たちの概要はそれらを別々にカバーしています。

## AIクローラーのシフト

robots.txtはAIトレーニングのオプトアウトチャネルとして第2の命を得ています。サイトは今、AIユーザーエージェント - `GPTBot`、`Google-Extended`、`CCBot`、`ClaudeBot`、`PerplexityBot`など - に対して「インデックスはしても、トレーニングには使わないで」と明示的なルールを追加しています。これが、研究者がrobots.txtがモデルから公的データを排除するにはもはや十分ではないと主張する理由です：それは完全に各クローラーが従うかどうかに依存し、宣言された良識あるエージェントにしか話しかけません。クローラーを運営する場合、正直なUser-Agentを宣言し、これらのオプトアウトを尊重することが基本です。逆の意図 - AIツールを招待する - のための新しい補完ファイルはllms.txtであり、[llms.txtガイド](https://quantumproxies.io/blog/llms-txt-guide-ai-crawlers)でカバーしています。

```bash
# A modern robots.txt often carries AI-specific opt-outs:
#   User-agent: GPTBot
#   Disallow: /
#
#   User-agent: Google-Extended
#   Disallow: /
#
#   User-agent: *
#   Crawl-delay: 5
#   Sitemap: https://example.com/sitemap.xml
```

![4ステップの準拠したクロール：何よりも先にrobots.txtを取得し、自分が宣言したUser-agentと照合し、リクエスト間でCrawl-delayを守り、許可された公開パスだけをスクレイピングする。カードにはPythonのrobotparserが返す答えを示している：パスに対するcan_fetch、秒単位のcrawl_delay、そして404は意向の表明がないことを意味する。](https://res.cloudinary.com/dmqliab0t/image/upload/f_auto,q_auto,w_1200/v1785335202/blog/generated/qp-b9-072-diag2.png)
*準拠したクロールは最初にファイルを読み、レート指令を尊重し、許可された公的パスのみを触れます。*

## データを取得しながら良き市民であること

robots.txtを尊重し、必要な公的データを収集することは矛盾しません。歓迎されるための規律は、ブロックされないための規律と同じです：`Crawl-delay`を尊重し、リクエストのペースを調整し、ボットを正直に特定し、同じページを再取得しないように積極的にキャッシュし、サイトが保護しようとしている高価なエンドポイントを避けます。フォーラムでよく言われるコミュニティの規範は、robots.txtは主に圧倒的なトラフィックを生成するボットを抑制するために存在するということです - そのようなボットにならないでください。[丁寧なスクレイピングガイド](https://quantumproxies.io/blog/polite-scraping-rate-limiting-guide)はこれを具体的なペース設定ルールに変えます。

デフォルトでコンプライアンスを処理したいチームには、[Scraper API](https://quantumproxies.io/scraper-api)がリクエストの一部としてrobots.txtを読み、尊重し、合理的なレート制限とともに、良き市民行動をツールのデフォルトの動作にします。これにより、生のスクリプトが1つのIPから叩くのではなく、クリーンで宣言されたフットプリントが維持されます。

[準拠した方法で公的データを収集する](https://quantumproxies.io/scraper-api)

## よくある質問

### robots.txtはウェブスクレイピングに法的に適用されますか？

それ自体ではありません。robots.txtは任意の慣習（RFC 9309）であり、法律や契約ではなく、技術的にアクセスをブロックしません。しかし、それを無視することは利用規約、侵入、またはコンピュータの誤用の主張に繋がり、ブロックや精査を招きます。倫理的な基準として尊重し、実際の法的な質問 - 個人データ、契約 - を別々に扱います。これは法的助言ではありません。

### ウェブサイトのrobots.txtを読むにはどうすればいいですか？

`/robots.txt`を追加してドメインルートにHTTP GETを送信します。例：`https://example.com/robots.txt`。curlや任意のHTTPクライアントが機能します。Pythonでは、`urllib.robotparser`がそれを解析し、特定のユーザーエージェントとURLに対して`can_fetch()`を答えます。`404`はサイトにrobots.txtがなく、クロールの希望を表明していないことを意味します。

### Disallow: / は何を意味しますか？

それはすべての一致するボットにサイト上のどのパスもクロールしないように要求します - ドメイン全体が要求により立ち入り禁止です。空の`Disallow:`はその逆を意味します：すべてが許可されています。これらは良識あるクローラーへの要求であり、強制された障壁ではないことを覚えておいてください。また、パスの値は大文字小文字を区別し、指令名は区別しません。

### データが公的な場合、robots.txtを無視してもいいですか？

技術的には可能ですが、一般的にはそうすべきではありません。それを無視することは悪い市民行為であり、より早くブロックされ、紛争でサイトの主張を強化することができます。プロフェッショナルなアプローチはそれを尊重し、許可された公的パスのみをスクレイプし、リクエストのペースを調整し、個人データを完全に範囲外に保つことです。

robots.txtは小さなファイルですが、大きな信号を持っています：このサイトがどのようにクロールされたいかを示しています。最初にそれを読み、パスとペースを尊重し、あなたが誰であるかを宣言すれば、エチケットとリスクの両方で確固たる立場を保ちながら、必要な公的データを収集できます。

[robots-awareクロールでScraper APIを試してみてください](https://quantumproxies.io/scraper-api)
