プロキシでWgetを使用する

この記事では、WgetとLinuxの世界を深く掘り下げ、プロキシをワークフローに簡単に統合する方法を探ります。
2 分読
Using Wget with a Proxy

GNU Wgetは多機能なコマンドラインユーティリティで、インターネットから簡単にファイルを取得する上で、多くのLinuxユーザーにとって欠かせないものとなっています。機能が豊富で使いやすく、HTTP、HTTPS、FTPなどの一般的なネットワークプロトコルをサポートしています。さらに、Wgetはウェブサイト全体またはページのサブセットをダウンロードするためのサポートを内蔵しているため、ウェブのスクレイピング、ミラーリング、アーカイブに理想的なツールとなっています。

Wgetの最も印象的な機能の1つは、プロキシとシームレスに連携できることです。Linuxユーザーであれば、自分のIDをマスキングしたり、厄介な地域制限を回避したり、ロードバランシングによってパフォーマンスを向上させたりするために、しばしばプロキシが必要になるでしょう。ツールキットにWgetがあれば、プロキシの統合は簡単です。

Wgetとは?

 

Wgetは、「World Wide Web」と「get」の略で、インターネット上のファイルを操作するためのフリーでオープンソースのプログラムです。これはGNUプロジェクトの一部で、フリーソフトウェアの大規模な共同作業です。

Wgetは、オンラインでファイルを扱う技術者にとって便利な機能を備えています。バッチダウンロード、中断されたダウンロードの再開、再帰的ダウンロード、プロキシのサポート、ダウンロードのスケジューリング、帯域幅の調整、カスタマイズ可能なユーザーエージェント、SSL/TLSのサポートなどです。また、非対話型なので、バックグラウンドで実行するスクリプトやcronジョブに最適です。

WgetはLinuxとUnixのユーザーに人気があり、WindowsとmacOS用のバージョンもあります。Wgetは、その印象的な幅広い機能とクロスプラットフォーム互換性により、大容量ファイルのダウンロード、ダウンロードの自動化、ウェブサイトのミラー作成など、さまざまなウェブベースのタスクに最適なツールとなっています。

LinuxでWgetとプロキシを組み合わせて使う

 

データセンタープロキシやレジデンシャルプロキシなど、多種多様なプロキシが存在し、それぞれに利点やユースケースがあります。Wgetでプロキシを使用すると、ジオロケーションやネットワーク/ISPの制限を回避できるなどの利点があります。また、ウェブの閲覧やファイルのダウンロード中に匿名性とプライバシーを維持することもできます。

適切なプロキシプロバイダーを使用すれば、頻繁にアクセスするリソースをプロキシを使ってキャッシュし、パフォーマンスも向上できます。さらに、プロキシプロバイダーは、ネットワーク速度に影響を与えたり、幅広いIPアドレスプールを提供することでレート制限を回避したりでき、さらにはcaptchaを回避するのに役立つソリューションも提供できます。このため正しいプロキシプロバイダーを選択することはプロキシの効果的な動作を保証する上で不可欠です。

 

プロキシでWgetを使用するための構成

 

プロキシでWgetを使用するには、お使いの環境またはWgetコマンド自体で適切な設定を行う必要があります。これにはいくつかの異なる方法があり、このチュートリアルではそのうちの4つを説明します。環境変数を使ったプロキシ設定、/etc/wgetrcファイルの更新による全ユーザー向けのプロキシ設定、~/.wgetrcファイルの更新による現在のユーザー向けのプロキシ設定、-eフラグを使った現在の端末インスタンスのプロキシ設定です。また、認証プロキシと非認証プロキシの両方でWgetを使用する方法も説明します。

 

この記事で説明したすべての設定は、このGitHub gist内にあります。

