Suprascrierea punctului final pe Windows și Linux
Direcționați un punct final HTTPS fix al unui client local autorizat prin mitmproxy, cu captură scoped, încredere TLS, streaming și rollback.
Utilizați sistemul încorporat al unui client Adresa URL de bază / Punct final personalizat / BYOK setarea ori de câte ori este posibil. Vedea Ghiduri de conectare şi Copilotul GitHub. Interceptarea HTTPS locală este o rezervă opțională pentru un client care nu își poate schimba punctul final, nu o cerință pentru utilizarea Model Gate.
Acest lucru nu este compatibil universal. Clientul trebuie să trimită un protocol, cale și model acceptate de contul dvs. Model Gate, să accepte autoritatea locală de certificare și să vă permită să configurați o cheie API Model Gate. Fixarea certificatelor, un magazin de încredere privat, cererile semnate, un model hard-codat sau o gazdă de extensie la distanță pot împiedica funcționarea acestei metode. O rescrie URL nu convertește completările de chat OpenAI în mesaje sau răspunsuri antropice, nu adaugă capabilități de model și nu înlocuiește autentificarea GitHub.
Interceptați doar aplicațiile și traficul pe care îl dețineți sau sunteți autorizat să le inspectați. Obțineți aprobarea pentru stațiile de lucru gestionate. mitmproxy vede solicitări decriptate, codul sursă și anteturile de autentificare; cheia sa privată CA locală poate uzurpa identitatea serverelor HTTPS către clienții care au încredere în el. Nu partajați cheile private CA, nu exportați fluxuri/fișiere HAR neexprimate, nu vă expuneți interfața de utilizare în rețea sau nu dezactivați verificarea TLS.
Ce schimbă acest exemplu
Exemplul mapează exact această origine sursă la originea Model API prezentată în documentația acestui site:
https://api.deepseek.com/v1/chat/completions
-> local mitmproxy
-> https://api.model-gate.com/v1/chat/completions
Configurați a cheie API dedicată Model Gate, nu o cheie DeepSeek, în câmpul de acreditări al clientului. Alegeți un model Model Gate activat sau un alias gestionat de administrator din catalog de modele. Utilizați originea modelului API prezentată în acest ghid cu cheia API corespunzătoare; nu utilizați panoul sau gazda API-ului Partner.
Regula nu editează în mod intenționat metoda HTTP, calea, interogarea, corpul JSON, model, Authorization, sau JSON stream valoare. Schimbă destinația și HTTP Host / HTTP/2 :authority; TLS în amonte se conectează la noua destinație. Versiunea HTTP, carcasa/comanda antetului, anteturile de conexiune și încadrarea pot, de asemenea, să difere. Nu este păstrarea octet-cu-octet a tuturor anteturilor sau a traficului de rețea.
Pregătiți fluxul numai de răspuns (ambele sisteme)
Salvați următoarele ca model-gate-response-stream.py în directorul dvs. de lucru. Același fișier este inclus în versiunea în interiorul aplicației PHP la deploy/client-tools/; rulează în interiorul mitmproxy și nu necesită instalare separată a Python atunci când se utilizează pachetul nativ.
"""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
Cel încorporat map_remote addon rescrie destinația în cerere cârlig, după ce corpul cererii este citit. Păstrați dezactivarea fluxului de solicitări până când se produce rescrierea. Nu utilizați --set stream_large_bodies=1 cu aceasta reteta: poate transmite cererea originală înainte de rescriere. Micul supliment de mai sus permite numai transmiterea răspunsurilor, inclusiv SSE, fără a modifica corpul JSON sau a relua solicitările.
Comenzile de mai jos folosesc --set stream_large_bodies fără semn sau valoare egală pentru a reseta această setare opțională la Noneși dezactivați în mod explicit reținerea corpurilor transmise în flux. Suplimentul respinge activarea ulterioară a unui prag global de streaming. Eliminați alte suplimente de transmitere a cererilor/rescrierea din această sesiune dedicată și rezolvați orice erori de pornire înainte de a plasa o cheie în client. Proxy-ul nu este o limită de acreditări închisă cu eșec: validați mai întâi ruta cu o cheie falsă.
Windows: exemplu Visual Studio
Instalați pachetul oficial Windows nativ din mitmproxy Descărcări. Redeschideți PowerShell și verificați mitmweb --version. Nu instalați în WSL pentru acest exemplu de proces Windows.
Creați și aveți încredere în CA locală a acestei instalări
Începeți o dată cu același cont Windows care va rula proxy-ul:
mitmweb --listen-host 127.0.0.1 --web-host 127.0.0.1
După pornire, opriți-l cu Ctrl+C. mitmproxy își creează CA în %USERPROFILE%\.mitmproxy. Prefera Utilizator curent încredere pentru o aplicație care rulează ca dvs.:
$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.' }
Aveți încredere numai în CA generată de propria dvs. instalare. mitmproxy-ca-cert.cer este certificatul public; mitmproxy-ca.pem conține, de asemenea, cheia privată și trebuie să rămână privată. Reporniți Visual Studio după schimbarea încrederii.
Doar atunci când o cerere aprobată are nevoie în mod specific Mașină locală încredere, utilizați un PowerShell ridicat și certutil -addstore Root "$ca" fără -user. Acest lucru are încredere în CA la nivel de mașină, este o schimbare mai amplă de securitate și necesită eliminarea mașinii de mai jos. Altitudine sub a diferit contul de administrator poate folosi un alt profil și CA; păstrați consecvența contului, certificatului și configurației proxy.
Capturați numai procesul și gazda intenționate
Rulați PowerShell nativ ca administrator atunci când este necesar de permisiunile de capturare Windows, folosind același cont/profil. Porniți mai întâi Visual Studio. Acest exemplu vizează numele procesului 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/'
Nu trebuie să existe spații după bifarea backtick-ului pentru continuarea liniei de la PowerShell. Regula ancorată se potrivește numai cu originea HTTPS specificată, inclusiv un port explicit 443; un nume de gazdă a furnizorului care apare într-o interogare sau un alt nume de gazdă nu este rescris. Lista de gazdă permisă evită decriptarea destinațiilor care nu au legătură din procesul selectat. lazy plus upstream_cert=false evită o conexiune inutilă de sniffing de certificat cu furnizorul original. Verificarea TLS a fluxului real în amonte este încă activată.
Visual Studio este nu Cod VS. O extensie poate trimite cereri printr-un ServiceHub separat, un server de limbă sau un proces de ajutor, mai degrabă decât devenv. Identificați procesul real de deținere a rețelei înainte de a extinde captarea. Pentru a inspecta instanțe Visual Studio:
Get-Process -Name devenv | Select-Object Id, ProcessName, Path
Înlocui local:devenv cu local:12345 folosind PID-ul real sau o listă separată prin virgulă de PID-uri identificate în mod explicit. PID-urile se modifică după reporniri. Nu utilizați $PID pentru o variabilă PowerShell personalizată; se referă la propriul proces PowerShell. Nu treceți la mașină completă --mode local doar pentru a face să apară o cerere lipsă.
Linux: aceeași mapare scoped
Instalați o versiune mitmproxy oficială actuală și verificați mitmweb --version şi uname -r. Local Capture folosește eBPF; etajul oficial de asistență este Linux 6.8. Are nevoie de un ajutor privilegiat început sudo. Fugi mitmweb ca utilizatorul tău obișnuit cu --mode local:... pe linia de comandă, astfel încât să poată solicita acel privilegiu; evitați comutarea întregului proxy la root și utilizarea accidentală /root/.mitmproxy.
Mai întâi inițializați CA în contul dvs. obișnuit, apoi opriți-vă cu Ctrl+C:
mitmweb --listen-host 127.0.0.1 --web-host 127.0.0.1
Preferați mecanismul CA personalizat documentat al aplicației. Pe Ubuntu/Debian, aplicațiile care folosesc depozitul de încredere de sistem pot folosi în schimb această instalare opțională la nivelul întregului sistem:
sudo install -m 0644 "$HOME/.mitmproxy/mitmproxy-ca-cert.pem" \
/usr/local/share/ca-certificates/model-gate-local-mitmproxy.crt
sudo update-ca-certificates
Reporniți clientul. Un magazin de încredere Java/Nod/browser privat sau o aplicație limitată poate avea nevoie de propria sa setare de încredere documentată; importarea în magazinul OS nu garantează că fiecare client are încredere în el. Alte distribuții folosesc propriile proceduri CA-store.
Pentru un proces local VS Code numit code, maparea este:
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/'
Ca și în Windows, utilizați procesul/PID-ul de producere a cererilor, nu neapărat fereastra editorului. Inspecta ps -eo pid,comm,args și înlocuitor local:12345 după cum este necesar. Potrivirea numelui Linux este limitată la primele 16 caractere. Captura locală pe WSL nu este acceptată, iar containerele au nevoie de rețea gazdă pentru acest mod. Traficul de la o gazdă de extensie SSH/la distanță trebuie configurat pe mașina pe care rulează acel proces, nu doar pe desktop.
Streaming, căi și alți furnizori
Suplimentul numai pentru răspunsuri transmite răspunsuri HTTP fără a aștepta răspunsul complet, ceea ce este important pentru livrarea token-ului SSE. Corpurile de solicitare rămân în tampon până la map_remote a schimbat destinația. Organismele de streaming nu sunt reținute pentru inspecție în mod implicit; anteturile și starea rămân utile. Nu activați reținerea corpului sau exportul fluxului doar pentru a depana o cheie. Această setare nu modifică JSON-ul clientului stream semnalizați și nu poate face un flux de furnizor non-streaming.
Maparea implicită păstrează căile. Un client care trimite /chat/completions fără /v1 va trimite în continuare acea cale către Model Gate și poate primi 404. Numai pentru un API sursă ale cărui căi sunt cunoscute că necesită această normalizare, înlocuiți map_remote valoare cu:
map_remote=|^https://api\.deepseek\.com(?::443)?/(?:v1/)?|https://api.model-gate.com/v1/
Aceasta adaugă în mod deliberat una /v1/ prefix, păstrând unul existent, calea rămasă și interogarea. Este o variantă separată de schimbare a căii, nu exemplul de origine. Verificați punctul final rezultat înainte de a trimite un prompt real.
Pentru un alt furnizor, înlocuiți numele de gazdă sursă exact în ambele allow-hosts şi map_remote, scăpați de punctele regex și alegeți originea/calea țintă corectă. Păstrați meciul ancorat cu ^https:// și o limită de nume de gazdă; nu utilizați niciodată un înlocuitor de subșir larg. Suplimentele salvate sau regulile de rescrie existente pot modifica rezultatul, așa că inspectați configurația mitmproxy înainte de testare.
Acceptare și depanare
Primul test de rutare cu o acreditare falsă și prompt nesensibil; este de așteptat un eșec de autentificare la ținta intenționată. Numai după ce destinația este confirmată, faceți o cerere deliberat mică cu o cheie limitată dedicată; deducerea poate fi facturabilă. În mitmweb, verificați dacă destinația este gazda API Model Gate destinată, calea este acceptată, ID-ul modelului/alias-ul există și starea HTTP este reușită. Verificați istoricul cererilor Model Gate și confirmați că textul transmis în flux sosește progresiv. Nu publicați un antet de autorizare sau un export de flux ca dovadă.
Nicio cerere capturată. Asistentul/PID-ul real, privilegiile de captare, execuția locală versus execuția de la distanță, numele de gazdă sursă și suportul pentru kernel.
Eșecul certificatului TLS. Corectați CA/profilul/magazinul și repornirea clientului. Fixarea certificatului este o limitare de compatibilitate, nu un motiv pentru a dezactiva verificarea.
401. Clientul trebuie să utilizeze o cheie Model Gate pentru contul/domeniul API care se potrivește; map_remote nu face schimb de acreditări.
404. Inspectați calea reală; maparea numai pentru origine nu se adaugă /v1.
400 sau messages.0 / system eroare. Verificați compatibilitatea cerere-protocol. O rescrie de origine nu traduce rolurile mesajelor sau alte câmpuri JSON.
Model indisponibil. Utilizați un ID canonic activat sau un alias existent; maparea nu se redenumește model.
Streamingul vine dintr-o dată. Verificați dacă suplimentul cu doar răspuns s-a încărcat cu succes, al clientului stream valoarea și suportul real al furnizorului. Nu activați fluxul global de solicitări.
Opriți și îndepărtați încrederea
Înainte de a opri interceptarea, închideți clientul sau eliminați cheia Model Gate din configurația originală a furnizorului. În caz contrar, următoarea sa cerere directă poate trimite acea cheie furnizorului inițial. Nu presupuneți că oprirea proxy-ului eșuează. Opriți mitmweb cu Ctrl+C, apoi restaurați setările normale ale punctului final/cheie ale clientului.
Pentru Windows Utilizator curent import mai sus, eliminați doar certificatul exact al acestei instalări:
$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.' }
Pentru optional Mașină locală import, utilizați un shell ridicat și certutil -delstore Root $cert.Thumbprint în schimb. Păstrați fișierul CA public până când ați identificat și eliminat certificatul de încredere corespunzător; nu ștergeți rădăcinile de încredere care nu au legătură cu numele.
Pentru importul la nivel de sistem Ubuntu/Debian de mai sus:
sudo rm -- /usr/local/share/ca-certificates/model-gate-local-mitmproxy.crt
sudo update-ca-certificates --fresh
Eliminați și orice configurație CA specifică aplicației. Reporniți clienții. Ștergeți artefactele sensibile capturate și rotiți tasta dedicată Model Gate dacă a fost expusă sau trimisă către o destinație neintenționată. Acești pași pentru stația de lucru nu necesită schimbarea nginx, magazine de încredere pentru server, producție .env fișiere sau politica TLS a Model Gate.
Referințe oficiale
Revizuit pe 2026-09-08. Confirmați opțiunile instalate mitmweb --options; Captarea clientului și comportamentul de încredere necesită încă testare pe stația dvs. de lucru.
- mitmproxy Moduri și limitări Local Capture
- cartografierea URL mitmproxy și streaming
- exemplu de supliment de transmisie în flux mitmproxy
- implementarea mitmproxy map_remote request-hook
- opțiuni mitmproxy
- mitmproxy certificate CA și fixare
- mitmproxy HTTP destinație și autoritate
- Microsoft certutil
- Instalarea și eliminarea Ubuntu CA