GNU Wget
Ubuntu上で動くwget。本項目の英語版記事をダウンロードしている。 | |
開発元 | GNUプロジェクト |
---|---|
最新版 |
1.24.5[1] / 10 3月 2024 |
リポジトリ | |
プログラミング 言語 | C言語 |
対応OS |
AmigaOS BSD系OS Linux macOS Windows OpenVMS Unix系OS |
プラットフォーム | クロスプラットフォーム |
対応言語 | アイルランド語、イギリスの英語、イタリア語、インドネシア語、ウクライナ語、英語、エストニア語、エスペラント語、オランダ語、カタルーニャ語、ガリシア語、ギリシア語、クロアチア語、スウェーデン語、スペイン語、スロバキア語、スロベニア語、セルビア語、チェコ語、中国語(台湾、中国)、デンマーク語、ドイツ語、トルコ語、日本語、ノルウェー語(ブークモール)、バスク語、ハンガリー語、フィンランド語、フランス語、ブルガリア語、ベトナム語、ヘブライ語、ベラルーシ語、ポーランド語、ポルトガル語(ブラジル、ポルトガル)、リトアニア語、ルーマニア語、ロシア語 |
サポート状況 | 開発中 |
種別 | ダウンロードマネージャ |
ライセンス | GNU General Public Licensev3+[2] |
公式サイト |
www |
特徴
編集確実性
編集Wgetは低速あるいは不安定なネットワーク接続でも確実に動作するように設計されている。もしダウンロードがネットワークの問題によって完了しなかった場合、Wgetは自動的にダウンロードが停止した箇所からダウンロードを継続するように試み、ファイル全体が取得されるまでこれを繰り返す。Wgetは、この機能を利用するため、当時としては新しかったRange
HTTPヘッダをもっとも早期に採用したクライアントの一つとなった。
再帰的ダウンロード
編集-e
robots=off
を指定しない限り)WgetはRobots Exclusion Standardを遵守する。
再帰的ダウンロードはFTPでも同様に動作する。その際、Wgetはダウンロード対象となるファイルを発見するためにLIST
コマンドを発行する。そしてトップのURLで指定されたものより下位のファイルとディレクトリに関してこのプロセスを繰り返す。FTPのURLのダウンロードが要求された場合には、シェル類似のワイルドカードが利用できる。
HTTPとFTPのどちらを用いる場合でも、再帰的ダウンロードを行う際には、Wgetにローカル及びリモートのファイルのタイムスタンプを調べ、リモートファイルが相当するローカルファイルより新しい場合にのみダウンロードを行うように命令することができる。これによりHTTP及びFTPサイトの容易なミラーリングが可能になるが、これはrsyncのように、最初からミラーリングを行うために設計されたプログラムに比べ非効率でよりエラーを生じやすいと考えられている。一方で、Wgetはこの作業のために特別なサーバ側のソフトウェアを必要としないという利点もある。
非対話性
編集Wgetは非対話的なプログラムである。つまり、一度起動すれば、Wgetはユーザーとの対話を必要とせずTTYをコントロールする必要もなく、進捗状況は(後の調査のため)別のファイルに記録しておくこともできるということである。そういった非対話的な形でユーザーはWgetを起動し、プログラムを監視することもせずログアウトすることができる。対照的に、ほとんどのグラフィカルユーザインタフェースあるいはテキストユーザインタフェースのウェブブラウザは、ユーザーがログインし続けることと、失敗したダウンロードを手動で再度スタートすることを求める。これは大量のデータを転送する際には大きな障害となりうる。
移植性
編集その他の特徴
編集Wgetの使い方
編集基本的な使い方
編集URLを(1個以上)引数にして Wget をコマンドラインから呼ぶのが、典型的な使い方である。(下表ではコマンドは読み易すくするために複数行で記述してあるが、実際には改行のない一行である。)
コマンド | 機能 |
---|---|
wget http://www.example.com/ |
「www.example.com 」のタイトルページをダウンロードし「index.html 」という名前のファイルに保存する。
|
wget ftp://ftp.gnu.org/pub/gnu/wget/wget-latest.tar.gz |
GNUのftpサイトからWgetのソースコードをダウンロードする。 |
より複雑な使い方として、複数のURLを階層を保ったままディレクトリに自動的にダウンロードする、というのもある。
コマンド | 機能 |
---|---|
wget --execute robots=off --recursive --level=1 --no-parent ---accept .gif http://www.server.com/dir/ |
ウェブサイトから拡張子が「.gif 」であるすべてのファイルをダウンロードする。(wget 'http://www.server.com/dir/*.gif' )のようなワイルドカードの展開はFTPにおいてのみ可能)
|
wget --page-requisites --convert-links http://www.example.com/ |
「www.example.com 」のタイトルページを、ページを表示するのに必要な画像とスタイルシートとともにダウンロードし、その中にあるURLがローカルで利用可能なコンテンツを参照するように変換する。
|
wget --recursive --level=0 http://www.example.com/ |
「www.example.com 」の全てのコンテンツをダウンロードする
|
進んだ使い方
編集コマンド | 機能 |
---|---|
wget --tries=7 --wait=5 --waitretry=14 --random-wait --mirror --convert-links --backup-converted --execute robots=off --output-file=./session.log http://www.oreilly.com/catalog/upt3/errata/ |
購入したばかりの本の正誤表をダウンロードする。全てのローカルのリンクを再帰的にダウンロードしファイルをオフラインでの閲覧に適したものにする。ファイル取得の間に5×0.5秒から5×1.5秒のランダムな待ち時間を設ける。ファイル取得に失敗したときには7回まで取得を試みる。その際には14秒ずつ間を空ける。アクセス結果をローカルのファイル「./session.log 」に記録する。
|
wget --tries=22 --waitretry=48 --wait=30 --random-wait --execute robots=off --output-file=./my_movies.log --directory-prefix=/movies --input-file=./my_movies.txt |
ローカルのファイル「my_movies.txt 」に一行ごとに記述されたリンクのみを取得する。ファイル取得の間に15秒から45秒のランダムな間隔をあける。ファイル取得に失敗した場合には48秒の間隔をあけて22回まで再試行する。HTTPリクエストヘッダーにはuser-agent を含めない。ロボット排除は無視する。取得した全てのファイルをディレクトリ「/movies 」に保存し、全てのアクセス結果をファイル「my_movies.log 」に保存する。名前のわかった特定の画像もしくはその他のファイルだけをダウンロードする場合に適する。
|
wget --cookies=on --keep-session-cookies --save-cookies=cookie.txt http://first_page |
Wget をレファラーとクッキーで保護されたコンテンツをダウンロードするのに用いる。ベースとなるURLを取得しそのクッキーをファイルに保存する。 |
wget --referer=http://first_page --cookies=on --load-cookies=cookie.txt --keep-session-cookies --save-cookies=cookie.txt http://second_page |
Wget をレファラーとクッキーで保護されたコンテンツをダウンロードするのに用いる。保存されたクッキーを利用して保護されたコンテンツを取得する。 |
wget --mirror --wait=2 --page-requisites --html-extension --convert-links --directory-prefix=DIRECTORY http://www.yourdomain.com |
ウェブサイトをミラーしローカルでの閲覧のための静的なコピーを作る。つまり、全てのリンクはローカルのファイルを示すように変換される。注: --html-extension はCGI、ASPあるいはPHPにより生成されたファイルをHTMLに変換する。
|
主要なコマンドラインオプション
編集オプション | 機能 |
---|---|
|
ダウンロードを再帰的にする。 |
|
ダウンロードするファイル名を LIST で指定する。
|
|
ドメイン名を LIST で指定する。
|
|
出力先のファイル名指定する。ファイル名として「- 」を指定すると出力先は標準出力になる。
|
|
バージョン情報を表示する。 |
|
ヘルプを表示する。 |
|
バックグラウンド モードにする。 |
|
HTTPヘッダ STRING を指定する。
|
|
コマンド COMMAND を実行する。(ファイル .wgetrc と同じ形式)
|
著者と著作権
編集歴史
編集初期
編集主なリリース
編集Content-Disposit
ion
ヘッダへの予備的なサポートを追加した。HTTP認証に関するコードにセキュリティ関連の改良が加えられた。Micah Cowanがプロジェクトのメンテナを引き継いだ。
●Wget 1.12 (2009年9月リリース)ウェブ上のCSSからのURL解析機能と国際化資源識別子(IRI)の取り扱いが追加された。
●Wget 1.13 (2011年8月リリース)HTTP/1.1がサポートされた。またいくつかの移植性に関する問題が修正された。セキュアな接続のためのライブラリとしてOpenSSLに代え、デフォルトでGnuTLSを利用するように変更された[4]。
●Wget 1.14 (2013年9月リリース)WARCファイルのサポートを追加。RFC2617ダイジェストアクセス認証のサポートを追加。GNU TLSバックエンドでのメモリリークの問題を修正。GNU TLSを使用する場合にクライアント証明書を有効に。
●Wget 1.15 (2014年4月リリース)--https-onlyと--methodオプションを追加。入力ファイル内で短縮URLに対応。MD5-SESSをサポート。
●Wget 1.16 (2014年10月リリース) デフォルトでローカルのシンボリックリンクを作成しなくなった。デフォルトのプログレスバーの出力を変更。--no-configと--start-POSオプションを追加。
●Wget 1.17 (2015年11月リリース) FTPのパッシブモードを削除し、FTPSがサポートされた。--if-modified-sinceオプションを追加。
●Wget 1.18 (2016年6月リリース) 脆弱性﹁CVE-2016-4971﹂を修正。--bind-dns-addressと--dns-serversオプションを追加。
●Wget 1.19 (2017年2月リリース) Metalinkファイルに対応、それに伴い新規オプションを追加。1.19.1にて、指定したHTTPステータスコードが返されるとダウンロードをリトライする--retry-on-http-errorオプションを追加。
●Wget 1.20 (2018年11月リリース) 信頼性向上のための--retry-on-host-errorオプション、FTPの再帰的なリモートファイルダウンロードをサポートする--accept-regex、--reject-regexオプションを追加。
●Wget 1.21 (2020年12月リリース) 翻訳文字列増加。alloca の全削除。構成フラグ --enable-fsanitize-ubsanと--enable-fsanitize-asanと--enable-fsanitize-msan for gcc and clang追加。OpenSSL のハンドシェイク後認証追加。gettext バージョン 0.19.3+ が必須に。一部のロケールで進行中のバーコードのバッファーオーバーフロー他、バグ修正。
開発とリリースのサイクル
編集Wgetの開発はオープンな流儀で行われている。ほとんどの設計上の決定は、通常はユーザーと開発者が参加する公開のメーリングリスト[3]で行われている。バグリポートとパッチも同じメーリングリストに流される。
ソースの投稿
編集リリース
編集ライセンス
編集国際化
編集Wget2
編集初版 | 2021年9月26日 |
---|---|
最新版 |
Lua エラー モジュール:Wd 内、2009 行目: attempt to concatenate a nil value / 31 8月 2023 |
リポジトリ |
gitlab |
ライセンス | GPL-3.0-or-later[5] |
公式サイト |
www |
- HTTP/2
- HTTP圧縮
- 並列接続
If-Modified-Since
HTTPヘッダーの使用- TCPファストオープン