Windows および Linux でのエンドポイント オーバーライド
許可されたローカル クライアントの固定 HTTPS エンドポイントを、スコープ付きキャプチャ、TLS トラスト、ストリーミング、ロールバックを使用して、mitmproxy 経由でルーティングします。
クライアントの組み込みを使用する ベース URL / カスタム エンドポイント / BYOK 可能な限り設定してください。見る 接続ガイド そして GitHub コパイロット。ローカル HTTPS インターセプトは、エンドポイントを変更できないクライアントのためのオプションのフォールバックであり、Model Gate を使用するための要件ではありません。
これは普遍的な互換性はありません。 クライアントは、Model Gate アカウントでサポートされているプロトコル、パス、モデルを送信し、ローカル認証局を受け入れ、Model Gate API キーの構成を許可する必要があります。証明書の固定、プライベート トラスト ストア、署名付きリクエスト、ハードコードされたモデル、またはリモート拡張ホストにより、この方法が機能しない可能性があります。 URL を書き換えても、OpenAI Chat Completions を Anthropic メッセージや応答に変換したり、モデル機能を追加したり、GitHub 認証を置き換えたりすることはありません。
自分が所有する、または検査を許可されているアプリケーションとトラフィックのみを傍受します。管理対象ワークステーションに関する承認を取得します。 mitmproxy は、復号化されたプロンプト、ソース コード、および認証ヘッダーを確認します。ローカル CA 秘密キーは、それを信頼するクライアントに対して HTTPS サーバーになりすますことができます。 CA 秘密キーを共有したり、編集されていないフロー/HAR ファイルをエクスポートしたり、UI をネットワークに公開したり、TLS 検証を無効にしたりしないでください。
この例で変わること
この例では、このソースのオリジンを、このサイトのドキュメントに示されているモデル API のオリジンに正確にマップします。
https://api.deepseek.com/v1/chat/completions
-> local mitmproxy
-> https://api.model-gate.com/v1/chat/completions
を設定します 専用の Model Gate API キーDeepSeek キーではなく、クライアントの資格情報フィールドにあります。有効な Model Gate モデルまたは管理者が管理するエイリアスを選択します。 モデルカタログ。このガイドに示されているモデル API オリジンと一致する API キーを使用します。パネルまたはパートナー API ホストは使用しないでください。
このルールは、HTTP メソッド、パス、クエリ、JSON 本文、 model、 Authorization、または JSON stream 価値。 宛先と HTTP ホスト / HTTP/2 :authority は変更されます。アップストリーム TLS は新しい宛先に接続します。 HTTP バージョン、ヘッダーのケーシング/順序、接続ヘッダー、およびフレーミングも異なる場合があります。これは、すべてのヘッダーまたはネットワーク トラフィックをバイト単位で保存するわけではありません。
応答のみのストリーミングを準備する (両方のシステム)
以下を名前を付けて保存します model-gate-response-stream.py 作業ディレクトリ内にあります。同じファイルが、PHP アプリケーション内のリリースに含まれています。 deploy/client-tools/;これは mitmproxy 内で実行され、ネイティブ パッケージを使用する場合は、別途 Python をインストールする必要はありません。
"""Keep map_remote requests buffered; stream responses without retaining bodies."""
from mitmproxy import ctx, exceptions, http
def configure(updated: set[str]) -> None:
if ctx.options.stream_large_bodies is not None:
raise exceptions.OptionsError(
"Unset stream_large_bodies: map_remote must run before request forwarding."
)
def requestheaders(flow: http.HTTPFlow) -> None:
flow.request.stream = False
def responseheaders(flow: http.HTTPFlow) -> None:
if flow.response is not None:
flow.response.stream = True
内蔵の map_remote アドオンは宛先を書き換えます リクエスト フック、リクエスト本文が読み取られた後。書き換えが完了するまで、リクエストのストリーミングを無効にしておきます。 使用しないでください --set stream_large_bodies=1 このレシピでは: 書き換えの前に元のリクエストを転送できます。上記の小さなアドオンは、JSON 本文の変更やリクエストの再生を行わずに、SSE を含む応答ストリーミングのみを有効にします。
以下のコマンドは使用します --set stream_large_bodies 等号や値を使用しない場合 このオプション設定をリセットするには None、ストリームされたボディの保持を明示的に無効にします。アドオンは、後でグローバル ストリーミングしきい値を有効にすることを拒否します。この専用セッションから他のリクエスト ストリーミング/書き換えアドオンを削除し、クライアントにキーを配置する前に起動エラーを解決してください。プロキシはフェールクローズされた資格情報境界ではありません。最初にダミー キーを使用してルートを検証してください。
Windows: Visual Studio の例
公式ネイティブ Windows パッケージを次からインストールします。 mitmproxy ダウンロード。 PowerShellを再度開いて確認してください mitmweb --version。この Windows プロセスの例では、WSL 内にインストールしないでください。
このインストールのローカル CA を作成して信頼する
プロキシを実行するのと同じ Windows アカウントで 1 回起動します。
mitmweb --listen-host 127.0.0.1 --web-host 127.0.0.1
起動後、 で停止します Ctrl+C。 mitmproxy は CA を次の場所に作成します %USERPROFILE%\.mitmproxy。好む 現在のユーザー あなたが実行しているアプリケーションに対する信頼:
$ca = Join-Path $env:USERPROFILE '.mitmproxy\mitmproxy-ca-cert.cer'
if (-not (Test-Path -LiteralPath $ca)) { throw 'Start mitmweb once under this account first.' }
certutil -user -addstore Root "$ca"
if ($LASTEXITCODE -ne 0) { throw 'CA installation failed.' }
独自のインストールによって生成された CA のみを信頼します。 mitmproxy-ca-cert.cer は公開証明書です。 mitmproxy-ca.pem には秘密キーも含まれており、秘密にしておく必要があります。信頼を変更した後、Visual Studio を再起動します。
承認されたアプリケーションが特に必要な場合のみ ローカルマシン 信頼し、管理者特権の PowerShell を使用し、 certutil -addstore Root "$ca" それなし -user。これはマシン全体で CA を信頼し、より広範なセキュリティ変更であり、以下の一致するマシンストアの削除が必要です。下の高度 違う 管理者アカウントは別のプロファイルと CA を使用する場合があります。アカウント、証明書、プロキシ構成の一貫性を維持します。
目的のプロセスとホストのみをキャプチャする
Windows キャプチャ権限で必要な場合は、同じアカウント/プロファイルを使用してネイティブ PowerShell を管理者として実行します。まず Visual Studio を起動します。この例ではプロセス名をターゲットにしています devenv:
mitmweb --mode local:devenv `
--listen-host 127.0.0.1 --web-host 127.0.0.1 `
--allow-hosts '^api\.deepseek\.com(:443)?$' `
--set connection_strategy=lazy --set upstream_cert=false `
--set stream_large_bodies --set store_streamed_bodies=false `
-s .\model-gate-response-stream.py `
--set 'map_remote=|^https://api\.deepseek\.com(?::443)?/|https://api.model-gate.com/'
PowerShell の行継続バックティックの後にスペースを入れてはなりません。アンカーされたルールは、明示的なポート 443 を含む、指定された HTTPS オリジンのみに一致します。クエリ内で発生するプロバイダーのホスト名または別のホスト名は書き換えられません。ホスト許可リストは、選択したプロセスからの無関係な宛先の復号化を回避します。 lazy プラス upstream_cert=false 元のプロバイダーへの不必要な証明書スニッフィング接続を回避します。実際のアップストリームの TLS 検証は引き続き有効です。
Visual Studio は ない VSコード。拡張機能は、別の ServiceHub、言語サーバー、またはヘルパー プロセスを通じてリクエストを送信する場合があります。 devenv。キャプチャを拡大する前に、実際のネットワーク所有プロセスを特定します。 Visual Studio インスタンスを検査するには:
Get-Process -Name devenv | Select-Object Id, ProcessName, Path
交換する local:devenv と local:12345 実際の PID、または明示的に識別された PID のカンマ区切りリストを使用します。再起動後に PID が変更されます。使用しないでください $PID カスタム PowerShell 変数の場合。これは、PowerShell 自体のプロセスを指します。マシン全体に切り替えないでください --mode local 単に不足しているリクエストを表示させるだけです。
Linux: 同じスコープのマッピング
現在の公式 mitmproxy ビルドをインストールして確認します mitmweb --version そして uname -r。ローカル キャプチャは eBPF を使用します。公式サポートフロアは Linux です 6.8。から開始される特権ヘルパーが必要です sudo。走る mitmweb 通常のユーザーとして --mode local:... コマンドラインでその権限を要求できるようにします。プロキシ全体をルートに切り替えて誤って使用することを避けてください。 /root/.mitmproxy。
まず通常のアカウントで CA を初期化し、次に次の手順で停止します。 Ctrl+C:
mitmweb --listen-host 127.0.0.1 --web-host 127.0.0.1
アプリケーションの文書化されたカスタム CA メカニズムを優先します。の上 Ubuntu/Debian、システム トラスト ストアを使用するアプリケーションは、代わりにこのオプションのシステム全体のインストールを使用できます。
sudo install -m 0644 "$HOME/.mitmproxy/mitmproxy-ca-cert.pem" \
/usr/local/share/ca-certificates/model-gate-local-mitmproxy.crt
sudo update-ca-certificates
クライアントを再起動します。プライベート Java/ノード/ブラウザの信頼ストアまたは制限されたアプリケーションには、文書化された独自の信頼設定が必要な場合があります。 OS ストアにインポートしても、すべてのクライアントがそれを信頼することが保証されるわけではありません。他のディストリビューションでは、独自の CA ストア プロシージャが使用されます。
という名前のローカル VS Code プロセスの場合 code、マッピングは次のとおりです。
mitmweb --mode local:code \
--listen-host 127.0.0.1 --web-host 127.0.0.1 \
--allow-hosts '^api\.deepseek\.com(:443)?$' \
--set connection_strategy=lazy --set upstream_cert=false \
--set stream_large_bodies --set store_streamed_bodies=false \
-s ./model-gate-response-stream.py \
--set 'map_remote=|^https://api\.deepseek\.com(?::443)?/|https://api.model-gate.com/'
Windows の場合と同様、必ずしもエディター ウィンドウではなく、実際のリクエスト生成プロセス/PID を使用します。検査する ps -eo pid,comm,args そして代わりに local:12345 必要に応じて。 Linux の名前一致は最初の 16 文字に制限されます。 WSL でのローカル キャプチャはサポートされていないため、コンテナーにはこのモードのホスト ネットワークが必要です。 SSH/リモート拡張ホストからのトラフィックは、デスクトップだけでなく、そのプロセスが実行されるマシン上で構成する必要があります。
ストリーミング、パス、その他のプロバイダー
応答専用アドオンは、完全な応答を待たずに HTTP 応答を転送します。これは SSE トークンの配信にとって重要です。リクエストボディは次の時点までバッファリングされたままになります。 map_remote 目的地を変更しました。ストリーミング本文は、デフォルトでは検査のために保持されません。ヘッダーとステータスは引き続き役立ちます。キーのトラブルシューティングのみを目的として、ボディ保持またはフロー エクスポートを有効にしないでください。この設定はクライアントの JSON を変更しません。 stream フラグが設定されており、非ストリーミング プロバイダー ストリームを作成できません。
デフォルトのマッピングではパスが保持されます。クライアントが送信する /chat/completions それなし /v1 は引き続きそのパスを Model Gate に送信し、404 を受信する可能性があります。 この正規化が必要なパスを持つソース API のみ、を置き換えます map_remote 次の値を使用します:
map_remote=|^https://api\.deepseek\.com(?::443)?/(?:v1/)?|https://api.model-gate.com/v1/
これは意図的に 1 つ追加します /v1/ プレフィックス、既存のプレフィックス、残りのパスとクエリを保持します。これは、パスを変更する別のバリアントであり、原点のみの例ではありません。実際のプロンプトを送信する前に、結果のエンドポイントを確認してください。
別のプロバイダーの場合は、正確なソース ホスト名を置き換えます。 両方 allow-hosts そして map_remote、正規表現のドットをエスケープし、正しいターゲットの起点/パスを選択します。試合を固定し続ける ^https:// そしてホスト名の境界。広範な部分文字列置換は決して使用しないでください。既存の保存されたアドオンまたは書き換えルールによって結果が変わる可能性があるため、テストする前に mitmproxy 構成を検査してください。
受け入れとトラブルシューティング
最初に、ダミーの資格情報と非機密プロンプトを使用してルーティングをテストします。意図したターゲットでの認証の失敗が予想されます。宛先が確認された後でのみ、専用の限定キーを使用して意図的に小さなリクエストを 1 つ作成します。推論は請求可能です。 mitmweb で、宛先が目的の Model Gate API ホストであること、パスがサポートされていること、モデル ID/エイリアスが存在すること、HTTP ステータスが成功であることを確認します。 Model Gate リクエスト履歴を確認し、ストリーミング テキストが徐々に到着することを確認します。 Authorization ヘッダーまたはフロー エクスポートを証拠として公開しないでください。
キャプチャされたリクエストはありません。 実際のヘルパー/PID、キャプチャ権限、ローカル実行とリモート実行、ソースのホスト名、およびカーネルのサポート。
TLS 証明書の失敗。 CA/プロファイル/ストアを修正し、クライアントを再起動します。証明書の固定は互換性の制限であり、検証を無効にする理由ではありません。
401. クライアントは、一致するアカウント/API ドメインの Model Gate キーを使用する必要があります。 map_remote は資格情報を交換しません。
404. 実際のパスを検査します。原点のみのマッピングは追加されません /v1。
400または messages.0 / system エラー。 リクエストプロトコルの互換性を確認します。オリジンの書き換えでは、メッセージ ロールやその他の JSON フィールドは変換されません。
モデルが利用できません。 有効な正規 ID または既存のエイリアスを使用します。マッピングの名前は変更されません model。
ストリーミングが一斉に届きます。 応答専用アドオンが正常にロードされたことを確認し、クライアントの stream 値と実際のプロバイダーのサポート。グローバル リクエスト ストリーミングを有効にしないでください。
信頼を停止して削除する
インターセプトを停止する前に、クライアントを閉じるか、元のプロバイダー構成から Model Gate キーを削除してください。 それ以外の場合は、次の直接リクエストでそのキーが元のプロバイダーに送信される可能性があります。プロキシを停止すると失敗して終了するとは考えないでください。 Ctrl+C を使用して mitmweb を停止し、クライアントの通常のエンドポイント/キー設定を復元します。
Windowsの場合 現在のユーザー 上記でインポートした場合は、このインストールの正確な証明書のみを削除します。
$ca = Join-Path $env:USERPROFILE '.mitmproxy\mitmproxy-ca-cert.cer'
$cert = [System.Security.Cryptography.X509Certificates.X509Certificate2]::new($ca)
certutil -user -delstore Root $cert.Thumbprint
if ($LASTEXITCODE -ne 0) { throw 'CA removal failed; inspect the certificate store.' }
オプションの場合 ローカルマシン インポートし、昇格されたシェルを使用し、 certutil -delstore Root $cert.Thumbprint その代わり。一致する信頼できる証明書を特定して削除するまで、パブリック CA ファイルを保管してください。無関係の信頼できるルートを名前で削除しないでください。
上記の Ubuntu/Debian システム全体のインポートの場合:
sudo rm -- /usr/local/share/ca-certificates/model-gate-local-mitmproxy.crt
sudo update-ca-certificates --fresh
アプリケーション固有の CA 構成も削除します。クライアントを再起動します。キャプチャされた機密のアーティファクトを削除し、専用の Model Gate キーが公開されたり、意図しない宛先に送信されたりした場合はローテーションします。これらのワークステーションの手順では、nginx、サーバー トラスト ストア、本番環境を変更する必要はありません。 .env ファイルまたは Model Gate の TLS ポリシー。
公式リファレンス
2026 年 9 月 8 日にレビューされました。インストールされているオプションを確認してください mitmweb --options;クライアントのキャプチャと信頼の動作には、引き続きワークステーションでのテストが必要です。