Anul·lació del punt final a Windows i Linux
Encamineu el punt final HTTPS fix d'un client local autoritzat a través de mitmproxy, amb captura amb àmbit, confiança TLS, transmissió i retrocés.
Utilitzeu el sistema integrat d'un client URL base/punt final personalitzat/BYOK configuració sempre que sigui possible. Mireu Guies de connexió i GitHub Copilot. La intercepció local HTTPS és una alternativa opcional per a un client que no pot canviar el seu punt final, no és un requisit per utilitzar Model Gate.
Això no és universalment compatible. El client ha d'enviar un protocol, una ruta i un model compatibles amb el vostre compte de Model Gate, acceptar la vostra autoritat de certificació local i permetre configurar una clau de l'API Model Gate. La fixació de certificats, un magatzem de confiança privat, les sol·licituds signades, un model codificat en dur o un amfitrió d'extensió remota poden impedir que aquest mètode funcioni. Una reescriptura d'URL no converteix les finalitzacions de xat d'OpenAI en missatges o respostes antròpiques, no afegeix capacitats de model ni substitueix l'autenticació de GitHub.
Intercepteu només aplicacions i trànsit que teniu o teniu autoritzat a inspeccionar. Obtenir l'aprovació de les estacions de treball gestionades. mitmproxy veu indicacions desxifrades, codi font i capçaleres d'autenticació; la seva clau privada CA local pot suplantar els servidors HTTPS als clients que hi confien. No compartiu claus privades de CA, no exporteu fluxos/fitxers HAR no redactats, no exposeu la seva interfície d'usuari a la xarxa ni desactiveu la verificació TLS.
Què canvia aquest exemple
L'exemple mapeja exactament aquest origen d'origen amb l'origen de l'API del model que es mostra a la documentació d'aquest lloc:
https://api.deepseek.com/v1/chat/completions
-> local mitmproxy
-> https://api.model-gate.com/v1/chat/completions
Configura a clau de l'API Model Gate dedicada, no una clau DeepSeek, al camp de credencials del client. Trieu un model de Model Gate habilitat o un àlies gestionat per l'administrador del catàleg de models. Utilitzeu l'origen de l'API del model que es mostra en aquesta guia amb la seva clau d'API coincident; no utilitzeu el tauler ni l'amfitrió de l'API del partner.
La regla no edita intencionadament el mètode HTTP, el camí, la consulta, el cos JSON, model, Authorization, o el JSON stream valor. Canvia la destinació i l'hoste HTTP / HTTP/2:autoritat; TLS amunt es connecta a la nova destinació. La versió HTTP, l'encapçalament/ordre de la capçalera, les capçaleres de connexió i el marc també poden diferir. No és una preservació byte per byte de totes les capçaleres o trànsit de xarxa.
Prepara la transmissió de només resposta (ambdós sistemes)
Desa el següent com a model-gate-response-stream.py al vostre directori de treball. El mateix fitxer s'inclou a la versió dins de l'aplicació PHP a deploy/client-tools/; s'executa dins de mitmproxy i no necessita cap instal·lació separada de Python quan s'utilitza el paquet natiu.
"""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
El incorporat map_remote addon reescriu la destinació al fitxer petició ganxo, després de llegir el cos de la sol·licitud. Manteniu la transmissió de sol·licituds desactivada fins que s'hagi produït aquesta reescriptura. No utilitzar --set stream_large_bodies=1 amb aquesta recepta: pot reenviar la sol·licitud original abans de la reescriptura. El petit complement anterior només permet la transmissió de respostes, inclòs SSE, sense modificar el cos JSON ni reproduir les sol·licituds.
Les ordres següents utilitzen --set stream_large_bodies sense signe ni valor igual per restablir aquesta configuració opcional None, i desactivar explícitament la retenció del cos en temps real. El complement rebutja habilitar un llindar de transmissió global més tard. Elimineu altres complements de transmissió/reescriptura de sol·licituds d'aquesta sessió dedicada i resoleu qualsevol error d'inici abans de col·locar una clau al client. El servidor intermediari no és un límit de credencials tancat per error: primer valideu la ruta amb una clau simulada.
Windows: exemple de Visual Studio
Instal·leu el paquet oficial de Windows natiu des de Descàrregues mitmproxy. Torneu a obrir PowerShell i comproveu mitmweb --version. No instal·leu dins de WSL per a aquest exemple de procés de Windows.
Creeu i confieu en la CA local d'aquesta instal·lació
Comenceu una vegada amb el mateix compte de Windows que executarà el proxy:
mitmweb --listen-host 127.0.0.1 --web-host 127.0.0.1
Després de l'inici, atureu-lo amb Ctrl+C. mitmproxy crea la seva CA a %USERPROFILE%\.mitmproxy. Prefereix Usuari actual confia en una aplicació que s'executa com tu:
$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.' }
Confieu només en la CA generada per la vostra pròpia instal·lació. mitmproxy-ca-cert.cer és el certificat públic; mitmproxy-ca.pem també conté la clau privada i ha de romandre privada. Reinicieu Visual Studio després de canviar la confiança.
Només quan una sol·licitud aprovada ho necessiti específicament Màquina local confieu, utilitzeu un PowerShell elevat i certutil -addstore Root "$ca" sense -user. Això confia en la CA de tota la màquina, és un canvi de seguretat més ampli i requereix l'eliminació de la botiga de la màquina corresponent a continuació. Elevació sota a diferents El compte d'administrador pot utilitzar un perfil i una CA diferents; mantenir la configuració del compte, del certificat i del proxy coherent.
Captureu només el procés i l'amfitrió previst
Executeu PowerShell natiu com a administrador quan ho requereixin els permisos de captura de Windows, utilitzant el mateix compte/perfil. Start Visual Studio first. This example targets the process name 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/'
No hi ha d'haver espais després del retrocés de continuació de línia de PowerShell. La regla ancorada només coincideix amb l'origen HTTPS especificat, inclòs un port explícit 443; un nom d'amfitrió del proveïdor que es produeix dins d'una consulta o un altre nom d'amfitrió no es reescriu. La llista de permisos d'amfitrió evita desxifrar destinacions no relacionades del procés seleccionat. lazy més upstream_cert=false evita una connexió innecessària de rastreig de certificats amb el proveïdor original. La verificació TLS del corrent amunt real encara està activada.
Visual Studio és no Codi VS. Una extensió pot enviar sol·licituds mitjançant un ServiceHub, un servidor d'idiomes o un procés d'ajuda independent en lloc de devenv. Identifiqueu el procés real de propietat de la xarxa abans d'ampliar la captura. Per inspeccionar les instàncies de Visual Studio:
Get-Process -Name devenv | Select-Object Id, ProcessName, Path
Substitueix local:devenv amb local:12345 utilitzant el PID real, o una llista separada per comes de PID identificats explícitament. Els PID canvien després dels reinicis. No utilitzar $PID per a una variable de PowerShell personalitzada; fa referència al procés propi de PowerShell. No canvieu a màquina sencera --mode local només per fer aparèixer una sol·licitud que falta.
Linux: el mateix mapeig d'abast
Instal·leu una versió oficial actual de mitmproxy i comproveu-ho mitmweb --version i uname -r. Local Capture utilitza eBPF; la planta de suport oficial és Linux 6.8. Es necessita un ajudant privilegiat per començar sudo. Corre mitmweb com el vostre usuari habitual --mode local:... a la línia d'ordres perquè pugui sol·licitar aquest privilegi; eviteu canviar tot el proxy a root i utilitzar-lo accidentalment /root/.mitmproxy.
Primer inicialitzeu la CA amb el vostre compte normal i després atureu-ho Ctrl+C:
mitmweb --listen-host 127.0.0.1 --web-host 127.0.0.1
Preferiu el mecanisme de CA personalitzat documentat de l'aplicació. Encès Ubuntu/Debian, les aplicacions que utilitzen el magatzem de confiança del sistema poden utilitzar aquesta instal·lació opcional per a tot el sistema:
sudo install -m 0644 "$HOME/.mitmproxy/mitmproxy-ca-cert.pem" \
/usr/local/share/ca-certificates/model-gate-local-mitmproxy.crt
sudo update-ca-certificates
Reinicieu el client. Un magatzem de confiança privat de Java/Node/navegador o una aplicació confinada pot necessitar la seva pròpia configuració de confiança documentada; importar a la botiga del sistema operatiu no garanteix que tots els clients hi confien. Altres distribucions utilitzen els seus propis procediments de botiga CA.
Per a un procés local VS Code anomenat code, el mapeig és:
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/'
Com a Windows, utilitzeu el procés/PID real de producció de sol·licituds, no necessàriament la finestra de l'editor. Inspeccionar ps -eo pid,comm,args i substitut local:12345 segons sigui necessari. La concordança de noms de Linux està limitada als 16 primers caràcters. La captura local a WSL no és compatible i els contenidors necessiten una xarxa d'amfitrió per a aquest mode. El trànsit d'un amfitrió d'extensió remota/SSH s'ha de configurar a la màquina on s'executa el procés, no només a l'escriptori.
Streaming, camins i altres proveïdors
El complement de només resposta reenvia respostes HTTP sense esperar la resposta completa, la qual cosa és important per al lliurament de testimoni SSE. Els cossos de sol·licitud romanen a la memòria intermèdia fins map_remote ha canviat de destinació. Els cossos de transmissió no es conserven per inspecció per defecte; les capçaleres i l'estat segueixen sent útils. No activeu la retenció del cos ni l'exportació de flux només per solucionar problemes d'una clau. Aquesta configuració no canvia el JSON del client stream marca i no pot fer una emissió de proveïdor que no sigui de streaming.
El mapatge predeterminat conserva els camins. Un client enviant /chat/completions sense /v1 encara enviarà aquest camí a Model Gate i pot rebre 404. Només per a una API font els camins de la qual se sap que requereixen aquesta normalització, substitueix el map_remote valor amb:
map_remote=|^https://api\.deepseek\.com(?::443)?/(?:v1/)?|https://api.model-gate.com/v1/
Això afegeix un deliberadament /v1/ prefix, conservant-ne un existent, el camí restant i la consulta. És una variant independent de canvi de camí, no l'exemple només d'origen. Verifiqueu el punt final resultant abans d'enviar una sol·licitud real.
Per a un proveïdor diferent, substituïu el nom d'amfitrió d'origen exacte tots dos allow-hosts i map_remote, escapa dels punts d'expressió regular i tria l'origen/camí de destinació correcte. Mantingueu el partit ancorat amb ^https:// i un límit de nom d'amfitrió; No utilitzeu mai un reemplaçament de subcadenes amples. Els complements desats existents o les regles de reescriptura poden alterar el resultat, així que inspeccioneu la vostra configuració de mitmproxy abans de provar.
Acceptació i resolució de problemes
Primera prova d'encaminament amb una credencial ficticia i un missatge no sensible; s'espera un error d'autenticació a l'objectiu previst. Només després de confirmar la destinació, feu una sol·licitud deliberadament petita amb una clau limitada dedicada; la inferència pot ser facturable. A mitmweb, comproveu que la destinació és l'amfitrió de l'API Model Gate previst, el camí és compatible, l'identificador/àlies del model existeix i l'estat HTTP és correcte. Comproveu l'historial de sol·licituds de Model Gate i confirmeu que el text transmès arriba progressivament. No publiqueu una capçalera d'autorització ni una exportació de flux com a prova.
Cap sol·licitud capturada. L'ajudant/PID real, privilegis de captura, execució local versus remota, nom d'amfitrió d'origen i suport del nucli.
Error del certificat TLS. Corregiu CA/perfil/magatzem i reinici del client. La fixació del certificat és una limitació de compatibilitat, no un motiu per desactivar la verificació.
401. El client ha d'utilitzar una clau Model Gate per al domini de compte/API coincident; map_remote no intercanvia credencials.
404. Inspeccioneu el camí real; el mapeig només d'origen no s'afegeix /v1.
400 o messages.0 / system error. Comproveu la compatibilitat del protocol de sol·licitud. Una reescriptura d'origen no tradueix els rols dels missatges ni altres camps JSON.
Model no disponible. Utilitzeu un identificador canònic habilitat o un àlies existent; mapping no canvia el nom model.
El streaming arriba tot alhora. Comproveu que el complement de només resposta s'ha carregat correctament, el del client stream valor i suport real del proveïdor. No activeu la transmissió de sol·licituds globals.
Atura i elimina la confiança
Abans d'aturar la intercepció, tanqueu el client o elimineu la clau Model Gate de la configuració original del proveïdor. En cas contrari, la seva següent sol·licitud directa pot enviar aquesta clau al proveïdor original. No suposeu que l'aturada del servidor intermediari no es tanca. Atureu mitmweb amb Ctrl+C i, a continuació, restaureu la configuració normal del punt final/de la clau del client.
Per a Windows Usuari actual import anterior, elimineu només el certificat exacte d'aquesta instal·lació:
$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.' }
Per a l'opcional Màquina local importar, utilitzar un shell elevat i certutil -delstore Root $cert.Thumbprint en canvi. Conserveu el fitxer CA públic fins que hàgiu identificat i eliminat el certificat de confiança coincident; no suprimiu les arrels de confiança no relacionades pel nom.
Per a la importació de tot el sistema Ubuntu/Debian anterior:
sudo rm -- /usr/local/share/ca-certificates/model-gate-local-mitmproxy.crt
sudo update-ca-certificates --fresh
Elimineu també qualsevol configuració de CA específica de l'aplicació. Reinicieu els clients. Suprimiu els artefactes capturats sensibles i gireu la clau dedicada Model Gate si s'ha exposat o s'ha enviat a una destinació no desitjada. Aquests passos de l'estació de treball no requereixen canviar nginx, botigues de confiança del servidor, producció .env fitxers o la política TLS de Model Gate.
Referències oficials
Revisat el 2026-09-08. Confirmeu les opcions del vostre instal·lat mitmweb --options; La captura del client i el comportament de confiança encara requereixen proves a la vostra estació de treball.
- mitmproxy Modes i limitacions de captura local
- mapatge i transmissió d'URL mitmproxy
- Exemple de complement de transmissió de resposta mitmproxy
- implementació mitmproxy map_remote request-hook
- opcions mitmproxy
- Certificats de CA mitmproxy i fixació
- mitmproxy destinació i autoritat de la sol·licitud HTTP
- Microsoft cert
- Instal·lació i eliminació d'Ubuntu CA