ドキュメント & API

WhaleProxyを コードで制御。

ローカルの制御プレーン:ポート8091のREST、名前付きパイプ上のJSON-RPC、そしてCLI。いずれもGUIの内側にある同じコマンドセットです。

概要

APIは、ルーティングエンジンへのマシン間インターフェースです。デフォルトのベースURLはhttp://127.0.0.1:8091/v1で、入出力はJSONです。Settingsタブで有効化できます。

デフォルトではループバック(127.0.0.1)のみで待ち受けます。リモート制御のためにネットワークIPへバインドすることもできますが、その場合はTLSとファイアウォールの背後に配置してください。エンジンは昇格権限で動作し、マシンのすべてのネットワークトラフィックを制御するためです。

注目: WhaleProxyは実行中のプロセスのプロキシを変更できます。これは他のプロセス単位プロキシツールにはできないことです。

認証

すべてのリクエスト(/v1/healthzを除く)には、ヘッダーで送信するAPIキーが必要です。キーはCSPRNGで生成され、Settings → Generateで作成・更新できます。キーの比較は一定時間で行われます。

http
X-API-Key: <YOUR_API_KEY>
# hoặc
Authorization: Bearer <YOUR_API_KEY>

再ルーティング — 実行中のプロセスのプロキシを変更

pids、実行ファイル名、パス、識別ハッシュ、ニックネームでプロセスを選択し、新しいプロキシに向けます。/previewを使えば、適用せずにドライランを実行できます。

POST/v1/reroute実行中のプロセスを再ルーティング
POST/v1/reroute/previewどのPIDがマッチするかをプレビュー
POST/v1/reroute/clear再ルーティングを解除し、ルールに戻す
POST /v1/reroute
{ "match": { "nickname": "App 3" }, "proxy": "jp-2" }

→ 200 { "rerouted": 1, "flows_moved": 12 }

プロキシ

上流プール(socks5 / http / localnet)を管理します。テストはレイテンシと実際の出口IPを返します。

GET/v1/proxiesプロキシ一覧 + ステータス
POST/v1/proxies追加(単体 / 一括)
POST/v1/proxies/{alias}:testテスト → レイテンシ + 出口IP
DELETE/v1/proxies/{alias}削除 + 自動リバランス

ルール

永続的で先勝ちのルールを、現在および今後のプロセスに適用します。

GET/v1/rulesルールチェーンを一覧表示
POST/v1/rulesルールを追加
POST/v1/rules/reorder優先順位を並べ替え
POST/v1/config/reload設定を再読み込みし、稼働中に反映

プロセス

追跡中のプロセスを調べたり、ニックネームを付けたり、終了させたりできます。

GET/v1/processesプロセスのライブ一覧
GET/v1/processes/{pid}単一PIDの詳細
POST/v1/processes/{pid}/nicknameニックネームを設定
POST/v1/processes/{pid}/killプロセスを終了

統計 & イベント

プロセスごと・プロキシごとにバイト数/フロー/接続数を読み取り、起動/終了イベントをロングポーリングできます。

GET/v1/statsシステム全体の合計
GET/v1/stats/per-proxyプロキシごと
GET/v1/events/pollイベントをロングポーリング

コマンドライン

CLIは同じコマンドをラップします。--jsonを付けると機械可読な出力が得られます。エンジンの稼働中に実行できます。

cmd
$ whaleproxy proxies list --json
$ whaleproxy reroute --name chrome.exe --to jp-2
$ whaleproxy pin --nickname "App 3" --proxy us-1
$ whaleproxy stats --json

サンプル — Pythonから呼び出す

APIはプレーンなHTTPで、どの言語からでも呼び出せます。以下の例では、1つのプロセスを別のプロキシへ移動します。

python
import requests

API = "http://127.0.0.1:8091/v1"
H   = { "X-API-Key": "YOUR_KEY" }

# Đổi proxy của "App 3" sang jp-2, ngay khi đang chạy
r = requests.post(f"{API}/reroute", headers=H, json={
    "match": { "nickname": "App 3" },
    "proxy": "jp-2"
})
print(r.json())  # {'rerouted': 1, 'flows_moved': 12}
スクリプトで自動化

スクリプトで複数プロセスを一括再ルーティング

WhaleProxyをダウンロードし、SettingsでAPIを有効にして、コードでの操作を始めましょう。