| robots.txt | |
|---|---|
| ロボット排除プロトコル | |
シンプルな robots.txt ファイルの例。「Mallorybot」というユーザーエージェントはウェブサイトのどのページもクロールできず、他のユーザーエージェントは 20 秒ごとに 1 ページ以上クロールできず、「secret」フォルダをクロールできないことを示しています。 | |
| 状態 | 提案された標準 |
| 初版 | 1994年に発行され、2022年に正式に標準化されました |
| 著者 |
|
| Webサイト | robotstxt |
robots.txtは、ロボット排除プロトコルを実装するために使用されるファイル名です。ロボット排除プロトコルは、Web サイトが、訪問するWeb クローラーやその他のWeb ロボットに、Web サイトのどの部分の訪問が許可されているかを示すために使用する標準です。
1994年に策定されたこの標準規格は、自主的な遵守を前提としています。悪意のあるボットは、このファイルをアクセス先のページを示すディレクトリとして利用できますが、標準化団体は、これを隠蔽によるセキュリティ対策で防ぐことを推奨していません。一部のアーカイブサイトはrobots.txtを無視しています。この標準規格は1990年代にサーバーの過負荷を軽減するために使用されました。2020年代には、ウェブサイトは生成型人工知能( GAI )のために情報を収集するボットを拒否し始めました。
「robots.txt」ファイルは、ウェブサイトの別のロボット組み込み標準であるサイトマップと組み合わせて使用できます。
この標準は、 1994年2月[ 4 ]にNexor [ 3 ]で働いていたMartijn Kosterによって提案されました。[ 1 ] [ 2 ]当時、彼はwww-talkメーリングリスト(当時WWW関連活動の主要なコミュニケーションチャネル)で提案されました。Charles Strossは、Kosterがrobots.txtを提案するきっかけとなったのは、自身が書いたWebクローラーが動作不良を起こし、 Kosterのサーバーにサービス拒否攻撃を引き起こしたためだと主張しています。[ 5 ]
この標準規格は当初RobotsNotWanted.txtと呼ばれ、ウェブ開発者はどのボットがウェブサイトにアクセスできないか、またはどのページにアクセスできないかを指定できるようになりました。1994年当時のインターネットは規模が小さかったため、すべてのボットの完全なリストを維持することは困難でした。サーバーの過負荷が主な懸念事項でした。1994年6月までに、この標準規格は事実上の標準となり、[ 6 ] WebCrawler、Lycos、AltaVistaなどの検索エンジンを含むほとんどのボットがこれに準拠しました。[ 7 ]
2019年7月1日、Googleはインターネット技術タスクフォースの公式標準としてロボット排除プロトコルの提案を発表しました。[ 8 ]提案された標準[ 9 ]は2022年9月にRFC 9309として公開されました。
ウェブロボットに指示を与えたいサイト所有者は、ウェブサイト階層のルート(例:https://www.example.com/robots.txt )にrobots.txtというテキストファイルを配置します。このテキストファイルには、特定の形式で指示が含まれています(以下の例を参照)。指示に従うことを選択したロボットは、ウェブサイトから他のファイルを取得する前に、このファイルを取得して指示を読み取ろうとします。このファイルが存在しない場合、ウェブロボットはウェブサイト所有者がサイト全体のクロールに制限を設けていないと想定します。
robots.txt ファイルには、ボットがアクセスできるウェブページとアクセスできないウェブページを指定するための指示が含まれています。robots.txt ファイルは、Google などの検索エンジンのウェブクローラーにとって特に重要です。
ウェブサイト上のrobots.txtファイルは、特定のロボットがサイトをクロールする際に特定のファイルやディレクトリを無視するよう要求するものとして機能します。これは、例えば、検索エンジンの検索結果からプライバシーを守りたい場合、選択されたディレクトリの内容が誤解を招く可能性がある、あるいはサイト全体の分類とは無関係である可能性があると判断した場合、あるいはアプリケーションが特定のデータのみを処理するようにしたい場合などに使用されます。robots.txtにリストされているページへのリンクは、クロール対象のページからリンクされている場合、検索結果に表示されることがあります。[ 10 ]
robots.txt ファイルは 1 つのオリジンをカバーします。複数のサブドメインを持つウェブサイトの場合、各サブドメインにはそれぞれ独自の robots.txt ファイルが必要です。example.comにはrobots.txt ファイルがあり、foo.example.comにはない場合、 example.comに適用されるルールはfoo.example.comには適用されません。さらに、各URI スキームとポートにもそれぞれ独自の robots.txt ファイルが必要です。http: //example.com/robots.txt はhttp://example.com:8080/またはhttps://example.com/の配下のページには適用されません。
robots.txtプロトコルはボット運営者によって広く遵守されています。[ 6 ]
robots.txtは1999年のeBay対Bidder's Edgeの訴訟で役割を果たした。 [ 11 ] eBayはrobots.txtに準拠していないボットをブロックしようとし、2000年5月に裁判所はボットを運営する会社に対し、不法侵入を理由に法的差止命令を発令し、自動手段を使ってeBayのサーバーをクロールすることを停止するよう命じた。[ 12 ] [ 13 ] [ 11 ] Bidder's Edgeはこの判決を不服として控訴したが、2001年3月に控訴を取り下げ、eBayに非公開の金額を支払い、eBayのオークション情報へのアクセスを停止することに同意した。[ 14 ] [ 15 ]
2007年のヘルスケア・アドボケーツ対ハーディング事件では、ある企業が、ウェイバックマシンでアーカイブされた保護されたウェブページにアクセスしたとして提訴されました。しかし、robots.txtのルールによりアーカイブからこれらのページへのアクセスは拒否されていました。ペンシルベニア州の裁判所は、「この状況では、robots.txtファイルはDMCAに基づく技術的手段に該当する」と判決しました。インターネット・アーカイブの不具合により、ハーディング社は一時的にアーカイブからこれらのページにアクセスできたため、裁判所は「ハーディング社は保護手段を回避していない」と判断しました。[ 16 ] [ 17 ] [ 18 ]
2013年のAP通信対メルトウォーターUSホールディングス訴訟において、 AP通信はメルトウォーターをAP通信のニュース記事の複製に関して著作権侵害および不正流用で提訴しました。メルトウォーターは、コンテンツは無料で入手可能でありrobots.txtによって保護されていないため、ライセンスは不要でありフェアユースであると主張しました。裁判所は2013年3月、「メルトウォーターの複製はフェアユースの原則によって保護されない」と判断し、複数の要素の中で「robots.txtプロトコルを採用しなかったからといって、メルトウォーターがAP通信のコンテンツを複製して公開するライセンスを取得したわけではない」と指摘しました。[ 19 ]
この標準に準拠している主要な検索エンジンには、 Ask、[ 20 ] AOL、[ 21 ] Baidu、[ 22 ] Bing、[ 23 ] DuckDuckGo、[ 24 ] Kagi、[ 25 ] Google、[ 26 ] Yahoo !、[ 27 ] Yandex [ 28 ]などがあります。
一部のウェブアーカイブプロジェクトはrobots.txtを無視しています。Archive Teamは、サイトマップなどのリンクを発見するためにこのファイルを使用しています。[ 29 ]共同創設者のジェイソン・スコット氏は、「robots.txtファイルをチェックせずに放置すると、ウェブサイトの文脈を超えて一般的な用途や意味を持つ可能性のあるアイテムのミラーリングや参照が行われなくなります」と述べています。[ 30 ] 2017年、インターネットアーカイブはrobots.txtの指示への準拠を停止すると発表しました。[ 31 ] [ 6 ] Digital Trendsによると、これは検索エンジンの結果から歴史的なサイトを削除するためにrobots.txtが広く使用されるようになったことを受けてのものであり、インターネットの過去の「スナップショット」をアーカイブするという非営利団体の目標とは対照的でした。[ 32 ]
2020年代から、ウェブ運営者はrobots.txtを使用して、生成AIのトレーニングデータを収集するボットのアクセスを拒否し始めました。2023年、Originality.AIは、最も訪問数の多い1000のウェブサイトのうち306がrobots.txtファイルでOpenAIのGPTBotをブロックし、85がGoogleのGoogle-Extendedをブロックしていることを発見しました。多くのrobots.txtファイルでは、GPTBotのみがすべてのページで明示的に禁止されているボットとして指定されていました。GPTBotへのアクセス拒否は、BBCやThe New York Timesなどのニュースウェブサイトで一般的でした。2023年、ブログホストのMediumは、「AI企業がインターネットの読者にスパムを送信するためにライターから価値を吸い上げている」として、すべての人工知能ウェブクローラーへのアクセスを拒否すると発表した。[ 6 ]
GPTBotはrobots.txt標準に準拠しており、ウェブ運営者にrobots.txtを無効化する方法についてアドバイスを提供していますが、The VergeのDavid Pierce氏によると、これは「GPTBotを非常に強力にした基盤モデルのトレーニング」が終わった後に始まったとのことです。また、一部のボットは検索エンジンと人工知能の両方に使用されており、どちらか一方だけをブロックすることは不可能な場合があります。[ 6 ] 404 Mediaは、 AnthropicやPerplexity.aiなどの企業が、一般的なブロックリストに掲載されているスクレーパーの名前を変更したり、新しいスクレーパーを立ち上げたりすることでrobots.txtを回避していると報じています。[ 33 ]
2025年、非営利団体RSL Collectiveは、 Really Simple Licensing (RSL)オープンコンテンツライセンス標準の立ち上げを発表しました。これにより、ウェブパブリッシャーはrobots.txtファイル内でAIボットの利用規約を設定できるようになります。立ち上げ時には、Medium、 Reddit、Yahooなどが参加しました。[ 34 ] [ 35 ] [ 36 ]
「許可」と「不許可」という用語が使用されているにもかかわらず、このプロトコルはあくまでも助言的なものであり、ウェブロボットのコンプライアンスに依存しています。ファイルに記載されている内容を強制することはできません。[ 37 ]悪意のあるウェブロボットがrobots.txtを尊重する可能性は低く、中にはrobots.txtをガイドとして利用し、許可されていないリンクを見つけて直接アクセスするロボットもいます。これはセキュリティリスクであると主張されることもありますが、[ 38 ]このような隠蔽によるセキュリティは標準化団体によって推奨されていません。米国国立標準技術研究所(NIST)は、この慣行を特に推奨していません。「システムセキュリティは、実装やそのコンポーネントの機密性に依存すべきではない。」 [ 39 ] robots.txtファイルに関して、隠蔽によるセキュリティはセキュリティ技術として推奨されていません。[ 40 ]
多くのロボットは、コンテンツを取得する際に特別なユーザーエージェントをウェブサーバーに渡します。[ 41 ]ウェブ管理者は、ロボットのいずれかを使用した接続を検出したときに、自動的に失敗を返す(または代替コンテンツを渡す)ようにサーバーを設定することもできます。 [ 42 ] [ 43 ]
Googleなどの一部のサイトでは、humans.txt人間が読むための情報を表示するファイルをホストしています。[ 44 ] GitHubなどの一部のサイトでは、humans.txtをAboutページにリダイレクトします。[ 45 ]
以前、グーグルはターミネーターに同社の創設者ラリー・ペイジとセルゲイ・ブリン/killer-robots.txtを殺さないように指示するジョークファイルをホストしていた。[ 46 ] [ 47 ]
この例では、ワイルドカードはすべての*ロボットを意味し、Disallowディレクティブには値がない(つまり、どのページもアクセスを禁止されていない)ため、すべてのロボットにすべてのファイルへのアクセスを許可しています。検索エンジン大手のGoogleはrobots.txtパーサーをオープンソース化し[ 48 ] 、Tame the Bots [ 49 ]やReal Robots Txt [ 50 ]などのコミュニティが作成したテスターを使用してrobots.txtファイルのルールをテストおよび検証することを推奨しています。
ユーザーエージェント: * 許可しない:
この例には同じ効果があり、まったく禁止しないのではなく、すべてのファイルが許可されます。
ユーザーエージェント: * 許可する: /
robots.txt ファイルが空または存在しない場合でも、同じ結果を得ることができます。
この例では、すべてのロボットに Web サイトにアクセスしないように指示します。
ユーザーエージェント: * 許可しない: /
この例では、すべてのロボットに 3 つのディレクトリに入らないように指示します。
ユーザーエージェント: * 許可しない: /cgi-bin/ 許可しない: /tmp/ 禁止: /junk/
この例では、すべてのロボットに特定のファイルから離れるように指示します。
ユーザーエージェント: * 許可しない: /directory/file.html
指定されたディレクトリ内の他のすべてのファイルは処理されます。
この例では、特定のロボットに Web サイトにアクセスしないように指示します。
ユーザーエージェント: BadBot # 'BadBot' をボットの実際のユーザーエージェントに置き換えます 許可しない: /
この例では、特定の 2 つのロボットに特定のディレクトリに入らないように指示します。
ユーザーエージェント: BadBot # 'BadBot' をボットの実際のユーザーエージェントに置き換えます ユーザーエージェント: Googlebot 許可しない: /private/
コメントの使用方法を示す例:
# コメントは行頭の「#」記号の後、またはディレクティブの後に表示されます ユーザーエージェント: * # すべてのボットに一致 Disallow: / # 除外する
複数のロボットをそれぞれ独自のルールでリストすることも可能です。実際のロボット文字列はクローラーによって定義されます。Googleなどの一部のロボット運用事業者は、複数のユーザーエージェント文字列をサポートしており、特定のユーザーエージェント文字列を使用することで、運用事業者はサービスのサブセットへのアクセスを拒否することができます。[ 26 ]
複数のユーザーエージェントを示す例:
ユーザーエージェント: googlebot # すべての Google サービス Disallow: /private/ # このディレクトリを許可しない ユーザーエージェント: googlebot-news # ニュースサービスのみ Disallow: / # すべてを許可しない ユーザーエージェント: * # 任意のロボット Disallow: /something/ # このディレクトリを許可しない
ディレクティブはDisallow: /something/、 で始まるすべてのファイルとサブディレクトリをブロックします/something/。
対照的に、ワイルドカードを使用すると (クローラーでサポートされている場合)、クロールを許可または拒否するパスとファイルを指定する際に、より複雑なパターンが可能になります。たとえば、次のDisallow: /something/*/otherような URL はブロックされます。
/何か/食べ物/その他 /何か/バー/その他
/something/foo/elseパターンと一致しないため、 のクロールは防止されません。
ワイルドカードは*柔軟性を高めますが、ロボット排除プロトコルRFC [ 51 ]の一部ではありますが、すべてのクローラーで認識されるとは限りません。
ルールの末尾のワイルドカードは、実際には何も行いません。これが標準的な動作です。
クロール遅延値は、一部のクローラーがホストへのアクセスを制限するためにサポートされています。この値は標準規格の一部ではないため、解釈はクローラーの読み取りに依存します。これは、ボットからの複数の訪問が集中してホストの速度を低下させている場合に使用されます。Yandexは、この値を後続の訪問間の待機秒数として解釈します。[ 28 ] Bingは、クロール遅延を、BingBotがウェブサイトに一度だけアクセスする時間枠(1~30秒)として定義しています。[ 52 ] Googleはこの指示を無視しますが、[ 53 ] Googlebotの後続の訪問を制御するためのインターフェースをウェブマスター向けに検索コンソールに提供しています。 [ 54 ]
ユーザーエージェント: bingbot 許可する: / クロール遅延: 10
一部のクローラーはSitemapディレクティブをサポートしており、同じサイトに複数のサイトマップを作成できます。robots.txt形式:[ 55 ] [ 56 ]Sitemap: full-url
サイトマップ: http://www.example.com/sitemap.xml
ロボット排除基準では、声明文中の「*」文字については言及されていないDisallow:。[ 57 ]
Cloudflareは、クローラーの許容可能な動作をタイプ別に提案する指令としてContent-Signal[ 58 ] [ 59 ]を導入しましたai-train。それぞれにai-inputまたはのsearch値があります。[ 60 ]yesno
コンテンツシグナル: ai-train=no、search=yes、ai-input=no
ルートレベルのrobots.txtファイルに加えて、RobotsメタタグとX-Robots-Tag HTTPヘッダーを使用することで、より詳細なレベルでロボット除外ディレクティブを適用できます。robotsメタタグは、画像、テキストファイル、PDFドキュメントなどの非HTMLファイルには使用できません。一方、X-Robots-Tagは、.htaccessファイルとhttpd.confファイルを使用することで、非HTMLファイルに追加できます。[ 61 ]
<メタ名= "ロボット"コンテンツ= "noindex" />X-Robots-タグ: noindex X-Robots-Tag はページがリクエストされサーバーが応答した後にのみ有効になり、robots meta タグはページが読み込まれた後にのみ有効になります。一方、robots.txt はページがリクエストされる前から有効です。したがって、robots.txt ファイルによってページが除外されている場合、robots meta タグや X-Robots-Tag ヘッダーはロボットがそもそも認識しないため、実質的に無視されます。[ 61 ]
ロボット排除プロトコルでは、クローラーが少なくとも500キビバイト(512000バイト)のrobots.txtファイルを解析することを要求しており、[ 62 ] Googleはrobots.txtファイルのファイルサイズ制限として500キビバイトを維持しています。[ 63 ]
ads.txt、認定広告販売業者を掲載するための標準security.txtセキュリティ研究者がセキュリティの脆弱性を報告するために従うべきプロセスを記述したファイルCrawl CCBotがサイトを効果的にクロールできるようにするにはどうすればよいですか?クローラーはサイトマッププロトコルをサポートしており、robots.txtファイルで宣言されたサイトマップをすべて利用します。