プロキシを使ってWgetを使い始める前に、以下のものが必要です。

  • Linux環境:このガイドはLinuxシステム向けに作られており、Ubuntu、Fedora、Debian、その他のLinuxディストリビューションに対応しています。お使いのマシンまたは仮想環境にLinuxがインストールされていることを確認してください。

     
  • Wget:WgetはほとんどのLinuxシステムにプリインストールされています。インストールされているかどうかを確認するには、ターミナルを開き、wget --versionと入力します。Wgetがインストールされている場合、このコマンドによりバージョン番号が返されます。インストールされていない場合、Debianベースのシステムならapt、Fedoraならyumなど、ディストリビューションのパッケージマネージャを使ってWgetをインストールできます。
  • プロキシサーバーの詳細:プロキシでWgetを使用するには、プロキシサーバーの詳細が必要です。これには、サーバーのIPアドレスまたはホスト名、ポート番号、必要であれば認証情報(つまりユーザー名とパスワード)が含まれます。この情報は、プロキシプロバイダまたはネットワーク管理者から入手できます。

     

1.環境変数を使ってプロキシ設定を行う

 

Wgetのプロキシ設定を行う最も簡単な方法は、環境変数を使ってシステムレベルで定義することです。これにより、複数のプログラムが値を読み込んで使用できるため、変更するのは一度だけで済みます。プロキシを環境変数として設定することで、Wgetがお使いのコンピュータからのすべてのリクエストにプロキシを使用するようになります。

