Next: , Previous: Directory Options, Up: Invoking


2.7 HTTPオプション

`-E'
`--html-extension'
`application/xhtml+xml'や`text/html'形式のファイルがダウンロー ドされ,URLが正規表現の`\.[Hh][Tt][Mm][Ll]?'で終わらない場合,この オプションは接尾子`.html'をローカルのファイル名に後置します.例え ば,`.asp'ページを使用したリモートサイトをミラーし,手元のApach サー バで閲覧可能なミラーにしたい場合,これは役に立ちます.もう一つのこの優 れた利用方法は,CGIが生成したものをダウンロードするときです. `http://site.com/article.cgi?25'のようなURLは, article.cgi?25.htmlとして保存されます.

この方法で変更されたファイル名は,WgetはローカルのX.html ファイルとリモートのURL `X'と一致するかどうか分からないため (それは,URLが生成する`text/html'形式や `application/xhtml+xml'形式の出力が分からないためです.),再びダウ ンロードするたびにサイトをミラーリングすることに注意してください.この 再ダウンロードを避けるため,ファイルのオリジナルバージョンが X.origとして保存されるように,`-k'と`-K'を使用す る必要があります(see Recursive Retrieval Options).


`--http-user=user'
`--http-password=password'
httpサーバでのユーザ名をuserに,そしてパスワードを passwordに指定します.試みる形式によって,Wgetはbasic (安 全でない),またはdigest認証手法のいずれかを用いて符号化します.

もう一つの方法は,ユーザ名とパスワードをurl自身に書く方法です (see URL Format).いずれの手法でも,psを実行することで,パス ワードがばれてしまいます.パスワードが見えないようにするため.それらを .wgetrc.netrcに保存し,それらのファイルをchmodを 使用して他のユーザから確実に保護してください.パスワードが本当に重要な 場合,それらのファイルにも残さないようにして下さい—ファイルを編集し, Wgetがダウンロードを開始した後で削除して下さい.


`--no-cache'
サーバサイドのキャッシュを不可にします.この場合Wget は,リモートサービ スからファイルを得るため,キャッシュバージョンを返す代わりにリモートサー バに適切なディレクティブ(`Pragma: no-cache') を送ります.これは, プロキシサーバの時代遅れのドキュメントを回収し,クリアするときに特に役 立ちます.

キャッシュはデフォルトで可能になっています.


`--no-cookies'
クッキーを使用不可能にします.クッキーはサーバ側の状態を管理するメカニ ズムです.サーバはSet-Cookieヘッダを使用してクライアントにクッキー を送り,クライアントはそれ以降の要求で同じクッキーを使用して応答します. クッキーはサーバの所有者が訪問者の追跡を保存し,サイトがこの情報を交換 することを可能にするので,それらをプライバシーの侵害と考える人もいます. デフォルトはクッキーの使用です.しかし,クッキーの保存はデフォル トではありません.


`--load-cookies file'
最初のHTTPの回収の前にfileからクッキーをロードします.file の書式は,少なくともUnixバージョンのNetscapeとMozillaで使用されているも のです.

サイトの内容にアクセスするためにログインすることを要求するサイトをミラー リングする時,通常,このオプションを使用します.ログインのプロセスは, 通常,ウェブサーバがhttpクッキーを発行し,回収し,証明書を検証する ことで動作します.クッキーは,サイトの一部にアクセスしたときブラウザが 再送信し,個人識別情報を提供します.

