GNU Wget は、インターネットからファイルを簡単に取得するために多くのLinuxユーザーに欠かせない、多機能なコマンドラインユーティリティです。機能が豊富で使いやすく、HTTP、HTTPS、FTPなどの一般的なネットワークプロトコルをサポートしています。さらに、Wgetはウェブサイト全体またはページの一部をダウンロードする機能を内蔵しており、ウェブスクレイピング、ミラーリング、アーカイブに最適なツールです。
Wgetの最も印象的な機能の一つは、プロキシとシームレスに連携できる点です。Linuxユーザーとして、身元を隠したり、地域制限を回避したり、負荷分散でパフォーマンスを向上させるためにプロキシが必要になることがよくあります。Wgetをツールキットに加えれば、プロキシの統合は簡単です。
Wgetとは?
Wgetは「World Wide Web」と「get」を組み合わせた略語で、インターネット上のファイルを操作するための無料のオープンソースプログラムです。これはフリーソフトウェアの大規模な共同作業であるGNUプロジェクトの一部です。
Wgetはオンラインでファイルを扱う技術ユーザー向けの便利な機能を備えています。バッチダウンロード、中断されたダウンロードの再開、再帰的ダウンロード、プロキシサポート、ダウンロードスケジューリング、帯域幅スロットリング、カスタマイズ可能なユーザーエージェント、SSL/TLSサポートなどが含まれます。また非対話型であるため、バックグラウンドで実行するスクリプトやcronジョブにも最適です。
WgetはLinuxおよびUnixユーザーの間で人気があり、WindowsおよびmacOS向けのバージョンも提供されています。Wgetの豊富な機能とクロスプラットフォーム互換性により、大きなファイルのダウンロード、ダウンロードの自動化、ウェブサイトミラーの作成など、さまざまなウェブベースのタスクに最適なツールとなっています。
LinuxでWgetにプロキシを使用する
データセンターやレジデンシャルIPなど、さまざまな種類のプロキシが存在し、それぞれに利点と用途があります。Wgetでプロキシを使用することで、地理的制限やネットワーク/ISPの制限を回避するなどのメリットが得られます。また、ウェブ閲覧やファイルのダウンロード中に匿名性とプライバシーを維持することもできます。
適切なプロキシプロバイダーを利用すれば、頻繁にアクセスされるリソースをキャッシュしてパフォーマンスを向上させることもできます。さらに、プロキシプロバイダーはネットワーク速度に影響を与え、幅広いIPアドレスのプールを提供することでレート制限の回避を支援し、CAPTCHAの解決策も提供できます。このため、適切なプロキシプロバイダーの選択は、特にWgetと組み合わせて使用する場合に、プロキシが効果的に機能することを保証するために不可欠です。
WgetにプロキシをConfigureする
WgetをプロキシとともにConfigureするには、環境またはWgetコマンド自体で適切な設定を行う必要があります。これを行うにはいくつかの方法があり、このチュートリアルでは4つの方法を説明します。環境変数を使用したプロキシ設定、/etc/wgetrcファイルを更新してすべてのユーザーにプロキシを設定する方法、~/.wgetrcファイルを更新して現在のユーザーにプロキシを設定する方法、および-eフラグを使用して現在のターミナルインスタンスにプロキシを設定する方法です。また、認証あり・なしのプロキシでWgetを使用する方法も学びます。
この記事で説明するすべての設定は、このGitHub gistで確認できます。
プロキシでWgetを使い始める前に、以下のものが必要です:
- Debianベースのシステム
- プロキシサーバーの詳細: WgetをプロキシとともにConfigureするには、プロキシサーバーの詳細が必要です。これにはサーバーのIPアドレスまたはホスト名、ポート番号、および必要に応じて認証情報(ユーザー名とパスワード)が含まれます。この情報はプロキシプロバイダーまたはネットワーク管理者から入手できます。
1. 環境変数を使用してプロキシ設定をConfigureする
Wgetのプロキシ設定を行う最も簡単な方法は、環境変数を使用してシステムレベルで定義することです。これにより複数のプログラムが値を読み取って使用できるため、一度変更するだけで済みます。プロキシを環境変数として設定することで、コンピューターから行われるすべてのリクエストにWgetがプロキシを使用するようになります。
WgetのプロキシをConfigureするには、シェル設定ファイル(.bashrcまたは.bash_profile)に以下の行を追加し、プレースホルダーをプロキシサーバーのアドレスとポートに置き換えます(例:http://proxy.example.com:8080):
export http_proxy=http://proxy_address:proxy_port
export https_proxy=https://proxy_address:proxy_port
プロキシに認証が必要な場合は、http://proxy_address:proxy_portの代わりに、URLにユーザー名とパスワードを追加して次のようにします:
export http_proxy=http://username:password@proxy_address:proxy_port
export https_proxy=username:password@proxy_address:proxy_port
export ftp_proxy=username:password@proxy_address:proxy_port
username、password、proxy_address、proxy_portの変数を適切な値に置き換えることを忘れないでください(例:http_proxy=http://username:[email protected]:8080)。
これらの行を追加した後、シェルを再起動するか、使用したファイルに応じてsource .bashrcまたはsource .bash_profileを実行して変更を適用します。
2. /etc/wgetrcファイルを更新してすべてのユーザーにプロキシを設定する
システム全体にプロキシを設定する必要がある場合、たとえばWgetでファイルをダウンロードする場合のみプロキシを使用して身元を保護したい場合、Wgetにはこれを簡単に行う方法があり、個別のシステムユーザーまたはすべてのシステムユーザーに対して設定できます。
すべてのシステムユーザーにプロキシを設定することは、同じプロキシを使用して業務を行う複数のユーザーがいる共有会社マシンの場合に役立ちます。Wgetではプロキシを一度設定するだけで、すべてのユーザーがアクセスできるようになります。
すべてのユーザーにプロキシを設定するには、/etc/wgetrcにある設定ファイルを変更する必要があります。wgetrcファイルはWgetのデフォルト設定とオプションを保存する初期化ファイルです。このファイルを使用することで、コマンドライン引数を常に指定することなくWgetの動作をカスタマイズできます。
プロキシを設定するには、お気に入りのテキストエディタでwgetrcファイルを開き、以下の行を追加します:
https_proxy = http://proxy.example.com:8080
http_proxy = http://proxy.example.com:8080
ftp_proxy = http://proxy.example.com:8080
認証が必要なプロキシの場合は、以下の構文を使用します:
https_proxy = http://username:[email protected]:8080
http_proxy = http://username:[email protected]:8080
ftp_proxy = http://username:[email protected]:8080
proxy.example.com:8080とusername:passwordをプロキシサーバーのアドレス、ポート、認証情報に置き換えてください。ファイルを保存してエディタを閉じます。これ以降、システム上のすべてのユーザーが行うWgetリクエストは、指定されたプロキシサーバーを使用します。
3. ~/.wgetrcファイルを更新して現在のユーザーにプロキシを設定する
Wgetでは現在のユーザーのみのプロキシ設定を変更することもできます。これは、各ユーザー固有の認証情報が必要な状況で役立ちます。
プロキシを設定するには、~/.wgetrcファイルを作成または変更する必要があります。これはホームディレクトリ(~/)にあるユーザー固有のwgetrcファイルで、現在のユーザーのみに影響する設定を保存します。~/.wgetrcファイルは、新しいLinuxのインストールやユーザーアカウントではデフォルトで存在しない場合があります。これはユーザーがアカウント固有のWget設定をカスタマイズする必要があるときに作成されるためです。ファイルが存在しない場合は作成できます。
~/.wgetrcファイルを用意したら、お気に入りのテキストエディタで開き、以下の行を追加します:
https_proxy = http://proxy.example.com:8080
http_proxy = http://proxy.example.com:8080
ftp_proxy = http://proxy.example.com:8080
ここでも、proxy.example.com:8080を具体的な詳細に置き換えることを忘れないでください。この方法は現在のユーザーによるWgetリクエストにのみ影響します。同じマシン上で別のユーザーに切り替えた場合、これらの設定は適用されません。
4. -eフラグを使用して現在のターミナルインスタンスにプロキシを設定する
システムレベルまたはWgetレベルでプロキシを設定したくない場合は、Wgetコマンドの実行時に直接設定できます。この方法では個々のWgetコマンドに異なるプロキシ設定を使用でき、より柔軟に対応できます。
単一のWgetリクエストにプロキシ設定を指定するには、以下の構文を使用します:
# http proxy
wget -e use_proxy=yes -e http_proxy=http://proxy_address:proxy_port URL
# https proxy
wget -e use_proxy=yes -e https_proxy=http://proxy_address:proxy_port URL
このコードでは、URLはWgetが取得するURL(例:www.google.com)です。
認証が必要なプロキシの場合は、前のセクションで説明したように、プロキシの指定にhttp://username:password@proxy_address:proxy_portの構文を使用できます。
この方法では、他のリクエスト、ターミナルセッション、またはユーザーに影響を与えることなく、単一のリクエストにプロキシを設定できます。
Wgetの使い方
幸いなことに、Wgetの使い方はシンプルです。Wgetの一般的な構文はwget [options] [url]で、まず先ほど学んだ-e use_proxy=yesなどのオプション引数([options])を指定し、次に取得したい[url]を指定します。これはドキュメントやウェブページなどのメディアファイルでも可能です。
最初の部分はオプションなので、wget [url]を指定するだけでウェブリソースを取得できます。たとえば、wget http://example.com/file.pdfを呼び出すと、ファイルを取得してローカルマシンにダウンロードします。
ディスクに保存する際に使用する名前を指定しながらファイルをダウンロードすることもできます。これを行うには、--output-document引数を使用します:
wget --output-document=image.jpg https://httpbin.org/image/jpeg
Wgetではダウンロードをバッチ処理して、1つのコマンドで複数のURLからダウンロードすることもできます。これを行うには、ファイルを作成してURLを各行に貼り付けます。その後、以下のコマンドを実行できます:
wget ‐‐input list-of-file-urls.txt
注意: プロキシの指定に方法4を使用している場合は、プロキシで動作させるために前のコマンドに
-e use_proxy=yes -e http_proxy=http://proxy_address:proxy_portを追加する必要があります。オプション1、2、3はプロキシがすでに設定されているため、そのまま動作します。
まとめ
この記事では、WgetをプロキシとともにConfigureする4つの異なる方法と、そのメリットについて学びました。システム全体、すべてのユーザー、特定のユーザー、または単一のWgetリクエストにプロキシを適用するために、好みに応じて最適な方法を選択できます。
WgetをプロキシとともにConfigureすることで多くのメリットが得られますが、パフォーマンスと信頼性を最大化するために適切なプロキシサービスを選択することが重要です。Bright Dataはウェブから大量の構造化データを収集する企業を支援するウェブデータインフラです。プロキシソリューションを活用することで、Wgetの使用体験を向上させ、失敗するリクエストの数を減らし、インターネットからの情報取得を確実にします。
スタートアップから大企業まで、Bright DataはWeb Scraper APIやWeb Unlockerなどのプロキシソリューションとカスタムツールを使用してウェブサイトのスクレイピングとデータ収集を支援します。Bright Dataのデータセンター・プロキシ、プロキシサーバーオプション、料金プランを探索して、プロキシネットワークの要件に最適なプランを見つけてください。