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

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

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

robots.txtの実際の姿

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

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

# 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@gate.quantumproxies.io:8000 https://example.com/robots.txt

重要な指令

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

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

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が何であるか(慣習、レート信号)と何でないか(契約、アクセス制御)を対比する二列の図
robots.txtは尊重すべき信号であり、あなたを止めるロックでも、それ自体で拘束する契約でもありません。

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

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

AIクローラーのシフト

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

# 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
準拠したクロールのフローダイアグラム:robots.txtを取得し、ユーザーエージェントを一致させ、クロールディレイを尊重し、許可された公的パスをスクレイプする
準拠したクロールは最初にファイルを読み、レート指令を尊重し、許可された公的パスのみを触れます。

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

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

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

準拠した方法で公的データを収集する

よくある質問

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を試してみてください