この記事では、制限されたネットワークでのシームレスなパッケージ管理のために、pipでプロキシを設定し使用する方法を学びます。
公開プロキシと非公開プロキシの違い
プロキシを選択する際、公開か非公開かを決定することは重要な検討事項である。
公開プロキシ
パブリックプロキシは誰でも利用でき、認証がないことが多い。IPアドレスへの素早いアクセスを提供できる反面、速度が遅く、接続が不安定で、IPが禁止される可能性があるという欠点がある。無料で広く利用できるため、プロキシのローテーション、キャッシュ、アクセス制御などの基本的な機能が欠けていることが多く、本番環境では信頼性に欠ける。
公開URLは次のような書式になります: https://proxyserver:port.
プライベート・プロキシ
プライベートプロキシは認証を必要とし、より高いセキュリティ、安定性、高度な機能を提供しますが、通常はコストがかかります。プロキシ認証やローテーションなどの機能とともに、専用IPアドレスへのセキュアで高速かつ信頼性の高い接続を提供します。
アクセスは通常、認証によって制御される。多くの場合、https://username:password@proxyserver:portの
ように、プロキシURLのプレフィックスとしてユーザー名とパスワードを含める。
pipでプロキシを使う
pipでプロキシを使い始めるには、プロキシに関するいくつかの情報を集める必要がある。次の例では、以下の詳細のパブリックプロキシを使います:
- プロキシサービスのプロキシアドレス
- プロキシサービスが通信に必要とするポート
以下のproxy-list
repoは、テストされた公開プロキシアドレスを毎日提供するもので、テストには有用ですが、本番環境では使用しないでください。
proxy-list
レポの中で、proxy-list-status.txt
ファイルをチェックして、動いているパブリックプロキシを見つける。これは、success
フラグが立っていて、動作中であることを示すアドレスをこのファイルでチェックすることでできる:
このチュートリアルでは、パブリックプロキシアドレスとして45.185.162.203:999を
使用します。これは、プロキシサーバーのアドレスがhttp://45.185.162.203:999
であることを意味します。
コマンドラインによるpipプロキシの設定
pipプロキシを設定する最も簡単な方法は、-proxy
コマンドラインオプションを使用してpip install
コマンドを呼び出すときにアドレスを渡すことです。
パブリックプロキシアドレスを使って、以下のコマンドでプロキシとパッケージへのアクセスをテストする:
# Public Proxy
pip install boto3 --proxy http://45.185.162.203:999
この方法は、新しいプロキシを恒久的に設定する前に、素早くプロキシをテストし、検証するのに役立ちます。pip パッケージを公開する場合、別の IP からの利用可能性を検証するのに役立ちます。
pip設定ファイルによるpipプロキシの設定
pip プロキシを恒久的に設定するには、pip config ファイルを使うのが簡単で宣言的な解決策です。その場所はオペレーティングシステムに依存し、以下のディレクトリにあります:
- Global:システム全体の設定ファイルで、ユーザー間で共有される。
- User:pipプロセスを実行するユーザーごとの設定ファイル。
- サイトPython仮想環境を使用した環境ごとの設定ファイル。
これらのコンフィギュレーション・ファイルは、システムごとに以下の場所にある、または作成される:
Linux/macOS
Linuxベースのシステムでは、pipの設定ファイルはpip.confと
呼ばれ、以下の場所にあります:
- グローバルだ:
- Debianベースのシステム:
etc`ディレクトリにpip.confを
編集または作成する。 - macOSベースのシステム:
Library/ApplicationSupport/pip/pip.confを
編集または作成する。
- Debianベースのシステム:
- ユーザー
- Debianベースのシステム:
~/pip/pip.conf
ファイルを編集または作成する。 - macOSベースのシステム:
~/.config/pip/pip.conf
設定ファイルを編集または作成する。
- Debianベースのシステム:
- サイトです:Python仮想環境でロードされる場合、
$VIRTUAL_ENV/pip.confに
あります。
ウィンドウズ
Windowsシステムでは、このファイルはpip.ini
ファイルで、以下の場所にあります:
- Global:
C:¥ProgramData¥pip¥pip.ini
ファイルを編集または作成する。Windowsシステムでは、このファイルはデフォルトで非表示になっていますが、書き込み可能であることに注意してください。 - ユーザ
:%APPDATA%pipで
pip.iniを
編集または作成する。 - サイトPython仮想環境でロードする場合、
%VIRTUAL_ENV%pip.iniで
設定ファイルを編集または作成します。
設定ファイルの内容
この例では、Python仮想環境のpip設定ファイルを使用します。有効化された仮想環境で、Debianベースのシステムでは$VIRTUAL_ENV/pip.confを
、Windowsでは%VIRTUAL_ENV%pip.iniを
編集します。
設定ファイルでは、希望のHTTPまたはHTTPSプロキシでプロキシキーを
更新する必要があります:
[global]
proxy = http://45.185.162.203:999
ファイルが保存されると、どのpipコマンドでも自動的にプロキシが使用され、前述のプロキシフラグが不要になる:
(venv) $ pip install boto3
pip configファイルで利用可能な設定オプションの詳細については、プロジェクトのドキュメントを参照してください。
環境変数によるpipプロキシの設定
システム環境変数を設定することで、pipをはじめ、システム上のすべてのHTTPリクエストにプロキシが使用されるようになります。これは、HTTP_PROXYと
HTTPS_PROXYの
両方の環境変数を利用することで行われます。HTTP_PROXYは
、HTTPリクエストを行うときに使用するシステムプロキシとして、pipのようなソフトウェアによって参照されることがよくあります。
Linux/macOS
Linuxオペレーティングシステムを使用している場合は、/etc/environment
ファイルを更新し、macOSユーザーの場合は、ホームディレクトリにある.zshrc
ファイルを更新します。その後、プロキシサーバーの新しいエントリーを追加して更新してください:
HTTP_PROXY=https://proxyserver:port
HTTPS_PROXY=https://proxyserver:port
ターミナル・セッションを再起動するか、システムを再起動すると、環境変数が存在するようになる。
ウィンドウズ
Windowsシステムでは、コマンドプロンプト・ターミナルで以下のコマンドを使って環境変数を設定できる:
setx HTTP_PROXY "https://proxyserver:port" /M
setx HTTPS_PROXY "https://proxyserver:port" /M
コマンドプロンプトを再起動して変更を有効にする。
設定のテスト
pip configファイルか環境変数でシステムレベルの設定を有効にしたら、プロキシが正常に接続でき、プロキシ経由でデータを受信できることをテストする必要がある。
Linux/macOS
Linux/macOSでは、以下のコマンドを使用する:
$ python -m venv venv
$ source venve/scripts/activate
# for pip config file or environment variables
(venv) $ pip install requests
これらの設定を特定のプロキシで上書きしたい場合は、CLIフラグを使うことで解決できる:
# pip cli flag
(venv) $ pip install requests --proxy https://proxyserver:port
このコマンドでは、https://proxyserver:port を
自分のプロキシで更新していることを確認する。
ウィンドウズ
Windowsでは、以下のコマンドを使用する:
> python -m venv venv
> .\venv\Scripts\Activate.bat
(venv) > pip install requests
これらの設定は、常にpip CLIフラグを使って上書きできる:
# pip cli flag
(venv) $ pip install requests --proxy https://proxyserver:port
ピッププロキシーのトラブルシューティング
pipを使用してHTTPまたはHTTPSプロキシに接続する場合、特にプライベートプロキシやHTTPSプロキシの拡張機能を使用する場合、以下のような一般的な問題に遭遇する可能性があります。
認証の問題
認証の問題は、一般的にpipでプロキシに接続しようとしたときに407 Proxy Authentication Required
エラーとして表示されます。これは、プロキシが接続にユーザ名とパスワードを要求しているか、プロキシに間違った認証情報を与えたことを示しています。
証明書の問題
HTTPSプロキシに接続する際、pipからCertificate verify failedという
エラーを受け取ることがあります。これは、プロキシサーバから提供された証明書に問題があることを示しています。
プライベートプロキシサーバが自己署名証明書を使用している場合、このエラーが表示され、証明書を認証局で検証できないことがあります。特定のドメインに接続する場合は、-trusted-host
CLIオプションを使用して、自己署名証明書のエラーを無視するとよいでしょう。
ローテーティング・プロキシでpipを使用する
ローテーションプロキシは、リクエストごとにIPアドレスを自動的に切り替えることで、IP禁止を回避するのに役立ちます。これにより、複数のユーザーを模倣し、制限を回避することができます。
リストからランダムにプロキシを選択することで実装できます。以下は、公開プロキシをローテーションしながらpipパッケージをインストールする簡単なbashスクリプトです。
以下のrotate-proxy.shという
bashスクリプトを作成する:
proxy_list=(
'http://45.185.162.203:999'
'http://177.23.176.58:8080'
'http://83.143.24.66:80'
)
pip_packages=(
'requests'
'numpy'
'pandas'
)
# Loop through packages and install them
for package in "${pip_packages[@]}"
do
# Randomly select a proxy from the list
proxy=${proxy_list[$RANDOM % ${#proxy_list[@]}]}
echo -e "\nInstalling $package with proxy $proxy"
pip install --proxy $proxy $package
done
作成したら、このファイルを実行してpipパッケージをダウンロードし、pipコマンドごとにランダムなプロキシをローテーションします。以下はスクリプトの出力の要約です:
$ ./rotate-proxies.sh
Installing requests with proxy http://177.23.176.58:8080
Collecting requests
Downloading requests-2.32.3-py3-none-any.whl.metadata (4.6 kB)
….
Downloading urllib3-2.3.0-py3-none-any.whl (128 kB)
Installing collected packages: urllib3, idna, charset-normalizer, certifi, requests
Successfully installed certifi-2025.1.31 charset-normalizer-3.4.1 idna-3.10 requests-2.32.3 urllib3-2.3.0
Installing six with proxy http://45.185.162.203:999
Collecting numpy
Downloading numpy-2.2.2-cp313-cp313-macosx_14_0_x86_64.whl.metadata (62 kB)
…
Installing collected packages: numpy
Successfully installed numpy-2.2.2
Installing pandas with proxy http://83.143.24.66:80
Collecting pandas
Downloading pandas-2.2.3-cp313-cp313-macosx_10_13_x86_64.whl.metadata (89 kB)
….
Installing collected packages: pytz, tzdata, six, python-dateutil, pandas
Successfully installed pandas-2.2.3 python-dateutil-2.9.0.post0 pytz-2025.1 six-1.17.0 tzdata-2025.1
pipでプロキシを使うメリット
プロキシは、開発者がネットワーク制限を回避し、ブロックされたリソースにアクセスし、パッケージのダウンロード速度を向上させるのに役立ちます。プライベートプロキシは、キャッシング、より高速な接続を提供し、身元を隠すことでセキュリティを強化します。
VPNと比較して、プロキシはピップリクエストのための軽量な代替手段です。VPNはすべてのインターネットトラフィックを暗号化し、より広範なプライバシーを提供しますが、遅延の増加によりパッケージのインストールが遅くなる可能性があります。プロキシは、依存関係を管理するための、より高速で効率的なソリューションを提供します。
よくある間違いとベストプラクティス
pipでプロキシを使用する場合、よくある間違いに注意することが重要です。セキュリティの脆弱性につながる可能性があります。間違ったプロキシ URL や、HTTP や HTTPS プロトコルの欠落や不正確な URL 形式などの設定ミスは、パッケージリポジトリへの接続を妨害します。
よくあるセキュリティの問題は、ソースコード、スクリプト、あるいは継続的インテグレーション、 継続的デリバリ(CI/CD)パイプラインの定義に、プロキシの認証情報(例えばユーザ名とパスワー ド)をハードコーディングすることである。このコードが再配布された場合、プロキシへの不正アクセスが発生する可能性がある。認証情報が漏洩した場合、プロキシは悪用され、コスト増につながるか、あるいはサイバー攻撃によって悪用されるかもしれない。
このようなミスを避けるために、プロキシ認証情報は、コードに直接格納するのではなく、環境変数や暗号化された設定ファイルに格納することで、安全に保つことを推奨します。さらに、pip を使う前にプロキシ接続をテストして、適切なセットアップと 実行時のエラーを避ける必要があります。curlやping のようなツールを使って、サービスを開始する前にプロキシの性能を確認することができます。これにより、よりスムーズなパッケージ管理が可能になります。
ブライトデータ・プロキシーの使用
高品質で機能的なプロキシのプロバイダーを探しているなら、Bright Dataをチェックしてみてください。これは、住宅、データセンター、モバイルデバイスを含む様々なIPアドレスを提供するプロキシソリューションです。また、回転プロキシやWeb Unlocker APIなど、データ収集やウェブスクレイピングに特化したツールも提供している。
Bright Dataは、プロジェクトのニーズに合わせてプロキシを簡単に作成することができます。どれだけ簡単かをお見せするために、pip を使って別の IP アドレス経由でパッケージにアクセスできる、プライベートな居住用プロキシを作成してみましょう。
まずは無料のBright Dataアカウントにサインアップしてください。次にユーザーダッシュボードに移動します。
サイドメニューの「プロキシ&スクレイピング」をクリック:
フォームが読み込まれたら、新しい住宅用プロキシを設定します。デフォルトの設定を使用すると、複数のBright Dataユーザーが使用する共有IPアドレスのプロキシを取得します:
特定の地域をターゲットにしている場合は、IPアドレスのある国を指定することもできます。
作成後、新しく作成したプロキシのエンドポイントと認証の詳細を含むダッシュボードにリダイレクトされます。ユーザ名、パスワード、サーバアドレスの両方に注意してください:
これらのエンドポイント値を使って、-proxy
フラグを使って可用性をテストする:
$ pip install pandas \
--trusted-host pypi.org \
--trusted-host files.pythonhosted.org \
--proxy https://username:[email protected]:33335
Bright Data プロキシは自己署名証明書を使うので、trusted-host
フラグを使ってpypi.org
とfiles.pythonhosted.org
を信頼できるドメインとして ホワイトリストに登録することができます。
結論
pipでプロキシを使用すると、匿名性と制御が強化され、IP制限やジオブロッキングを回避することができます。ニーズに応じて、パブリックプロキシとプライベートプロキシを選択できます。
プライベートプロキシには、IPのローテーション、キャッシュの向上、高速化、安定性の向上などの利点がありますが、コストはIPの可用性と地理的な場所に依存します。
pip用のプロキシを設定するのは簡単で、CLIフラグ、pip設定ファイル、環境変数のような複数のオプションがあります。しかし、パブリックプロキシには制限があり、前述したように、大規模なワークロードや本番環境での使用には適していません。より信頼性の高いソリューションとして、Bright DataはレジデンシャルIPとデータセンターIPを提供し、高速で安定した接続と、ウェブスクレイピングやデータ収集のための高度なツールを提供します。まずは無料でサインアップしてください。
クレジットカードは必要ありません