Pythonでプロキシ有無両環境で動くスクリプト
2022/7/5
Pythonでプロキシのある環境とない環境の両方でスクリプトを動かす方法です。
コード
まずはコードです。
import socket
host = socket.gethostname()
if "host123" in host:
os.environ["http_proxy"] = "http://Username:Password@127.0.0.1:8080"
os.environ["https_proxy"] = "https://Username:Password@127.0.0.1:8080"
プロキシに関する情報は適宜変更が必要です。
- Username:ユーザ名、ID
- Password:パスワード
- 127.0.0.1:8080:プロキシのIPアドレス
説明
今回はsocketモジュールを使い、ホスト名でプロキシ認証の有無を判断することにしました。掲載のコードでは、PCのホスト名に「host123」が含まれていればプロキシありと判断し、プロキシ認証を実施します。それ以外なら、プロキシなしとしてプロキシ認証のコードは実行されません。
背景
Pythonのスクリプトを作成している時に、プロキシのある環境とない環境の両方で同作業をする必要があり、プロキシ認証の部分のコードをコメントアウトしたりしなかったりして対応していましたが、実に面倒くさかったです。
さらに、このコメントアウトという動作をしないだけでエラーがいちいち発生する等して非常に鬱陶しいのです。
別案
今回はホスト名を利用しましたが、IPアドレスにすることもできます。同様にsocketモジュールを使えば可能です。実装方法は割愛しますが、「PythonでIPアドレスを取得する」のように検索すればすぐに出てくると思います。