サイトのミラーリングで,サイトと通信する時にウェブブラウザが送るものと 同じクッキーをWgetに送るよう要求します.これは,`--load-cookies' で達成されます—単純にWgetにcookies.txtファイルがある場所を示し, そうすることでブラウザが同じ状況で送るものと同じクッキーを送ります.異 なるブラウザはテキストのクッキーファイルを異なる場所に保存します.

Netscape 4.x.
クッキーは~/.netscape/cookies.txtになります.
Mozilla and Netscape 6.x.
Mozillaのクッキーファイルもcookies.txtという名前で,プロファイル のディレクトリの~/.mozillaの下のどこかにあります.フルパスは ~/.mozilla/default/some-weird-string/cookies.txtのような場 所で見つかります.
Internet Explorer.
ファイルメニューの,インポートとエクスポートの,エクスポートクッキーを 使用することで,Wgetが使用可能なクッキーファイルを生成可能です.これは, Internet Explorer 5でテストしました.それより前のバージョンでの動作は保 証しません.
その他のブラウザ
クッキーを作成したものと異なるブラウザを使用している場合,場所を指定可 能,またはWgetが期待するNetscapeのフォーマットのクッキーファイルを生成 することが可能な場合のみ動作します.

`--load-cookies'が使用不可能な場合,代替方法もあります.ブラウザが “クッキーマネージャ”をサポートしている場合,ミラーしているサイトにア クセスする時,使用されているクッキーを見るためにそれを使用することが可 能です.名前とクッキー名を書き下ろし,手動でこれらのクッキーを送るよう Wgetに命令し,“公式の”クッキーサポートを回避してください.

          wget --no-cookies --header "Cookie: name=value"
     


`--save-cookies file'
修了する前にfileにクッキーを保存します.つまり,既に期限切れのクッ キーや破棄する時間が指定されていないクッキー(“セッション・クッキー”と 呼ばれるもの)は保存されません.`--keep-session-cookies'も参照して ください.


`--keep-session-cookies'
指定されているとき,`--save-cookies'でセッションクッキーも保存しま す.セッションクッキーは,メモリに保存されブラウザを修了したときに消す ものなので,通常は保存されません.それを保存すると,ログを必要とするサ イトや,ページアクセスが可能になる前にホームページを訪問するとき便利で す.このオプションを用いると,複数回Wgetを実行しても,サイトが単一のブ ラウザセッションだと思っている限り,単一セッションだと想定します.

クッキーファイルのフォーマットには,通常のセッションクッキーを書き込め ないため,Wgetはタイムスタンプの有効期限を0で印を付けます.Wgetは `--load-cookies'で,それらをセッションクッキーとして認識しますが, それ以外のブラウザは混乱する可能性があります.また,そのようにロードさ れたクッキーは他のセッションクッキーとして扱われ,もう一度保存するため に`--save-cookies'を指定したい場合は, `--keep-session-cookies'を再び使用する必要があるということを意味す るので,注意して下さい.


`--ignore-length'
残念ながら,httpサーバ(より正確にはcgiプログラム)には,偽の Content-Lengthヘッダを送るものもあり,それではドキュメント全てが 回収されないので,Wgetがおかしくなります.Wgetが同じドキュメントを何度 も何度も回収し,そのたびに(通常でない)接続が同じバイト数で閉じている報 告を得る場合,この症状を見付けることが可能です.

このオプションを用いた場合,WgetはContent-Lengthヘッダを—まる で存在しないかのように—無視します.


`--header=header-line'
httpリクエストのたびに,ヘッダの残りにheader-lineを追加して 送ります.提供するヘッダはそのまま送られます.つまり,コロンで分離され た名前と値をふくめる必要があり,改行を含めてはならないことを意味します.

一つ以上の追加ヘッダを,一回以上`--header'を指定することで定義して もかまいません.

          wget --header='Accept-Charset: iso-8859-2' \
               --header='Accept-Language: hr'        \
                 http://fly.srk.fer.hr/
     

ヘッダ値として空の文字列を指定すると,以前ユーザが定義した全てのヘッダ をクリアします.

Wget 1.10では,このオプションは,通常自動的に生成されるヘッダに優先させ るために使用することが可能です.以下の例は,Wgetにローカルホストに接続 させる命令ですが,Hostヘッダに`foo.bar'を指定します.

          wget --header="Host: foo.bar" http://localhost/
     

