Next: , Up: Appendices


9.1 ロボットの排除

Wgetに,進行中に利用可能なすべてのデータを吸い上げながら,ウェブサイト 中をあてもなく歩きまわらせることは非常に簡単です.`wget -r site'とその設定です.すばらしいでしょうか?サーバ管理者にとっては そうではありません.

Wgetが静的なページを回収している限り,そして適切なレートで行なわれてい る限り(`--wait'オプションを参照してください),余り問題ありません. 問題は,Wgetが静的なページとほとんどのCGIを要求するページの間の違いを伝 えることができないことにあります.Infoファイルをhtmlに変換するCGI Perlスクリプトで処理させるセクションを持つサイトを知っています.スクリ プトは遅いのですが,人間のユーザが予備のInfoファイルを閲覧するのに十分 うまく動作します.しかし,Wgetで再帰ダウンロードしている人の中に,スク リプト全体のすべてのInfoファイルへのリンクがある索引ページでつまづく人 がいるとき,そのシステムはユーザが役に立つものを提供すること無くやって きます(Infoファイルを変換するこの処理はローカルに行なわれるべきで,イン ストールされているすべてのGNUのソフトウェアに対するInfoドキュメントは infoコマンドで利用可能にすべきです).

このような問題を避けるため,うまく動作するロボットから保護する必要があ るドキュメントのプライバシーを保護することと同様に,ロボット拒否 (robot exclusion)の概念が導入されました.その考え方とは,サーバの管理 者とドキュメントの著者が,ロボットから保護したい,そしてアクセスを許可 したいサイトの部分を指定することを可能にすることです.

最も人気のあるメカニズムで,すべての主要なロボットがサポートするデファ クトスタンダードは,“Robots Exclusion Standard” (RES)でMartijn Koster他によって1994年に書かれました.それは,ロボットに避けて欲しい URLパスを指示する命令を含むテキストファイルの書式を指定しています.ロボッ トが見つけるように,ロボットがダウンロードし解析するということを期待し て,その指定はサーバのルートの/robots.txtに配置する必要がありま す.

Wgetは,厳密な意味ではウェブロボットではありませんが,個別のページをダ ウンロードするためにユーザが介入すること無く,サイトの大半をダウンロー ドすることが可能です.そのため,再帰的なダウンロード時にはWgetはRESに従 います.例えば,以下のようにします.

     wget -r http://www.server.com/

`www.server.com'の最初のインデクッスがダウンロードされます.Wget がそのサーバからダウンロードするより多くのドキュメントを見つけた場合, `http://www.server.com/robots.txt'を要求し,見つかった場合はそれ以 降のダウンロードでそれを使用します.robots.txtはそれぞれのサーバ ごとに一回のみロードされます.

バージョン1.8までのWgetは,Martijn Kosterが1994年に書いた http://www.robotstxt.org/wc/norobots.htmlで利用可能な最初のバージョ ンの標準をサポートしていました.バージョン1.8では,Wgetはインターネット ドラフト`<draft-koster-robots-00.txt>'の“A Method for Web Robots Control”と言うタイトルで指定された追加命令もサポートしています.私の知 る限りrfcにはなっていませんが,そのドラフトは http://www.robotstxt.org/wc/norobots-rfc.txtで利用可能です.

このマニュアルは,もはやRobot Exclusion Standardを含んでいません.

二番目に,メカニズムの知識はそれほどありませんが,個々のドキュメントの 著者をロボットでたどるファイルからリンクしたいかどうかを指定することも 可能です.これはMETAタグを以下のように使用します.

     <meta name="robots" content="nofollow">

これは,http://www.robotstxt.org/wc/meta-user.htmlで幾分詳細に説 明されてます.Wgetは,通常の/robots.txtへの排他的な追加で,ロボッ ト除外のこの手法をサポートしています.

ロボットの拒否を本当に,本当に望むことがどうなるか知っている場合, .wgetrcrobots変数を`off'にして下さい.同じことは, 例えば`wget -e robots=off url...'のように,-eスイッチ で達成可能です. 1