メインコンテンツまでスキップ

Python

Proxyman の Automatic Setup で Python スクリプトとサーバーの HTTP/HTTPS 通信をキャプチャします。requests、http.client、urllib3、httpx、aiohttp に対応しています。

1. 新しい自動設定(v4.7.0 以降)✅​

Proxyman v4.7.0 以降では、ワンクリックで Python の HTTP/HTTPS 通信をキャプチャできます。

  • ワンクリックで設定できます。HTTP Proxy の設定や、自己署名証明書の手動での信頼設定は必要ありません。
  • 多くの Python ライブラリに対応しています:requests、http.client、urllib3、httpx、aiohttp

使い方:​

  1. Proxyman を開き、Setup メニュー → Automatic Setup を選択します
  2. Open New Terminal をクリックします
  3. 必要に応じて、AppleScript の権限確認を許可します
  4. 新しいターミナルウィンドウが開きます。そこで Python のバックエンドサーバーを起動するか、スクリプトを実行してください。Proxyman がすべての通信を自動的にキャプチャします。
  5. 完了 ✅
Open New Terminal ボタンがあり、aiohttp や httplib などの Python ライブラリをキャプチャする Proxyman Automatic Setup のウィンドウ

Proxyman Automatic Setup で Python の通信をキャプチャ

Automatic Setup のページをご覧ください:

1. スクリプトを使う方法​

  1. GitHub の issue #1220 にあるこのスクリプトを使うと、Python 用の証明書を自動でインストールまたは削除できます。
  2. スクリプトをデスクトップフォルダに script.py という名前で保存します
  • 証明書を追加:
$ python3 script.py add
  • 証明書を削除
$ python3 script.py remove
備考

macOS 12.2 以降では、必ず python3 を使用してください

クレジット:@novitae

2. 手動で設定する方法​

Python 環境に Proxyman 証明書をインストールする​

初期状態では、macOS の Python は Proxyman の自己署名証明書を信頼しません。そのため、HTTPS 通信をインターセプトすると SSL エラーが発生することがあります。

Python スクリプトの HTTPS 通信をインターセプトするには、~/.proxyman/proxyman-ca.pem にある Proxyman ルート証明書を使用するよう、Python に明示的に指定する必要があります。

備考

新しいバージョンの Proxyman では、証明書は ~/Library/Application Support/com.proxyman.NSProxy/app-data/proxyman-ca.pem に保存されます。お使いの Mac に ~/.proxyman/proxyman-ca.pem が存在しない場合は、以下のコマンドでこのパスを使用するか、Certificate メニュー → Export → Root Certificate as PEM から証明書をエクスポートしてください。

以下の手順に従ってください:

  1. Mac に Proxyman 証明書をインストールします(すでに済んでいる場合はこの手順を省略してください。まだの場合は macOS ガイド をご覧ください)。
  2. ターミナルアプリで次のコマンドを実行します
$ export SSL_CERT_FILE=~/.proxyman/proxyman-ca.pem
$ export REQUESTS_CA_BUNDLE=~/.proxyman/proxyman-ca.pem
$ echo "export REQUESTS_CA_BUNDLE=~/.proxyman/proxyman-ca.pem" >> ~/.bash_profile ; source ~/.bash_profile

3. 完了です。

変更を元に戻す​

Proxyman を使用しない場合は、次の行をコメントアウトして変更を元に戻してください:

# export REQUESTS_CA_BUNDLE=~/.proxyman/proxyman-ca.pem

~/.bash_profile 内の該当行

3. トラブルシューティング​

3.1 Python コードから HTTP 通信を Proxyman でキャプチャできない​

解決方法:Automatic Setup を使用してください。

参考資料​

詳細情報​