ベーシック認証付きのプロキシサーバーを通した通信をテストする場面があり、 proxy.py を使ったら思いのほか簡単に動かすことができたので紹介します。
以前 WSL2で簡易プロキシサーバーを立てる というのを書きましたが、Pythonがインストールされた環境ならばこちらの方がお手軽です。
環境
- Python 3.8 (3.6以上が必須となっています)
- proxy.py 2.4.3
proxy.py のインストール
以下のように pip でインストールするだけです。
公式サイトには、 Docker や HomeBrew を使った方法も書かれています。
pip install proxy.py
実行
ここでは、以下のように動作するように実行します。
- 他のPCから利用できるようにする。(ファイアウォール等、別途設定してください)
- ポートを 8080 にする。
- ユーザー名: user 、パスワード: password でベーシック認証を行う。
以下のコマンドを実行すると動作が開始し、プロンプトにログが出力されます。
終了する際は、 [Ctrl] + [C] で終了できます。
proxy --hostname 0.0.0.0 --port 8080 --basic-auth user:password
動作確認
以下のコマンドを実行して、ベーシック認証が動作していることを確認します。
curl -x user:password@localhost:8080 https://httpbin.org/get
そのまま実行すると応答が表示されます。
ユーザー名やパスワードを書き換えて実行すると、 407 エラーとなります。
その際のログは以下のようになります。
2023-11-30 11:15:24,240 - pid:15444 [I] server.access_log:384 - 127.0.0.1:52175 - CONNECT httpbin.org:443 - 6107 bytes - 1620.53ms
2023-11-30 11:15:39,940 - pid:15444 [I] handler.handle_data:179 - HttpProtocolException: ProxyAuthenticationFailed
2023-11-30 11:15:39,941 - pid:15444 [I] server.access_log:384 - 127.0.0.1:52191 - CONNECT None:None - 0 bytes - 1.00ms
proxy.py を使った、テスト用のお手軽なベーシック認証付きプロキシサーバーの動かし方でした。