Loading AI tools
ウェブサーバからコンテンツを取得するダウンローダ ウィキペディアから
GNU Wget(あるいは単に Wget)はウェブサーバからコンテンツを取得するダウンローダであり、GNUプロジェクトの一部である。その名称はワールド・ワイド・ウェブ(WWW)とプログラムの主要な機能であるデータ取得を意味する英語の「get」から派生したものである。現在Wgetはウェブ閲覧のために用いられるTCP/IPに基づいたもっともポピュラーなプロトコルである、HTTP、HTTPS及びFTP によるダウンロードが利用可能である。
Ubuntu上で動くwget。本項目の英語版記事をダウンロードしている。 | |
開発元 | GNUプロジェクト |
---|---|
最新版 | |
リポジトリ | |
プログラミング 言語 | C言語 |
対応OS |
AmigaOS BSD系OS Linux macOS Windows OpenVMS Unix系OS |
プラットフォーム | クロスプラットフォーム |
対応言語 | アイルランド語、イギリスの英語、イタリア語、インドネシア語、ウクライナ語、英語、エストニア語、エスペラント語、オランダ語、カタルーニャ語、ガリシア語、ギリシア語、クロアチア語、スウェーデン語、スペイン語、スロバキア語、スロベニア語、セルビア語、チェコ語、中国語(台湾、中国)、デンマーク語、ドイツ語、トルコ語、日本語、ノルウェー語(ブークモール)、バスク語、ハンガリー語、フィンランド語、フランス語、ブルガリア語、ベトナム語、ヘブライ語、ベラルーシ語、ポーランド語、ポルトガル語(ブラジル、ポルトガル)、リトアニア語、ルーマニア語、ロシア語 |
サポート状況 | 開発中 |
種別 | ダウンロードマネージャ |
ライセンス | GNU General Public Licensev3+[2] |
公式サイト |
www |
Wgetの特徴としては、再帰的ダウンロード、ローカルに取得したHTMLをオフラインで閲覧するためのリンクの変換、プロキシのサポートその他数多くの機能を挙げることができる。
Wgetは1996年に、ウェブの人気の急拡大とともに登場した。その結果多くのUNIXユーザーに用いられるようになり、ほとんどの主要なLinuxディストリビューションとともに配布されるようになった。移植性の高いC言語によって書かれているため、WgetはいずれのUnix系システムにも容易にインストールできる。またmacOS、Windows、OpenVMS及びAmigaOSを含む多くの環境に移植されている。
WgetはGNOMEデスクトップにおけるGWgetやKDEデスクトップにおけるKGetのようなGUIプログラムの基礎として用いられている。Wgetはフリーソフトウェアである。
Wgetは低速あるいは不安定なネットワーク接続でも確実に動作するように設計されている。もしダウンロードがネットワークの問題によって完了しなかった場合、Wgetは自動的にダウンロードが停止した箇所からダウンロードを継続するように試み、ファイル全体が取得されるまでこれを繰り返す。Wgetは、この機能を利用するため、当時としては新しかったRange
HTTPヘッダをもっとも早期に採用したクライアントの一つとなった。
Wgetをクローラとして動作させることも可能である。クローラとして動作するとき、Wgetは、リソースのハイパーリンクをHTMLのウェブページから抽出し、それらを連続してダウンロードし、ユーザーによって指定された最大繰り返しの回数に達するまで再帰的に繰り返す。ダウンロードされたページは、リモートのサーバのディレクトリ構成に類似したディレクトリ構成に保存される。この「再帰的ダウンロード」はHTTPによるウェブサイトの部分的もしくは完全なミラーリングを可能にする。Wgetは、ダウンロードされたHTMLページ内のリンクを、オフラインでの閲覧のため、ローカルにダウンロードされた素材に向けられるよう調整することもできる。この種のウェブサイトの自動的ミラーリングを行うときには、(ユーザーがオプションとして-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は、サードパーティーのライブラリに対する依存性を最小限にした、C言語の移植性の高いスタイルで記述されている。Wgetには、C言語コンパイラとTCP/IPネットワーキングに対するBSDライクなインタフェースの他にはほとんど必要なものはない。WgetはUnixシェルから呼び出されるUNIXプログラムとして設計されたため、多くのUnix系環境やシステムに移植されている。それはWindows及びmacOSなどを含んでいる。
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 と同じ形式) |
GNU WgetはHrvoje Nikšićによって書かれた。彼のほかDan Harkless、Ian Abbott、Mauro Tortonesiなど多くの人々がWgetに寄稿している。主要な寄稿者達は配布物に含まれるAUTHORSファイルにクレジットされている。その他多くの人々は配布物に含まれるchangelogに記載されている。現在、WgetはGiuseppe Scrivanoによってメンテナンスされている。
Wgetの著作権はフリーソフトウェア財団に所属する。GNUソフトウェアに対する重要な寄稿全てに対して著作権譲渡を要求するというのがフリーソフトウェア財団のポリシーである。
Wgetは同じ作者による以前のプログラムGeturlの後継である。Geturlの開発は1995年後半に始まった。ところが作者は、以前ジェイムズ・バートン[3]がAmiga用にAREXXで書いたGetURLというプログラムがあることに気づいた。その後、名称はWgetに改められた。
Wgetは1990年代半ばに利用可能であったウェブダウンロードソフトウェアの間隙を埋めるものだった。HTTPとFTPの両方のプロトコルで確実にファイルをダウンロードできるプログラムは一つもなかった。当時存在したプログラムは(NcFTPやdlのように)FTPのみ利用可能だったか(当時はまだ、どこでも利用できるようなものではなかった)Perlで書かれたものだった。Wgetは当時すでにあったプログラムの機能に刺激を受けてはいたものの、このプロジェクトの目標はHTTPとFTPの両方を利用可能にすることと、ユーザーがどのUnixシステムにもある標準的な開発ツールのみを用いてWgetをビルドできるようにすることだった。
当時多くのUnixユーザーは、極端に遅い大学とダイヤルアップ接続のインターネット接続に苦しんでいた。このため、操作する人間が補助しなくとも一過性のネットワーク障害に対処できるダウンロードエージェントに対するニーズが増大していた。
以下に挙げるリリースはWgetの開発において重要な節目となるものである。それぞれのリリースに隣接して掲載している機能は簡潔さを旨として編集されており、当該リリースに関する網羅的情報ではない。そのような情報はWgetとともに配布されているNEWSファイルに掲載されている。.
Content-Disposition
ヘッダへの予備的なサポートを追加した。HTTP認証に関するコードにセキュリティ関連の改良が加えられた。Micah Cowanがプロジェクトのメンテナを引き継いだ。Wgetの開発はオープンな流儀で行われている。ほとんどの設計上の決定は、通常はユーザーと開発者が参加する公開のメーリングリストで行われている。バグリポートとパッチも同じメーリングリストに流される。
Wgetのコードやドキュメンテーションを投稿する際に好まれる方法はdiffユーティリティによって生成されるテキストのパッチの形でソースを更新することである。パッチをWgetに含めようとする場合は、メーリングリストに投稿されメンテナによってレビューされる。メンテナの検査を通過したパッチはソースに加えられる。パッチの作り方とスタイルのガイドラインはプロジェクトのwikiに概略が示されている。
ソースコードは、リリース1.5.3に始まる改訂の歴史を保存するリモートバージョンコントロールリポジトリで追跡することができる。リポジトリはMercurialで管理されている。以前はSubversion、さらにその前はCVSで管理されていた。
開発中に十分な数の機能あるいはバグフィックスが集積したときに、WgetはGNUのFTPサイト及びそのミラーサイトを通じて一般に公開される。プロジェクトは完全にボランティアによって運営されているので、リリースを発表することについて外部からの圧力はなく、強制力のあるリリースの締め切りもない。
リリースにはメジャー.マイナー.リビジョンという形式でバージョンナンバーが振られている。(例)Wget 1.11、Wget 1.8.2。メジャーバージョンナンバーが増加されるのは、大きなそして場合によっては非互換となるようなWgetの動作の変更あるいはコードベースの根本的な再設計がある場合である。マイナーバージョンナンバーが増加されるのは新しい機能の追加とバグフィックスを示す場合である。新しいリビジョンは、その前のリビジョンに比較して、バグフィックスのみが含まれていることを示している。リビジョン ゼロは省略される。つまりWget 1.11は1.11.0と同じことである。
GNU WgetはGNU General Public Licenseバージョン3以降のもとで、OpenSSLライブラリにリンクされたバイナリの配布を許可するという特別な例外をつけて配布されている。例外規定は以下の通りである:[2]
Additional permission under GNU GPL version 3 section 7
If you modify this program, or any covered work, by linking or combining it with the OpenSSL project's OpenSSL library (or a modified version of that library), containing parts covered by the terms of the OpenSSL or SSLeay licenses, the Free Software Foundation grants you additional permission to convey the resulting work. Corresponding Source for a non-source form of such a combination shall include the source code for the parts of OpenSSL used as well as that of the covered work.
WgetがGnuTLSライブラリにリンクできるように改良された際にはこの例外規定が削除されることが期待されている。
Wgetの ドキュメンテーションは Texinfoリファレンスマニュアルの形態で、GNU Free Documentation Licenseバージョン1.2以降の条件で配布されている。通常Unixライクなシステムで配布されているman pageはTexinfoマニュアルのサブセットから自動的に生成され、同じライセンスが適用される。
WgetはGNU gettextによる国際化に対応している。Unixライクなシステムでは環境変数を適切に設定することで母語を表示させることができる。Wget-1.12では日本語を含め30以上の言語に対応している。
初版 | 2021年9月26日 |
---|---|
最新版 |
Lua エラー モジュール:Wd 内、2009 行目: attempt to concatenate a nil value
/ 31 8月 2023 |
リポジトリ |
gitlab |
ライセンス | GPL-3.0-or-later[5] |
公式サイト |
www |
GNU Wget2のバージョン2.0.0は、2021年9月26日にリリースされた。Wget2はGNU General Public Licenseバージョン3以降のもとで配布されており、これをラッピングするLibwgetはGNU Lesser General Public Licenseバージョン3以降のもとで配布されている[5]。Wget2はWgetと比較して多くの改善点があり、特に、以下のプロトコルと技術に対応したことで、多くの場合、Wget2はWget1.xより遥かに高速にダウンロードすることができる[6]。
If-Modified-Since
HTTPヘッダーの使用Seamless Wikipedia browsing. On steroids.
Every time you click a link to Wikipedia, Wiktionary or Wikiquote in your browser's search results, it will show the modern Wikiwand interface.
Wikiwand extension is a five stars, simple, with minimum permission required to keep your browsing private, safe and transparent.