# コマンドライン

> proxyman-cli で Terminal から Proxyman for macOS を操作します。ルールのエクスポートとインポート、ツールやシステムプロキシの切り替え、ログのエクスポート、証明書の管理ができます。

Proxyman for macOS には、Terminal や独自のスクリプトから Proxyman を操作できるコマンドラインツール `proxyman-cli` が付属しています ✅。

ツールには `/Applications/Proxyman.app/Contents/MacOS/proxyman-cli` からアクセスできます。

インストールされているバージョンで利用できるすべてのコマンドを確認するには、次のコマンドを実行します：

```bash
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli --help
```

## 1. Proxyman の設定をエクスポート {#1-export-proxyman-config}

SSL Proxying List、Breakpoint、Map Local、Scripting、Block List、Allow List、Reverse Proxy、Network Conditions など、すべてのデバッグツールのルールをエクスポートします。

```bash
$ /Applications/Proxyman.app/Contents/MacOS/proxyman-cli export -h

OVERVIEW: Export all debugging tools rules (Breakpoint, SSL Pinning, Map Local, Map
Remote, Scripting, etc).

USAGE: proxyman-cli export [--mode <mode>] --output <output>

OPTIONS:
  -m, --mode <mode>       Export Mode (all = "All debugging tools's rules", enabledRules
                          = "Only enabled rules"). (default: all)
  -o, --output <output>   A Output file to save the config to.
  --version               Show the version.
  -h, --help              Show help information.
```

> **備考:** デフォルトでは、`export` コマンドはすべてのルールをエクスポートします。特定のルールを除外するには、各デバッグツールの「Enabled」列のチェックを外し、`-m enabledRules` を使用してください。

### 使用例 {#for-example}

* すべてのデバッグツールのルールをエクスポートする：

`$ /Applications/Proxyman.app/Contents/MacOS/proxyman-cli export -o ~/Desktop/data.json`

* 有効なルールのみをエクスポートする：

`$ /Applications/Proxyman.app/Contents/MacOS/proxyman-cli export -m enabledRules -o ~/Desktop/data.json`

## 2. Proxyman の設定をインポート {#2-import-proxyman-config}

`export` コマンドでエクスポートした Proxyman のデバッグツールのルールをインポートします。

```bash
$ /Applications/Proxyman.app/Contents/MacOS/proxyman-cli import -h

OVERVIEW: Import config to Proxyman.

USAGE: proxyman-cli import [--mode <mode>] --input <input>

OPTIONS:
  -m, --mode <mode>       Import Mode (append = "Append to the existing rules"),
                          override = "Import and Replace all existing rules". (default:
                          append)
  -i, --input <input>     A input file to import.
  --version               Show the version.
  -h, --help              Show help information.
```

> **備考:** デフォルトでは、インポートされた新しいルールは既存のデバッグルールに追加されます。すべてのルールを上書きするには、`-m override` を使用します。

### 使用例 {#for-example-1}

* 既存のルールに追加する形で、すべてのデバッグルールをインポートする：

```bash
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli import -i ~/Desktop/data.json
```

* 既存のルールをすべて上書きしてインポートする：

```bash
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli import -m override -i ~/Desktop/data.json
```

## 3. ライセンスの有効化・解除 {#3-activateunlink-license}

ライセンスの有効化と解除のコマンドは、ライセンスのページをご覧ください。