Wget用のプロキシを設定するには、シェル設定ファイル(つまり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

usernamepasswordproxy_addressproxy_portの変数を、忘れずに適切な値(つまりhttp_proxy=http://username:[email protected]:8080)に置き換えてください。

これらの行を追加したら、どのファイルを使って変更を適用したかに応じて、シェルを再起動するか、source .bashrcまたはsource .bash_profileを実行します。

2.etc/wgetrcファイルを更新して全ユーザーのプロキシを設定する

 

システム全体にプロキシを設定する必要がある場合。例えば、Wgetでファイルをダウンロードする時だけプロキシを使い、自分のIDを保護したい場合、Wgetはこれを簡単に実行する方法を提供します。これは、個々のシステムユーザーに対しても、全システムユーザーに対しても実行できます。

すべてのシステムユーザーにプロキシを設定することは、会社に共有のマシンがあり、さまざまなユーザーが同じプロキシに依存して作業を行っている場合に便利です。Wgetにより、すべてのユーザーがプロキシにアクセスできるように、プロキシの設定が一度許可されます。

全ユーザーに対してプロキシを設定するには、/etc/wgetrcにある構成ファイルを修正する必要があります。wgetrcファイルは、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:8080username:passwordを、お使いのプロキシサーバーのアドレス、ポート、認証資格情報に置き換えます。ファイルを保存し、エディタを閉じます。これ以降、システム上のどのユーザーによるWgetリクエストも、指定されたプロキシサーバーを使用するようになります。

3.~/.wgetrcファイルを更新して現在のユーザーのプロキシを設定する

 

Wgetでは、現在のユーザーのプロキシ設定だけを変更することも可能です。これは、プロキシの詳細で、各ユーザー固有の認証情報が必要な場合に役立ちます。

プロキシを設定するには、~/.wgetrcファイルを作成/修正する必要があります。これは、ホームディレクトリ(~/)内にあるユーザー固有のwgetrcです。これには、現在のユーザーのみに影響する設定が格納されます。特に新しいLinuxインストールやユーザーアカウントでは、~/.wgetrcファイルはデフォルトでは存在しない可能性があります。なぜなら、このファイルは通常、ユーザーが自分のアカウント固有の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構文を使用してプロキシを指定できます。

この方法では、他のリクエスト、端末セッション、ユーザーに影響を与えずに、1つのリクエストに対してプロキシを設定できます。

Wgetの使用

 

ありがたいことに、Wgetを使うのは簡単です。Wgetの一般的な構文は、wget [options] [url]であり、最初にオプションの引数(つまり[options])を指定します(例えば、以前に学んだ-e use_proxy=yes)。その後、取得する[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をプロキシで使う4つの異なる方法と、そうすることの利点を説明しました。プロキシをシステム全体に適用するか、全ユーザーに適用するか、特定のユーザーに適用するか、あるいは単一のWgetリクエストに適用するか、好みに応じて最適な方法を選択できます。

プロキシでWgetを使用することには多くの利点がありますが、適切なプロキシサービスを選択することは、パフォーマンスと信頼性を最大化する上で不可欠です。Brjght Dataは、企業がウェブから大量の構造化データを収集するのを支援するウェブデータプラットフォームです。同社のプロキシソリューションを使用することで、Wgetのエクスペリエンスは向上し、失敗するリクエストの数は減り、インターネットからの情報取得が改善します。

 

Bright Dataは、新興企業や大企業を問わず、Web Scraper IDEWeb Unlockerなどのプロキシソリューションやカスタムツールを使用した、ウェブサイトのスクレイピングやデータ収集を支援します。Bright Dataのデータセンタープロキシプロキシサーバーのオプション価格を調べ、御社のプロキシネットワーク要件に最適なものを見つけてください。

 

あなたは下記にもご興味がおありかもしれません

web scraping with claude blog image
ウェブデータ

2025年のクロードによるウェブスクレイピング

Pythonを使ってWebスクレイピングを自動化し、構造化データを楽に抽出するClaude AIの使い方を学ぶ。
18 分読
Building AI-Ready Vector Datasets for LLMs blog image
AI

LLMのためのAI対応ベクトルデータセット構築:Bright Data、Google Gemini、Pineconeを使ったガイド

大規模言語モデル(LLM)は、私たちが情報にアクセスし、インテリジェントなアプリケーションを構築する方法を変革しています。LLMの可能性を最大限に引き出すには、特にドメイン固有の知識や独自のデータを使用する場合、高品質で構造化されたベクトルデータセットを作成することが重要です。LLMの性能と精度は、入力データの品質に直接結びついています。準備不足のデータセットは劣悪な結果をもたらす可能性があり、一方、十分にキュレーションされたデータセットはLLMを真のドメイン・エキスパートに変えることができます。 このガイドでは、AIに対応したベクターデータセットを生成するための自動パイプラインの構築方法を順を追って説明する。 課題:LLMのためのデータ収集と準備 LLMは膨大な汎用テキストコーパスで学習されますが、商品関連のクエリへの回答、業界ニュースの分析、顧客フィードバックの解釈など、特定のタスクやドメインに適用すると、不足することがよくあります。LLMを真に役立てるには、ユースケースに合わせた高品質のデータが必要です。 このデータは通常、ウェブ上に分散していたり、複雑なサイト構造の背後に隠されていたり、ボット対策によって保護されていたりする。 当社の自動ワークフローは、データセット作成の最も困難な部分を処理する合理化されたパイプラインでこれを解決します: コア技術の概要 パイプラインを構築する前に、関連するコアテクノロジーと、それぞれがワークフローをどのようにサポートしているかを簡単に見ておこう。 ブライトデータスケーラブルなウェブデータ収集 AIに対応したベクターデータセットを作成するための最初のステップは、関連性のある高品質なソースデータを収集することです。ナレッジベースやドキュメンテーションのような内部システムから得られるものもあるが、大部分は公共のウェブから得られることが多い。 しかし、最近のウェブサイトは、CAPTCHA、IPレート制限、ブラウザフィンガープリントなどの高度なボット対策メカニズムを使用しているため、大規模なスクレイピングは困難である。 Bright Dataは、データ収集の複雑さを抽象化するWeb Unlocker APIでこの課題を解決します。プロキシのローテーション、CAPTCHAの解決、ブラウザのエミュレーションを自動的に処理するため、データへのアクセス方法ではなく、データに集中することができます。 Google Gemini: インテリジェント・コンテンツ・トランスフォーメーション Geminiは、Googleによって開発された強力なマルチモーダルAIモデルのファミリーであり、様々なタイプのコンテンツを理解し処理することに優れている。私たちのデータ抽出パイプラインにおいて、Geminiは3つの重要な機能を果たします: このAIを活用したアプローチは、特に以下のような使用例において、脆弱なCSSセレクタや壊れやすい正規表現に依存する従来の方法よりも大きな利点をもたらす: AIがデータ抽出プロセスにどのような変化をもたらしているかについては、Using AI for Web Scrapingをご覧ください。スクレイピングのワークフローにGeminiを実装するための実践的なチュートリアルをお探しの場合は、包括的なガイドをご覧ください:GeminiによるWebスクレイピングをご覧ください。 文の変形意味埋め込み文の生成 エンベッディングは、高次元空間におけるテキスト(または他のデータタイプ)の密なベクトル表現である。これらのベクトルは意味的な意味を捉え、コサイン類似度やユークリッド距離のようなメトリクスを用いて測定される、類似したテキスト片を近接したベクトルで表現することを可能にする。この特性は、セマンティック検索、クラスタリング、検索拡張生成(RAG)のようなアプリケーションで重要である。 Sentence Transformersライブラリは、高品質の文や段落の埋め込みを生成するための使いやすいインターフェースを提供する。Hugging Face Transformersの上に構築され、意味タスクのために微調整された幅広い事前学習済みモデルをサポートしています。 このエコシステムで最も人気があり、効果的なモデルの1つがオールMiniLM-L6-v2である: より大きなモデルはより微妙なエンベディングを提供するかもしれないが、all-MiniLM-L6-v2は性能、効率、コストの間で非常に優れたバランスを提供する。その384次元ベクトルは ほとんどの実用的なユースケース、特に初期段階の開発やリソースに制約のある環境では、このモデルで十分すぎる。エッジケースにおける精度のわずかな低下は、通常、スピードとスケーラビリティの大幅な向上によって相殺されます。そのため、AIアプリケーションの最初のイテレーションを構築する場合や、控えめなインフラストラクチャでパフォーマンスを最適化する場合は、all-MiniLM-L6-v2を使用することをお勧めします。 Pineconeベクトル埋め込み画像の保存と検索 テキストがベクトル埋め込みデータに変換されると、それを効率的に保存、管理、照会するための専用のデータベースが必要になります。従来のデータベースはこのために設計されていません。ベクトル・データベースは、埋め込みデータの高次元の性質を扱うために特別に設計されており、RAGパイプライン、セマンティック検索、パーソナライゼーション、その他のAI駆動型アプリケーションに不可欠なリアルタイムの類似性検索を可能にします。 Pineconeは、開発者フレンドリーなインターフェイス、低レイテンシの検索パフォーマンス、完全に管理されたインフラストラクチャで知られる人気のベクトルデータベースです。ベクトル検索インフラストラクチャの複雑さを抽象化することで、複雑なベクトルインデックスと検索を効率的に管理します。主なコンポーネントは以下の通りです: Pineconeは2つのデプロイメントアーキテクチャを提供する:ServerlessとPod-Based です。ほとんどのユースケース、特に開始時や動的な負荷に対処する場合は、シンプルさとコスト効率からサーバーレスが推奨されます。 セットアップと前提条件 パイプラインを構築する前に、以下のコンポーネントが適切に設定されていることを確認する。 前提条件 各APIキーの生成方法については、以下のツール固有の設定セクションを参照してください。 必要なライブラリのインストール このプロジェクトのコアとなるPythonライブラリをインストールする: これらのライブラリーは提供している: 環境変数の設定 プロジェクトのルート・ディレクトリに.envファイルを作成し、APIキーを追加する: ブライトデータ設定 Bright DataのWeb Unlockerを使用するには: 実装例と統合コードについては、Web Unlocker GitHub […]
6 分読
AI

LLMにおけるスーパーバイズド・ファインチューニングとは?

このPythonガイドでは、概念、ツール、ワークフロー、そしてAIプロジェクトを向上させる実践的な例を取り上げています。
7 分読