Pythonでプロキシ有無両環境で動くスクリプト

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アドレスを取得する」のように検索すればすぐに出てくると思います。

よっさん
  • よっさん
  • 当サイトの管理人。ニューヨークの大学を飛び級で卒業。その後某日系IT企業でグローバル案件に携わる。マレーシアに1.5年赴任した経験を持つ。バイリンガルITエンジニアとしていかに楽に稼ぐか日々考えている。

コメントする

メールアドレスが公開されることはありません。