# Python

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

## 1. 新しい自動設定（v4.7.0 以降）✅ {#1-new-automatic-solution-v470-or-later-}

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

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

### 使い方： {#how-to-use}

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

![Open New Terminal ボタンがあり、aiohttp や httplib などの Python ライブラリをキャプチャする Proxyman Automatic Setup のウィンドウ](https://proxyman.com/docs/assets/proxyman-automatic-setup-window.jpg)

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

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

- [Proxyman の Automatic Setup](https://proxyman.com/docs/ja/automatic-setup/automatic-setup)

## 2. 旧方式（非推奨）❌ {#2-old-solution-not-recommended-}

### 1. スクリプトを使う方法 {#1-script-approach}

1. GitHub の issue #1220 にある[このスクリプト](https://github.com/ProxymanApp/Proxyman/issues/1220#issuecomment-1249090359)を使うと、Python 用の証明書を自動でインストールまたは削除できます。
2. スクリプトをデスクトップフォルダに `script.py` という名前で保存します 

* 証明書を追加： 

```bash
$ python3 script.py add
```

* 証明書を削除

```
$ python3 script.py remove
```

> **備考:** macOS 12.2 以降では、必ず `python3` を使用してください
>
> クレジット：[@novitae](https://github.com/novitae)

### 2. 手動で設定する方法 {#2-manual-approach}

#### Python 環境に Proxyman 証明書をインストールする {#install-the-proxyman-certificate-in-the-python-environment}

初期状態では、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 ガイド](https://proxyman.com/docs/ja/debug-devices/macos) をご覧ください）。
2. ターミナルアプリで次のコマンドを実行します

```bash
$ 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\. 完了です。

#### 変更を元に戻す {#revert-the-change}

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

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

\~/.bash\_profile 内の該当行

## 3. トラブルシューティング {#3-troubleshooting}

### 3.1 Python コードから HTTP 通信を Proxyman でキャプチャできない {#31-proxyman-could-not-capture-http-traffic-from-my-python-code}

**解決方法**：[Automatic Setup](https://proxyman.com/docs/ja/automatic-setup/automatic-setup) を使用してください。

### 参考資料 {#reference}

* [https://github.com/ProxymanApp/Proxyman/issues/948#issuecomment-890520435](https://github.com/ProxymanApp/Proxyman/issues/948#issuecomment-890520435)
* [https://github.com/ProxymanApp/Proxyman/issues/1220](https://github.com/ProxymanApp/Proxyman/issues/1220)

## 詳細情報 {#learn-more}

* [Python の requests や httpx ライブラリから HTTPS 通信をキャプチャする方法](https://proxyman.com/posts/2025-01-29-How-To-Capture-HTTPS-Traffic-From-Python-Requests-httpx)
* [Proxyman で Python の HTTP/HTTPS 通信をキャプチャする](https://proxyman.com/python)（Proxyman 公式サイト）