- [ライセンス](https://proxyman.com/docs/ja/license)

## 4. HTTP システムプロキシの切り替え {#4-toggle-http-system-proxy}

Proxyman 4.8.0 以降では、コマンドラインから macOS の System Proxy をオン・オフできます。この機能は [Raycast 拡張機能](https://proxyman.com/docs/ja/raycast) でも使われています。

```bash
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli proxy on
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli proxy off
```

参考：[https://github.com/ProxymanApp/Proxyman/issues/1626#issuecomment-1545862020](https://github.com/ProxymanApp/Proxyman/issues/1626#issuecomment-1545862020)

## 5. セッションのクリア {#5-clear-session}

* コマンドラインから現在の Session をクリアできます。Proxyman 4.12.0 以降で利用できます。

```bash
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli clear-session
```

## 6. デバッグツールのオン・オフ {#6-toggle-debugging-tools}

* コマンドラインから Breakpoint、Map Local、Scripting ツールをオン・オフできます。Proxyman 4.12.0 以降で利用できます。

```bash
# Scripting
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli scripting on
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli scripting off

# Map Local
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli maplocal on
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli maplocal off

# Breakpoint
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli breakpoint on
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli breakpoint off
```

* Proxyman macOS 6.3.0 以降では、同じ方法で `map-remote`、`block-list`、`allow-list`、`reverse-proxy`、`network-condition`、`no-caching`、`dns-spoofing` も切り替えられます。
* `on` や `off` の代わりに `open` を使うと、ツールのウィンドウを開けます。例：`proxyman-cli map-remote open`。`no-caching` は `on` と `off` のみに対応しています。
* これらのコマンドを動作させるには、Proxyman が起動している必要があります。

```bash
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli map-remote on
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli block-list off
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli network-condition open
```

## 7. コマンドラインで Proxy Helper Tool をインストール {#7-install-the-proxy-helper-tool-by-command-line}

Proxyman macOS 4.12.0 以降では、GUI を使わずに Helper Tool をインストールできます。

```bash
sudo /Applications/Proxyman.app/Contents/MacOS/proxyman --install-privileged-components
```

## 8. Proxyman のログをエクスポート {#8-export-proxyman-log}

**Proxyman macOS v5.11.0 以降で、次の機能に対応しています：**

* すべてをエクスポート（ProxymanSession 形式）

```bash
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli export-log -m all -o "~/desktop/output"
```

* 特定のドメインをエクスポート（ホストのみを指定します。スキーム、ポート、パス、クエリは含めないでください）

```bash
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli export-log -m domains -o "~/desktop/output" --domains 'api.twitter.com' --domains 'www.producthunt.com'
```

**Proxyman macOS 5.20.0 以降では、Raw 形式または HAR 形式でエクスポートできます。**

* すべてをエクスポート - RAW のリクエスト/レスポンス形式

```bash
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli export-log -m all -o "~/desktop/output" --format raw
```

* すべてをエクスポート - HAR 形式

```bash
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli export-log -m all -o "~/desktop/output" --format har
```

* 特定のドメインをエクスポート - RAW のリクエスト/レスポンス形式

```bash
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli export-log -m domains -o "~/desktop/output" --domains 'api.twitter.com' --domains 'www.producthunt.com' --format raw
```

* 特定のドメインをエクスポート - HAR 形式

```bash
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli export-log -m domains -o "~/desktop/output" --domains 'api.twitter.com' --domains 'www.producthunt.com' --format har
```

**Proxyman macOS 6.2.0 以降では、`--since <flow_id>` を追加すると、指定したフロー ID 以降のフローだけをエクスポートできます（そのフロー ID のフローも含まれます）。すべてのエクスポート形式で使用できます。**

`--format` で指定できる形式は、`proxymansession`（デフォルト）、`har`、`raw` です。

## 9. カスタムルート証明書をインポート {#9-import-custom-root-certificate}

* ✅ カスタムの p12 ルート証明書を Proxyman にインポート
* システムキーチェーンで証明書を自動的に信頼します（sudo が必要）
* Proxyman macOS 5.15.0 以降で利用できます

### インストールして信頼する {#install-and-trust}

```bash
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli install-root-cert <certificate_path> --password <your_cert_password> --trust
```

### 信頼せずにインストールする（キーチェーンで手動で信頼が必要な場合があります） {#install-but-not-trust-you-might-need-to-trust-it-manually-in-the-keychain}

```bash
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli install-root-cert <certificate_path> --password <your_cert_password>
```

## 10. 現在の IP とポートをエクスポート {#10-export-current-ip-and-port}

* Proxyman macOS 6.7.0 以降で利用できます
* 現在の待ち受け IP とポートを JSON 形式で取得します

<pre class="language-bash"><code class="lang-bash"><strong>/Applications/Proxyman.app/Contents/MacOS/proxyman-cli proxy-host
</strong></code></pre>

出力には `ip` と `port` のフィールドが含まれます。例：`{"ip":"192.168.1.10","port":9090}`。Proxyman が localhost でのみ待ち受けている場合、IP は `127.0.0.1` になります。

## 11. カスタム証明書（クライアントとサーバー）の追加・削除・置換  {#11-add-remove-replace-the-custom-certificates-client-and-server-}

* Proxyman macOS 6.10.0 以降で利用できます ✅
* パスワード付きの P12 証明書に対応しています
* クライアント証明書の場合、`--port` のデフォルトは `443` です

```bash
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli custom-cert add server ~/Desktop/mycert.p12 --password 123

/Applications/Proxyman.app/Contents/MacOS/proxyman-cli custom-cert add client ~/Desktop/mycert.p12 --password 123 --host myserver.com --port 443

/Applications/Proxyman.app/Contents/MacOS/proxyman-cli custom-cert replace server ~/Desktop/mycert.p12 --password 123 --name mycert.p12

/Applications/Proxyman.app/Contents/MacOS/proxyman-cli custom-cert replace client ~/Desktop/mycert.p12 --password 123 --host myserver.com --port 443

/Applications/Proxyman.app/Contents/MacOS/proxyman-cli custom-cert remove server --name mycert.p12

/Applications/Proxyman.app/Contents/MacOS/proxyman-cli custom-cert remove client --host myserver.com --port 443
```

## 12. External Proxy の CLI {#12-external-proxy-cli}

* Proxyman macOS 6.12.0 以降で利用できます ✅

### 有効化 {#enable}

保存済みの設定を変更せずに External Proxy を有効にします：

```bash
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli external-proxy enable
```

* プロキシモードを指定して有効にし、設定する：

```bash
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli external-proxy enable http --host proxy.example.com --port 8080
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli external-proxy enable https --host proxy.example.com --port 8443
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli external-proxy enable socks --host proxy.example.com --port 1080
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli external-proxy enable pac --url https://example.com/proxy.pac
```

### 無効化 {#disable}

External Proxy 機能全体を無効にします：

```bash
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli external-proxy disable
```

* 特定のプロキシモードのみを無効にする：

```bash
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli external-proxy disable http
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli external-proxy disable https
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli external-proxy disable socks
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli external-proxy disable pac
```

### 設定を開く {#open-the-settings}

Proxyman で External Proxy の設定ウィンドウを開きます：

```bash
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli external-proxy open
```

## 13. すべてのデバッグツールの CRUD {#13-crud-for-all-debugging-tools}

> **ヒント:** Proxyman macOS 6.14.0 以降でのみ利用できます

### 対応ツール {#supported-tools}

`block-list`、`allow-list`、`ssl-proxying`、`map-local`、`map-remote`、`breakpoint`、`scripting`、`network-condition`、`reverse-proxy`、`protobuf`、`dns-spoofing` に対応しています。

### よく使うコマンド {#common-commands}

`<tool>` には対応ツールのいずれかを、`<id>` には `list` または `get` で取得したルール ID を指定します。

```bash
# Read rules
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli rules <tool> list
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli rules <tool> list --enabled true
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli rules <tool> get <id>

# Change one rule
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli rules <tool> update <id> --name "New name"
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli rules <tool> delete <id>

# Turn a whole tool on or off
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli rules <tool> enable
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli rules <tool> disable

# Turn one rule on or off
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli rules <tool> enable <id>
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli rules <tool> disable <id>
```

`enable <id>` は、必要に応じてそのツールも有効にします。ツールを無効にしても、各ルール個別の有効／無効の設定は保持されます。更新で変更されるのは送信したフィールドのみです。delete はルールをすぐに削除します。

`map-local`、`map-remote`、`breakpoint`、`scripting` には、ルールフォルダを管理するための `folders` コマンドもあります。また、`list` と `create` のコマンドでは `--folder <name or id>` を指定できます。オプションを確認するには、`/Applications/Proxyman.app/Contents/MacOS/proxyman-cli rules map-local folders --help` を実行してください。

### ルールを作成 {#create-a-rule}

以下は最も簡単な作成コマンドです。オプションのフラグを指定すると、より多くのフィールドを設定できます。オプションは `/Applications/Proxyman.app/Contents/MacOS/proxyman-cli rules <tool> create --help` を実行すると確認できます。

```bash
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli rules block-list create https://ads.example.com/*
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli rules allow-list create https://api.example.com/*
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli rules ssl-proxying create '*.example.com' --list include
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli rules map-local create https://api.example.com/* --path ./response.json
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli rules map-remote create https://old.example.com/* https://new.example.com/
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli rules breakpoint create https://api.example.com/* --phase both
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli rules scripting create https://api.example.com/* --script-file ./rule.js
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli rules network-condition create --profile 3g
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli rules reverse-proxy create https://upstream.example.com --local-port 8080
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli rules protobuf create https://api.example.com/* --request-type package.Request
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli rules dns-spoofing create example.com 127.0.0.1
```

ツールが対応している場合、共通のルールフラグとして `--name`、`--enabled true|false`、`--method`、`--match wildcard|regex`、`--include-subpaths true|false` があります。名前は省略可能です。任意の値を省略すると、Proxyman はそのツールの通常のデフォルト値を使用します。

### JSON 入力 {#json-input}

作成と更新では、`--input <file>` を使って JSON オブジェクトを送信できます。`--input -` を指定すると、標準入力から JSON を読み取ります。`--input` とフィールドのフラグは併用しないでください。

```bash
printf '%s' '{"url":"https://api.example.com/*","name":"Local API","enabled":true}' \
  | /Applications/Proxyman.app/Contents/MacOS/proxyman-cli rules map-local create --input -

/Applications/Proxyman.app/Contents/MacOS/proxyman-cli rules map-local update <id> --input ./map-local-change.json
```

Proxyman が終了している場合、コマンドは `ok: false` と `app_not_running` エラーコードを含む JSON を返します。入力エラーの終了コードは `2`、その他のエラーの終了コードは `1` です。

## 14. 企業ポリシー {#14-company-policy}

### MCP（Proxyman macOS 6.15.0 以降） {#mcp-proxyman-macos-6150}

* Proxyman が終了している場合でも、[MCP](https://proxyman.com/docs/ja/mcp) 機能を有効または無効にできます
* コマンドラインから MCP を無効にすると、ユーザーは Settings からそれを再び有効にできません

MCP を無効にし、Settings のトグルをロックします：

```
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli mcp off
```

MCP を有効にし、トグルのロックを解除します：

```
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli mcp on
```

## 15. HTTP バージョン {#15-http-version}

グローバルの [HTTP/2](https://proxyman.com/docs/ja/basic-features/http2) ポリシーを確認または変更します。Proxyman は起動したままにしてください。これらのコマンドは、MCP が無効になっていても動作します。

```bash
# Read the current policy
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli http-version status

# Prefer HTTP/2, with HTTP/1.1 fallback
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli http-version set prefer_http2

# Turn the HTTP/2 preference off
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli http-version set http1_only
```

HTTP/2 はデフォルトでオフになっています。ポリシーを変更すると、アクティブな HTTP、WebSocket、Server-Sent Events の接続がすべて閉じられ、Compose クライアントが更新されます。現在のポリシーを再度設定しても、接続は開いたままになります。

このポリシーは、リクエストがどのプロトコルを使ったかを証明するものではありません。キャプチャしたリクエストとアップストリーム接続を確認してください。Network Extension でキャプチャしている場合、`h2` のみを提示するクライアントは、`http1_only` の設定でも HTTP/2 を維持します。

どちらのコマンドも JSON を返します。`status` の出力には `httpVersionMode` と `http2Enabled` が含まれ、`set` の出力にはさらに `previousMode` と `changed` が含まれます。たとえば、HTTP/1 から HTTP/2 優先に変更すると、次のように返されます：

```json
{
  "success": true,
  "data": {
    "httpVersionMode": "prefer_http2",
    "http2Enabled": true,
    "previousMode": "http1_only",
    "changed": true
  }
}
```

## 16. Network Extension の管理 {#16-network-extension}

コマンドラインから [Network Extension](https://proxyman.com/docs/ja/advanced-features/network-extension) のインストールとキャプチャを管理します。Proxyman は起動したままにしてください。MCP を有効にする必要はありません。

> **備考:** Network Extension には、直接配布版の Proxyman と macOS 26 以降が必要です。インストールとキャプチャには Proxyman PRO が必要です。ステータスの確認とアンインストールは、PRO がなくても利用できます。Setapp は Network Extension に対応していません。

```bash
# Read installation and capture status without changing either
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli network-extension status

# Install or update the bundled extension without enabling capture
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli network-extension install

# Enable capture, installing the extension if necessary
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli network-extension enable

# Stop capture and keep the extension installed
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli network-extension disable

# Retry requested installation or capture after resolving an error
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli network-extension retry

# Stop capture and remove the extension and its saved network configurations
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli network-extension uninstall
```

`install` は、キャプチャがすでにオフであれば、オフのままにします。`enable` はキャプチャを開始し、ヘルパーを使うシステムプロキシをオフにします。Network Extension のキャプチャがオンの間は、システムプロキシを有効にできません。

`disable` と `uninstall` は、直接の TCP 接続を含め、既存の接続をプロバイダ経由ですべて閉じます。その後、システムプロキシの動作は **Auto Override System Proxy Settings at Launch** に従います。

macOS から承認または再起動を求められることがあります。その手順を完了してから、`network-extension status` をもう一度実行してください。コマンドが成功したということは、リクエストが受け付けられたことを意味するだけで、インストールやキャプチャが完了したことを意味するわけではありません。操作がビジー状態になったり、タイムアウトしたりした場合は、繰り返す前にステータスを確認してください。

HTTPS の復号には、引き続き信頼された Proxyman 証明書と、一致する SSL Proxying ルールが必要です。新しく開いた接続をキャプチャするには、クライアントを再接続してください。

### JSON ステータスの読み方 {#read-the-json-status}

| フィールド | 意味 |
| --- | --- |
| `supported` | このアプリと macOS のバージョンが Network Extension に対応しているかどうか。非対応の環境では `false` を返し、変更を拒否します。 |
| `installed`, `installedBuild`, `bundledBuild` | macOS が報告するインストール状況と、実行中のアプリに同梱されているビルド。 |
| `systemExtensionEnabled` | macOS がインストール済みの拡張機能を有効と報告しているかどうか。 |
| `proAvailable` | インストールとキャプチャに Proxyman PRO が利用可能かどうか。 |
| `captureEnabled` | キャプチャが要求されているかどうか。 |
| `captureActive` | プロバイダがキャプチャセッションを受け付けたかどうか。 |
| `state`, `message` | アプリの現在の状態と、わかりやすい説明。 |
| `operationPending` | インストール、削除、キャプチャの開始のいずれかが進行中かどうか。 |
| `approvalRequired`, `restartRequired` | 承認または再起動が必要かどうか。 |
| `removalPending` | アプリを再起動した後も含め、macOS に削除待ちの拡張機能レコードが残っているかどうか。 |
| `systemProxyEnabled` | Proxyman が現在、macOS のシステムプロキシを有効と報告しているかどうか。 |

対応している環境では、これらのフィールドは `data` の下に返されます。`disable` はインストールの問い合わせを待たないため、そのレスポンスでは `installed` が `null` になります。最新のインストール状況を確認するには、`status` を使用してください。

### JSON 出力と終了コード {#json-output-and-exit-codes}

`http-version` と `network-extension` のコマンドグループは、`success`、利用可能な場合は `data`、失敗時は `error` を含む JSON レスポンスを返します。

* `0`：読み取りに成功したか、変更が受け付けられました。完了の確認は Network Extension のステータスで行ってください。
* `1`：コマンドが失敗した、Proxyman が終了している、またはコマンドがタイムアウトした。
* `64`：コマンドライン引数が不正です。パーサーのエラーとヘルプはプレーンテキストで出力されます。

インストールされているアプリが対応している構文は、次のコマンドで確認できます：

```bash
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli http-version --help
/Applications/Proxyman.app/Contents/MacOS/proxyman-cli network-extension --help
```
