Nadjačavanje krajnje točke u sustavu Windows i Linux
Usmjerite fiksnu HTTPS krajnju točku ovlaštenog lokalnog klijenta kroz mitmproxy, s ograničenim snimanjem, TLS povjerenjem, strujanjem i povratom.
Koristite ugrađeni klijent Osnovni URL / Prilagođena krajnja točka / BYOK postavljanje kad god je to moguće. Vidjeti Vodiči za povezivanje i GitHub kopilot. Lokalno presretanje HTTPS-a izborna je zamjena za klijenta koji ne može promijeniti svoju krajnju točku, a nije uvjet za korištenje Model Gate-a.
Ovo nije univerzalno kompatibilno. Klijent mora poslati protokol, stazu i model koji podržava vaš račun Model Gate, prihvatiti vaše lokalno tijelo za izdavanje certifikata i dopustiti vam da konfigurirate API ključ Model Gate. Prikvačivanje certifikata, privatna povjerljiva pohrana, potpisani zahtjevi, tvrdo kodirani model ili host udaljenog proširenja mogu spriječiti rad ove metode. Prepisivanje URL-a ne pretvara OpenAI Chat Completions u antropske poruke ili odgovore, ne dodaje mogućnosti modela niti zamjenjuje GitHub autentifikaciju.
Presretajte samo aplikacije i promet koji posjedujete ili ste ovlašteni za nadzor. Pribavite odobrenje za upravljane radne stanice. mitmproxy vidi dekriptirane upite, izvorni kod i zaglavlja za provjeru autentičnosti; njegov lokalni CA privatni ključ može oponašati HTTPS poslužitelje klijentima koji mu vjeruju. Nemojte dijeliti CA privatne ključeve, izvoziti neredigirane tokove/HAR datoteke, izlagati njegovo korisničko sučelje mreži ili onemogućiti TLS provjeru.
Što ovaj primjer mijenja
Primjer preslikava točno ovo izvorno podrijetlo u Model API podrijetlo prikazano u dokumentaciji ove stranice:
https://api.deepseek.com/v1/chat/completions
-> local mitmproxy
-> https://api.model-gate.com/v1/chat/completions
Konfigurirajte a namjenski Model Gate API ključ, a ne ključ DeepSeek, u polje vjerodajnice klijenta. Odaberite omogućeni Model Gate model ili alias kojim upravlja administrator iz katalog modela. Upotrijebite izvor API modela prikazan u ovom vodiču s odgovarajućim API ključem; nemojte koristiti panel ili Partner API host.
Pravilo ne uređuje namjerno HTTP metodu, putanju, upit, JSON tijelo, model, Authorizationili JSON stream vrijednost. Mijenja odredište i HTTP Host / HTTP/2 :authority; uzvodni TLS povezuje se s novim odredištem. HTTP verzija, kućište/redoslijed zaglavlja, zaglavlja veze i okvir također se mogu razlikovati. To nije bajt-za-bajt očuvanje svih zaglavlja ili mrežnog prometa.
Pripremite strujanje samo za odgovor (oba sustava)
Spremite sljedeće kao model-gate-response-stream.py u vašem radnom imeniku. Ista je datoteka uključena u izdanje unutar PHP aplikacije na adresi deploy/client-tools/; radi unutar mitmproxyja i ne treba zasebnu instalaciju Pythona kada se koristi izvorni paket.
"""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
Ugrađeni map_remote addon prepisuje odredište u zahtjev kuka, nakon što se tijelo zahtjeva pročita. Neka strujanje zahtjeva bude onemogućeno dok se ne dogodi ponovno pisanje. Nemojte koristiti --set stream_large_bodies=1 po ovom receptu: može proslijediti izvorni zahtjev prije ponovnog pisanja. Gornji mali dodatak omogućuje samo strujanje odgovora, uključujući SSE, bez mijenjanja tijela JSON-a ili ponavljanja zahtjeva.
Naredbe u nastavku koriste --set stream_large_bodies bez znaka jednakosti ili vrijednosti za ponovno postavljanje ove izborne postavke na Nonei izričito onemogućite zadržavanje strujanog tijela. Dodatak odbija kasnije omogućiti globalni prag strujanja. Uklonite druge dodatke za strujanje/prepisivanje zahtjeva iz ove namjenske sesije i riješite sve pogreške pri pokretanju prije postavljanja ključa u klijenta. Proxy nije granica vjerodajnica zatvorena kod pogreške: prvo potvrdite rutu pomoću lažnog ključa.
Windows: primjer Visual Studio
Instalirajte službeni izvorni Windows paket iz mitmproxy preuzimanja. Ponovno otvorite PowerShell i provjerite mitmweb --version. Nemojte instalirati unutar WSL-a za ovaj primjer Windows procesa.
Stvorite lokalni CA ove instalacije i vjerujte mu
Pokrenite jednom pod istim Windows računom koji će pokrenuti proxy:
mitmweb --listen-host 127.0.0.1 --web-host 127.0.0.1
Nakon pokretanja, zaustavite ga s Ctrl+C. mitmproxy stvara svoj CA u %USERPROFILE%\.mitmproxy. Radije Trenutačni korisnik vjerujte aplikaciji koja radi kao vi:
$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.' }
Vjerujte samo CA-u generiranom vlastitom instalacijom. mitmproxy-ca-cert.cer je javna potvrda; mitmproxy-ca.pem također sadrži privatni ključ i mora ostati privatan. Ponovno pokrenite Visual Studio nakon promjene povjerenja.
Samo kada odobrena prijava posebno treba Lokalni stroj povjerenja, koristite povišeni PowerShell i certutil -addstore Root "$ca" bez -user. Ovo vjeruje cijelom CA stroju, šira je sigurnosna promjena i zahtijeva odgovarajuće uklanjanje strojne pohrane u nastavku. Nadmorska visina ispod a drugačiji administratorski račun može koristiti drugačiji profil i CA; održavajte konfiguraciju računa, certifikata i proxyja dosljednom.
Snimite samo predviđeni proces i host
Pokrenite izvorni PowerShell kao administrator kada to zahtijevaju Windows dozvole za snimanje, koristeći isti račun/profil. Prvo pokrenite Visual Studio. Ovaj primjer cilja na naziv procesa 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/'
Ne smije biti razmaka iza PowerShell-ove kvačice za nastavak retka. Usidreno pravilo odgovara samo navedenom HTTPS izvoru, uključujući eksplicitni port 443; naziv hosta pružatelja koji se pojavljuje unutar upita ili drugi naziv hosta nije prepisan. Popis dopuštenih hostova izbjegava dešifriranje nepovezanih odredišta iz odabranog procesa. lazy plus upstream_cert=false izbjegava nepotrebnu vezu njuškanja certifikata s izvornim pružateljem usluga. TLS provjera stvarnog uzvodnog toka i dalje je omogućena.
Visual Studio je ne VS kod. Proširenje može slati zahtjeve putem zasebnog ServiceHuba, jezičnog poslužitelja ili pomoćnog procesa umjesto devenv. Identificirajte stvarni proces posjedovanja mreže prije proširenja snimanja. Za pregled instanci Visual Studio:
Get-Process -Name devenv | Select-Object Id, ProcessName, Path
Zamijeniti local:devenv s local:12345 pomoću stvarnog PID-a ili popisa eksplicitno identificiranih PID-ova odvojenih zarezima. PID-ovi se mijenjaju nakon ponovnog pokretanja. Nemojte koristiti $PID za prilagođenu varijablu PowerShell; odnosi se na vlastiti proces PowerShell-a. Nemojte se prebacivati na cijeli stroj --mode local samo da bi se pojavio zahtjev koji nedostaje.
Linux: preslikavanje istog opsega
Instalirajte trenutnu službenu verziju mitmproxyja i provjerite mitmweb --version i uname -r. Lokalno snimanje koristi eBPF; the official support floor is Linux 6.8. Potreban mu je povlašteni pomagač sudo. Trčanje mitmweb kao vaš obični korisnik s --mode local:... na naredbenom retku kako bi mogao zatražiti tu privilegiju; izbjegavajte prebacivanje cijelog proxyja na root i slučajno korištenje /root/.mitmproxy.
Prvo inicijalizirajte CA pod svojim običnim računom, a zatim prestanite s Ctrl+C:
mitmweb --listen-host 127.0.0.1 --web-host 127.0.0.1
Preferirajte dokumentirani prilagođeni CA mehanizam aplikacije. Na Ubuntu/Debian, aplikacije koje koriste pohranu povjerenja sustava mogu umjesto toga koristiti ovu izbornu instalaciju na cijelom sustavu:
sudo install -m 0644 "$HOME/.mitmproxy/mitmproxy-ca-cert.pem" \
/usr/local/share/ca-certificates/model-gate-local-mitmproxy.crt
sudo update-ca-certificates
Ponovno pokrenite klijenta. Privatna pohrana povjerenja Java/čvora/preglednika ili ograničena aplikacija možda će trebati vlastitu dokumentiranu postavku povjerenja; uvoz u OS trgovinu ne jamči da mu svaki klijent vjeruje. Ostale distribucije koriste vlastite CA-store procedure.
Za lokalni VS Code proces pod nazivom code, preslikavanje je:
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/'
Kao i na Windowsima, koristite stvarni proces/PID za izradu zahtjeva, a ne nužno prozor uređivača. Pregledati ps -eo pid,comm,args i zamjena local:12345 prema potrebi. Podudaranje imena u Linuxu ograničeno je na prvih 16 znakova. Lokalno snimanje na WSL-u nije podržano, a spremnici trebaju umrežavanje hosta za ovaj način rada. Promet s hosta SSH/udaljenog proširenja mora biti konfiguriran na računalu na kojem se taj proces izvodi, a ne samo na radnoj površini.
Streaming, staze i drugi pružatelji usluga
Dodatak samo za odgovor prosljeđuje HTTP odgovore bez čekanja na potpuni odgovor, što je važno za isporuku SSE tokena. Tijelo zahtjeva ostaje u međuspremniku do map_remote je promijenio odredište. Streaming tijela se prema zadanim postavkama ne zadržavaju za pregled; zaglavlja i status ostaju korisni. Nemojte omogućiti zadržavanje tijela ili izvoz protoka samo radi rješavanja problema s ključem. Ova postavka ne mijenja JSON klijenta stream zastavicom i ne može pokrenuti stream od pružatelja usluga koji nije strujanje.
Zadano mapiranje čuva staze. Klijent šalje /chat/completions bez /v1 i dalje će slati tu putanju Model Gateu i može primiti 404. Samo za izvorni API čije staze zahtijevaju ovu normalizaciju, zamijenite map_remote vrijednost sa:
map_remote=|^https://api\.deepseek\.com(?::443)?/(?:v1/)?|https://api.model-gate.com/v1/
Ovo namjerno dodaje jedan /v1/ prefiks, čuvajući postojeći, preostali put i upit. To je zasebna varijanta promjene putanje, a ne samo izvorni primjer. Provjerite rezultirajuću krajnju točku prije slanja pravog upita.
Za drugog pružatelja usluga zamijenite točan izvorni naziv glavnog računala oba allow-hosts i map_remote, izbjeći regex točke i odabrati ispravno ciljno podrijetlo/put. Držite meč usidren sa ^https:// i granica naziva hosta; nikada ne koristite široku zamjenu podniza. Postojeći spremljeni dodaci ili pravila prepisivanja mogu promijeniti rezultat, stoga provjerite svoju konfiguraciju mitmproxy prije testiranja.
Prihvaćanje i rješavanje problema
Prvo testno usmjeravanje s lažnom vjerodajnicom i neosjetljivim upitom; očekuje se neuspjeh provjere autentičnosti na željenom cilju. Tek nakon što je odredište potvrđeno, napravite jedan namjerno mali zahtjev s namjenskim ograničenim ključem; zaključivanje može biti naplativo. U mitmwebu provjerite je li odredište namjeravani API host Model Gate, je li staza podržana, ID/alias modela postoji i HTTP status je uspješan. Provjerite Povijest zahtjeva za Model Gate i potvrdite da strujeni tekst postupno stiže. Nemojte objavljivati zaglavlje autorizacije ili izvoz toka kao dokaz.
Nema snimljenog zahtjeva. Stvarni pomagač/PID, privilegije snimanja, lokalno naspram udaljenog izvršenja, izvorni naziv hosta i podrška za kernel.
Greška TLS certifikata. Ispravan CA/profil/trgovina i ponovno pokretanje klijenta. Prikvačivanje certifikata ograničenje je kompatibilnosti, a ne razlog za onemogućavanje provjere.
401. Klijent mora koristiti Model Gate ključ za odgovarajući račun/API domenu; map_remote ne razmjenjuje vjerodajnice.
404. Provjerite stvarni put; preslikavanje samo podrijetla ne dodaje /v1.
400 ili messages.0 / system greška. Provjerite kompatibilnost protokola zahtjeva. Prepisivanje izvora ne prevodi uloge poruka ili druga JSON polja.
Model nedostupan. Koristite omogućeni kanonski ID ili postojeći alias; preslikavanje ne preimenuje model.
Streaming stiže odjednom. Provjerite je li se dodatak samo za odgovor uspješno učitao, klijentov stream vrijednost i stvarnu podršku pružatelja usluga. Nemojte omogućiti globalno strujanje zahtjeva.
Zaustavite i uklonite povjerenje
Prije zaustavljanja presretanja, zatvorite klijenta ili uklonite ključ Model Gate iz izvorne konfiguracije davatelja. Inače njegov sljedeći izravni zahtjev može poslati taj ključ izvornom pružatelju usluga. Nemojte pretpostavljati da zaustavljanje proxyja ne uspijeva zatvoriti. Zaustavite mitmweb pomoću Ctrl+C, zatim vratite normalne postavke krajnje točke/ključa klijenta.
Za Windows Trenutačni korisnik import iznad, uklonite samo točnu potvrdu ove instalacije:
$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.' }
Za neobavezno Lokalni stroj uvoz, koristite povišenu školjku i certutil -delstore Root $cert.Thumbprint umjesto toga. Čuvajte javnu CA datoteku dok ne identificirate i uklonite odgovarajući pouzdani certifikat; nemojte brisati nepovezane pouzdane korijene po imenu.
Za gornji uvoz za cijeli sustav Ubuntu/Debian:
sudo rm -- /usr/local/share/ca-certificates/model-gate-local-mitmproxy.crt
sudo update-ca-certificates --fresh
Također uklonite sve CA konfiguracije specifične za aplikaciju. Ponovno pokrenite klijente. Izbrišite osjetljive snimljene artefakte i okrenite namjenski ključ Model Gate ako je bio izložen ili poslan na neželjeno odredište. Ovi koraci radne stanice ne zahtijevaju promjenu nginx-a, pohranjivanja povjerenja poslužitelja, proizvodnje .env datoteke ili TLS pravila Model Gatea.
Službene reference
Pregledano 8. rujna 2026. Potvrdite opcije u odnosu na svoje instalirane mitmweb --options; hvatanje klijenta i ponašanje povjerenja i dalje zahtijevaju testiranje na vašoj radnoj stanici.
- mitmproxy Lokalni načini snimanja i ograničenja
- mitmproxy URL mapiranje i strujanje
- primjer dodatka za strujanje odgovora mitmproxy
- mitmproxy map_remote implementacija kuke zahtjeva
- mitmproxy opcije
- mitmproxy CA certifikati i pričvršćivanje
- odredište i ovlaštenje HTTP zahtjeva mitmproxy
- Microsoftov certifikat
- Ubuntu CA instalacija i uklanjanje