1.10以前のWgetのバージョンでは,`--header'の使用で重複するヘッダを 送信します.


`--proxy-user=user'
`--proxy-password=password'
プロキシサーバの認証のため,ユーザ名userとパスワード passwordを指定します.Wgetはこれらをbasic認証手法で符号化 します.

セキュリティへ考慮は,`--http-password'に関連するものによく似てい ます.


`--referer=url'
HTTPの要求に`Referer: url'ヘッダを含めます.常に対話的なウェブブ ラウザでの回収を期待していて,Refererがそれを示すページの一つに設定され ているときのみ正しく出力するサーバサイドプロセスを用いたドキュメントの 回収で役に立ちます.


`--save-headers'
httpサーバがファイルにつけて送ったヘッダを空白行で分けて,実際の内 容の前につけて保存します.


`-U agent-string'
`--user-agent=agent-string'
agent-stringとしてhttpサーバを識別します.

httpプロトコルは,クライアントがUser-Agentヘッダフィールド を用いた自分自身の識別を許可しています.これでwwwソフトウェアの区 別が可能となり,通常のプロトコル違反の追跡目的には十分です.Wgetは通常 `Wget/version'として識別され,versionはWgetの現在のバー ジョンナンバーです.

しかし,サイトによってはUser-Agentが供給する情報によって出力を調 整するポリシーを課すことが知られています.理論上,これはそんなに悪い考 えではないのですが,(歴史的に)Netscapeや,更に頻繁にMicrosoft Internet Explorer以外のクライアントに情報の提供を拒否するように乱用されてもいま した.このオプションで,Wgetが発行するUser-Agentを変更できます. このオプションの使用は,行っていることを本当に知らない場合は思い留まっ てください.

`--user-agent=""'で空のユーザエージェントを指定すると,Wget は httpリクエストでUser-Agentヘッダを送りません.


`--post-data=string'
`--post-file=file'
すべてのHTTPリクエストと,リクエストの本文に指定されたデータを送信する 手段としてPOSTを使用します.--post-datastringをデータと して送信し,--post-filefileの内容を送信します.それ以外 では,同じように動作します.

Wgetは,POSTするデータの大きさを前もって知っておく必要があることに注意 して下さい.このため,--post-fileの引数は通常のファイルにする必 要があります.FIFOや/dev/stdinのようなものを指定すると動作しませ ん.HTTP/1.0に起因するこの制限を,回避する方法は全く分かりません. HTTP/1.1ではリクエストの長さを前もって知る必要が無いchunked転送が 導入されましたが,クライアントはHTTP/1.1サーバと通信していることが分か るまで,chunkedを使用することはできません.また,レスポンスを受信するま でそれは分からないので,完了するまでリクエストを順次送信する必要があり ます–鶏と卵の問題です.

注意:POSTリクエストが完了した後に,Wgetがリダイレクトされる場合,POST データをリダイレクトされたURLに送信しません.これは,POSTを処理するURL が通常のページにリダイレクトを用いて応答するためで,それはPOSTを要求し たり受け入れたりしません.この動作が最適かどうかは完全に明確ではありま せん.うまく動作しなければ,将来変更されるかもしれません.

以下の例は,POSTを使用しているサーバのログをとらせ,要求されている,お そらく認証されたユーザだけがアクセス可能なページをダウンロードを行なう 方法を示します.

          # Log in to the server.  This can be done only once.
          wget --save-cookies cookies.txt \
               --post-data 'user=foo&password=bar' \
               http://server.com/auth.php
          
          # Now grab the page or pages we care about.
          wget --load-cookies cookies.txt \
               -p http://server.com/interesting/article.php
     

ユーザ認証をそれ以降ずっと利用する,サーバがセッションクッキーを使用し ている場合,上記の例では`--save-cookies'では(ブラウザでも)保存され ず,cookies.txtが空になるため,うまく動作しないでしょう.この状 況では,セッションクッキーの保存を強制的に行うため, `--save-cookies'と共に`--keep-session-cookies'も使用して下さ い.

1