Robots Exclusion Standard
Robots Exclusion Standard(RES) または Robots Exclusion Protocol は、クローラやボットがウェブサイト全体またはその一部を走査することを防ぐ規約である。ロボット排除規約、robots.txt プロトコルとも呼ばれる。こういったボットは検索エンジンがウェブサイトの内容を分類しアーカイブするために主に使ったり、ウェブマスターがソースコードを校正するために使ったりする。直接の関係はないが、逆にボットを案内する目的のSitemapsと組み合わせて使うこともできる。
歴史
[編集]"robots.txt" は、1994年ごろWebCrawlerという検索エンジンで働いていた Martijn Koster が考案したとされている。1994年6月に robots-request@nexor.co.uk というメーリングリストのメンバーが合意して生まれた[1]。"robots.txt" はその翌年AltaVistaなどの検索エンジンが登場すると共に一般化していった。
2007年11月30日、ACAP (Automated Content Access Protocol) v1.0 が Robots Exclusion Standard を補完するものとして登場した[2]。ただしGoogleなど主要検索エンジンは、その採用を表明していない。
2019年、GoogleがIETFでの標準化を進めることを発表し[3]、2022年9月、RFC 9309として提案された[4]。
概要
[編集]ウェブサイトの所有者がボットに対して指示したい場合、そのウェブサイトの階層のルートに robots.txt
というテキストファイルを置く(例えば、www.example.com/robots.txt
)。サイト側の指示に従う選択をしているボットは、まずこのファイルにアクセスし、その指示を読み込んで、それに従ってそのウェブサイトの他のファイルの読み込みを行う。このファイルがない場合、ボットはそのサイトの所有者が特に何も指示していないと判断する。
robots.txt はボットに対して特定のファイルやディレクトリを検索しないよう指示する。これは例えば、検索エンジンからプライバシーに関わる情報を守る場合、指定したファイルやディレクトリの内容がサイトの分類をする際に誤解を与える虞がある場合、特定のアプリケーションのみが読み込むことを意図したデータの場合などがある。
下位ドメインがあるウェブサイトでは、各下位ドメインごとに robots.txt ファイルが必要である。example.com
に robots.txt があっても、a.example.com
になければ、example.com
の robots.txt の内容は a.example.com
には適用されない。
欠点
[編集]このプロトコルは全く拘束力がない。あくまでもボット側が協力することが前提であり、robots.txt で指定したからといってプライバシーが保たれることを保証するものではない。robots.txt で見られたくないファイルを指定したとしても、ウェブブラウザを使えば世界中の誰でもそのファイルを閲覧できる。また、このプロトコルを無視するボットを運用することも可能である。
なお、robots.txt に書かれたパターンは単純にパス名の部分と一致するかどうかで判断されるため、ディレクトリを指定する場合は最後に '/' を付けておかないと同じ文字列を含む任意のファイルとマッチする可能性がある。
例
[編集]ワイルドカード "*" を指定した例。あらゆるボットが全ファイルを走査できる。
User-agent: *
Disallow:
あらゆるボットが全ファイルを走査できないようにした例。
User-agent: *
Disallow: /
あらゆるボットが4つのディレクトリ配下を見ないよう指定した例。
User-agent: *
Disallow: /cgi-bin/
Disallow: /images/
Disallow: /tmp/
Disallow: /private/
特定のクローラが特定のディレクトリ配下に行かないよう指定した例。
User-agent: BadBot # replace the 'BadBot' with the actual user-agent of the bot
Disallow: /private/
あらゆるボットが特定のファイルを見ないよう指定した例。
User-agent: *
Disallow: /directory/file.html
この場合、そのディレクトリ配下の他のファイルはボットから隠蔽されない。
"#" からその行末まではコメントとして扱われる。
# Comments appear after the "#" symbol at the start of a line, or after a directive
User-agent: * # match all bots
Disallow: / # keep them out
規格外の拡張
[編集]Crawl-delay ディレクティブ
[編集]いくつかの主要なクローラは Crawl-delay
というパラメータをサポートしている。同一サーバに要求を繰り返す場合に指定された時間だけ待つよう指示するものである[5][6][7]。
User-agent: *
Crawl-delay: 10
Allow ディレクティブ
[編集]いくつかの主要なクローラは Allow
ディレクティブをサポートしており、それに続く Disallow
ディレクティブの逆の作用をする[8][9]。これは、あるディレクトリ全体を隠蔽したいが、その中の一部ファイルだけは隠蔽したくないという場合に使う。標準的実装では常に先に書いてあるディレクティブが優先されるが、Googleは Allow のパターンを全て先に評価し、その後 Disallow のパターンを評価する。Bing は Allow
も Disallow
も最も具体的なものを優先する[10]。
あらゆるボットで互換な動作にするには、あるファイルへのアクセスを許す Allow ディレクティブを先に書き、そのファイルを含むディレクトリについての Disallow ディレクティブを後に書く。以下に例を挙げる。
Allow: /folder1/myfile.html
Disallow: /folder1/
この場合、/folder1/ というディレクトリの /folder1/myfile.html というファイル以外は隠蔽する。Googleに対しては順序は重要ではない。
Sitemap ディレクティブ
[編集]一部のクローラは Sitemap
ディレクティブをサポートしており、1つの robots.txt の中で複数のSitemapsを指定できる[11]。
Sitemap: http://www.gstatic.com/s2/sitemaps/profiles-sitemap.xml
Sitemap: https://www.google.com/hostednews/sitemap_index.xml
拡張規格
[編集]Extended Standard for Robot Exclusion と題してRESの拡張規格が提案されている。追加されたディレクティブとしては Visit-time や Request-rate がある。例えば次のようになる。
User-agent: *
Disallow: /downloads/
Request-rate: 1/5 # maximum rate is one page every 5 seconds
Visit-time: 0600-0845 # only visit between 06:00 and 08:45 UTC (GMT)
脚注・出典
[編集]- ^ A Standard for Robot Exclusion
- ^ Information ACAP
- ^ 山本竜也 (2019年7月2日). “Google、REP(ロボット排除規約)のWEB標準化を推進へ”. Engadget 日本版. 2022年2月19日時点のオリジナルよりアーカイブ。2020年8月4日閲覧。
- ^ Koster, Martijn (2022年9月9日). “RFC [https://datatracker.ietf.org/doc/html/rfc9309 9309: Robots Exclusion Protocol]” (英語). IETF Datatracker. 2022年12月8日閲覧。
- ^ “How can I reduce the number of requests you make on my web site?”. Yahoo! Slurp. 2007年3月31日閲覧。
- ^ “MSNBot が Web サイトをクロールする回数が多すぎる”. MSNBot および Web サイトのクロールに関する問題に対処する. 2010年9月23日閲覧。
- ^ “About Ask.com: Webmasters”. 2010年9月23日閲覧。
- ^ “Googleウェブマスターセントラル - robots.txt ファイルを使用してページをブロックまたは削除する”. 2007年11月20日閲覧。
- ^ “How do I prevent my site or certain subdirectories from being crawled? - Yahoo Search Help”. 2007年11月20日閲覧。
- ^ “Robots Exclusion Protocol - joining together to provide better documentation”. 2009年12月3日閲覧。
- ^ “Yahoo! Search Blog - Webmasters can now auto-discover with Sitemaps”. 2009年3月23日閲覧。
関連項目
[編集]外部リンク
[編集]- Robots Exclusion(英語)
- RFC 9309 Robots Exclusion Protocol
- robots.txt の概要: Google Search Console ヘルプ
- Manual:robots.txt/ja: MediaWikiのマニュアル内のrobots.txtに関するページ
- List of Bad Bots - RESに従わないボットやクローラの一覧
- About Robots.txt and Search Indexing Robots
- [リンク切れ] Robots.txt is not a security measure
- History of robots.txt - チャールズ・ストロスがrobots.txtの誕生に関わったという内容の日記(元になったスラッシュドットでのコメントは[1])(英語)
- 具体例 ja.wikipedia.org の robots.txt