プロキシを使ったpipの使い方

pipでプロキシを設定して、制限を回避し、セキュリティを向上させ、パッケージ管理を合理化する。
3 分読
How to Use Pip with Proxies blog image

この記事では、制限されたネットワークでのシームレスなパッケージ管理のために、pipでプロキシを設定し使用する方法を学びます。

公開プロキシと非公開プロキシの違い

プロキシを選択する際、公開か非公開かを決定することは重要な検討事項である。

公開プロキシ

パブリックプロキシは誰でも利用でき、認証がないことが多い。IPアドレスへの素早いアクセスを提供できる反面、速度が遅く、接続が不安定で、IPが禁止される可能性があるという欠点がある。無料で広く利用できるため、プロキシのローテーション、キャッシュ、アクセス制御などの基本的な機能が欠けていることが多く、本番環境では信頼性に欠ける。

公開URLは次のような書式になります: https://proxyserver:port.

プライベート・プロキシ

プライベートプロキシは認証を必要とし、より高いセキュリティ、安定性、高度な機能を提供しますが、通常はコストがかかります。プロキシ認証やローテーションなどの機能とともに、専用IPアドレスへのセキュアで高速かつ信頼性の高い接続を提供します。

アクセスは通常、認証によって制御される。多くの場合、https://username:password@proxyserver:portのように、プロキシURLのプレフィックスとしてユーザー名とパスワードを含める。

pipでプロキシを使う

pipでプロキシを使い始めるには、プロキシに関するいくつかの情報を集める必要がある。次の例では、以下の詳細のパブリックプロキシを使います:

  • プロキシサービスのプロキシアドレス
  • プロキシサービスが通信に必要とするポート

以下のproxy-listrepoは、テストされた公開プロキシアドレスを毎日提供するもので、テストには有用ですが、本番環境では使用しないでください。

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ベースのシステム: ~/pip/pip.confファイルを編集または作成する。
    • macOSベースのシステム: ~/.config/pip/pip.conf設定ファイルを編集または作成する。
  • サイトです: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-hostCLIオプションを使用して、自己署名証明書のエラーを無視するとよいでしょう。

ローテーティング・プロキシで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 を使う前にプロキシ接続をテストして、適切なセットアップと 実行時のエラーを避ける必要があります。curlping のようなツールを使って、サービスを開始する前にプロキシの性能を確認することができます。これにより、よりスムーズなパッケージ管理が可能になります。

ブライトデータ・プロキシーの使用

高品質で機能的なプロキシのプロバイダーを探しているなら、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.orgfiles.pythonhosted.orgを信頼できるドメインとして ホワイトリストに登録することができます。

結論

pipでプロキシを使用すると、匿名性と制御が強化され、IP制限やジオブロッキングを回避することができます。ニーズに応じて、パブリックプロキシとプライベートプロキシを選択できます。

プライベートプロキシには、IPのローテーション、キャッシュの向上、高速化、安定性の向上などの利点がありますが、コストはIPの可用性と地理的な場所に依存します。

pip用のプロキシを設定するのは簡単で、CLIフラグ、pip設定ファイル、環境変数のような複数のオプションがあります。しかし、パブリックプロキシには制限があり、前述したように、大規模なワークロードや本番環境での使用には適していません。より信頼性の高いソリューションとして、Bright DataはレジデンシャルIPとデータセンターIPを提供し、高速で安定した接続と、ウェブスクレイピングやデータ収集のための高度なツールを提供します。まずは無料でサインアップしてください。

クレジットカードは必要ありません