Åsidosätt ändpunkt på Windows och Linux

Dirigera en auktoriserad lokal klients fasta HTTPS-slutpunkt genom mitmproxy, med scoped capture, TLS-trust, streaming och rollback.

Använd en klients inbyggda Bas-URL / Anpassad slutpunkt / BYOK inställning när det är möjligt. Se Anslutningsguider och GitHub Copilot. Lokal HTTPS-avlyssning är en valfri reserv för en klient som inte kan ändra sin slutpunkt, inte ett krav för att använda Model Gate.

Detta är inte universellt kompatibelt. Klienten måste skicka ett protokoll, sökväg och modell som stöds av ditt Model Gate-konto, acceptera din lokala certifikatutfärdare och tillåta dig att konfigurera en Model Gate API-nyckel. Certifikatfästning, en privat förtroendebutik, signerade förfrågningar, en hårdkodad modell eller en fjärransluten tilläggsvärd kan förhindra att den här metoden fungerar. En URL-omskrivning konverterar inte OpenAI Chat Completions till antropiska meddelanden eller svar, lägger inte till modellfunktioner eller ersätter GitHub-autentisering.

Avlyssna endast applikationer och trafik som du äger eller har behörighet att inspektera. Skaffa godkännande på hanterade arbetsstationer. mitmproxy ser dekrypterade uppmaningar, källkod och autentiseringsrubriker; dess lokala privata CA-nyckel kan imitera HTTPS-servrar till klienter som litar på den. Dela inte CA-privata nycklar, exportera oredigerade flöden/HAR-filer, exponera inte dess användargränssnitt för nätverket eller inaktivera TLS-verifiering.

Vad detta exempel förändrar

Exemplet mappar exakt detta källans ursprung till Model API-ursprunget som visas i den här webbplatsens dokumentation:

https://api.deepseek.com/v1/chat/completions
  -> local mitmproxy
  -> https://api.model-gate.com/v1/chat/completions

Konfigurera a dedikerad Model Gate API-nyckel, inte en DeepSeek-nyckel, i klientens autentiseringsfält. Välj en aktiverad Model Gate-modell eller administratörshanterat alias från modellkatalog. Använd modell-API-ursprunget som visas i den här guiden med dess matchande API-nyckel; använd inte panelen eller Partner API-värden.

Regeln redigerar inte avsiktligt HTTP-metoden, sökvägen, frågan, JSON-kroppen, model, Authorization, eller JSON stream värde. Det ändrar destinationen och HTTP Host / HTTP/2 :authority; uppströms TLS ansluter till den nya destinationen. HTTP-version, huvudskal/ordning, anslutningsrubriker och inramning kan också skilja sig åt. Det är inte byte-för-byte-bevarande av alla rubriker eller nätverkstrafik.

Förbered strömning med endast svar (båda systemen)

Spara följande som model-gate-response-stream.py i din arbetskatalog. Samma fil ingår i versionen i PHP-applikationen på deploy/client-tools/; det körs inuti mitmproxy och behöver ingen separat Python-installation när du använder det ursprungliga paketet.

"""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

Den inbyggda map_remote addon skriver om destinationen i begäran krok, efter att begärandekroppen har lästs. Håll begäran om streaming inaktiverad tills omskrivningen har skett. Använd inte --set stream_large_bodies=1 med detta recept: den kan vidarebefordra den ursprungliga begäran innan omskrivningen. Det lilla tillägget ovan möjliggör endast svarsströmning, inklusive SSE, utan att ändra JSON-kroppen eller spela upp förfrågningar.

Kommandona nedan används --set stream_large_bodies utan likhetstecken eller värde för att återställa denna valfria inställning till None, och uttryckligen inaktivera streamed-body retention. Tillägget avvisar aktivering av en global strömningströskel senare. Ta bort andra tillägg för begäran-strömning/omskrivning från den här dedikerade sessionen och åtgärda eventuella startfel innan du placerar en nyckel i klienten. Proxyn är inte en felstängd autentiseringsgräns: validera rutten med en dummynyckel först.

Windows: Visual Studio exempel

Installera det officiella inbyggda Windows-paketet från mitmproxy Nedladdningar. Öppna PowerShell igen och kontrollera mitmweb --version. Installera inte inuti WSL för detta Windows-processexempel.

Skapa och lita på den här installationens lokala CA

Börja en gång under samma Windows-konto som kommer att köra proxyn:

mitmweb --listen-host 127.0.0.1 --web-host 127.0.0.1

Efter start, stoppa det med Ctrl+C. mitmproxy skapar sin CA i %USERPROFILE%\.mitmproxy. Föredra Nuvarande användare lita på en applikation som körs medan du:

$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.' }

Lita bara på den CA som genereras av din egen installation. mitmproxy-ca-cert.cer är det offentliga certifikatet; mitmproxy-ca.pem innehåller också den privata nyckeln och måste förbli privat. Starta om Visual Studio efter att du har ändrat förtroende.

Endast när en godkänd ansökan specifikt behöver Lokal maskin lita på, använd en förhöjd PowerShell och certutil -addstore Root "$ca" utan -user. Detta litar på CA över hela maskinen, är en bredare säkerhetsändring och kräver borttagning av matchande maskinbutik nedan. Höjd under a olik administratörskonto kan använda en annan profil och CA; hålla kontot, certifikatet och proxykonfigurationen konsekvent.

Fånga endast den avsedda processen och värden

Kör inbyggt PowerShell som administratör när det krävs av Windows capture-behörigheter, med samma konto/profil. Starta Visual Studio först. Det här exemplet är inriktat på processnamnet 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/'

Det får inte finnas några mellanslag efter PowerShells linje-fortsättning backtick. Den förankrade regeln matchar endast det angivna HTTPS-ursprunget, inklusive en explicit port 443; ett leverantörsvärdnamn som förekommer i en fråga eller ett annat värdnamn skrivs inte om. Värdens tillåtelselista undviker att dekryptera orelaterade destinationer från den valda processen. lazy plus upstream_cert=false undviker en onödig certifikatsniffande anslutning till den ursprungliga leverantören. TLS-verifiering av den faktiska uppströms är fortfarande aktiverad.

Visual Studio är inte VS-kod. En förlängning kan skicka förfrågningar via en separat ServiceHub, språkserver eller hjälpprocess snarare än devenv. Identifiera den faktiska nätverksägande processen innan du breddar fångst. Så här inspekterar du Visual Studio-instanser:

Get-Process -Name devenv | Select-Object Id, ProcessName, Path

Ersätta local:devenv med local:12345 med det faktiska PID:n, eller en kommaseparerad lista över explicit identifierade PID:n. PID ändras efter omstarter. Använd inte $PID för en anpassad PowerShell-variabel; det hänvisar till PowerShells egen process. Byt inte till helmaskin --mode local bara för att få en saknad begäran att dyka upp.

Linux: samma scoped mappning

Installera en aktuell officiell mitmproxy-bygge och kontrollera mitmweb --version och uname -r. Local Capture använder eBPF; det officiella supportgolvet är Linux 6.8. Det behöver en privilegierad medhjälpare börjat sudo. Sikt mitmweb som din vanliga användare med --mode local:... på kommandoraden så att den kan begära den behörigheten; undvika att byta hela proxyn till root och använda den av misstag /root/.mitmproxy.

Initiera först CA under ditt vanliga konto och sluta sedan med Ctrl+C:

mitmweb --listen-host 127.0.0.1 --web-host 127.0.0.1

Föredrar programmets dokumenterade anpassade CA-mekanism. På Ubuntu/Debian, applikationer som använder System Trust Store kan istället använda denna valfria, systemomfattande installation:

sudo install -m 0644 "$HOME/.mitmproxy/mitmproxy-ca-cert.pem" \
  /usr/local/share/ca-certificates/model-gate-local-mitmproxy.crt
sudo update-ca-certificates

Starta om klienten. En privat förtroendebutik för Java/Nod/webbläsare eller en begränsad applikation kan behöva sin egen dokumenterade förtroendeinställning; import till OS-butiken garanterar inte att varje klient litar på den. Andra distributioner använder sina egna CA-butiksprocedurer.

För en lokal VS-kodprocess som heter code, mappningen är:

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/'

Som på Windows, använd den faktiska förfrågningsproducerande processen/PID, inte nödvändigtvis redigeringsfönstret. Inspektera ps -eo pid,comm,args och ersättare local:12345 efter behov. Linux-namnmatchning är begränsad till de första 16 tecknen. Local Capture på WSL stöds inte, och behållare behöver värdnätverk för detta läge. Trafik från en SSH/fjärrtilläggsvärd måste konfigureras på maskinen där processen körs, inte bara på ditt skrivbord.

Streaming, sökvägar och andra leverantörer

Tillägget endast för svar vidarebefordrar HTTP-svar utan att vänta på det fullständiga svaret, vilket är viktigt för leverans av SSE-token. Begärande organ förblir buffrade tills map_remote har ändrat destinationen. Strömmande organ behålls inte för inspektion som standard; rubriker och status förblir användbara. Aktivera inte kroppsretention eller flödesexport bara för att felsöka en nyckel. Den här inställningen ändrar inte klientens JSON stream flagga och kan inte strömma en icke-strömningsleverantör.

Standardmappningen bevarar sökvägar. En klient som skickar /chat/completions utan /v1 kommer fortfarande att skicka den sökvägen till Model Gate och kan ta emot 404. Endast för ett käll-API vars sökvägar är kända för att kräva denna normalisering, byt ut map_remote värde med:

map_remote=|^https://api\.deepseek\.com(?::443)?/(?:v1/)?|https://api.model-gate.com/v1/

Detta lägger medvetet till en /v1/ prefix, bevara en befintlig, den återstående sökvägen och frågan. Det är en separat vägskiftande variant, inte det enda exemplet. Verifiera den resulterande slutpunkten innan du skickar en riktig uppmaning.

För en annan leverantör, ersätt det exakta källvärdnamnet i både allow-hosts och map_remote, undvik regex-punkter och välj rätt målursprung/sökväg. Håll tändstickan förankrad med ^https:// och en gräns för värdnamn; använd aldrig en bred delsträngsersättning. Befintliga sparade tillägg eller omskrivningsregler kan ändra resultatet, så inspektera din mitmproxy-konfiguration innan du testar.

Acceptans och felsökning

Testa först routing med en dummy-referens och okänslig prompt; ett autentiseringsfel vid det avsedda målet förväntas. Först efter att destinationen har bekräftats, gör en medvetet liten förfrågan med en dedikerad begränsad nyckel; slutledning kan faktureras. I mitmweb, kontrollera att destinationen är den avsedda Model Gate API-värden, att sökvägen stöds, att modell-ID/alias finns och att HTTP-statusen är framgångsrik. Kontrollera Model Gate Request History och bekräfta att streamad text kommer fram progressivt. Publicera inte en auktoriseringsrubrik eller en flödesexport som bevis.

Ingen fångad begäran. Den faktiska hjälparen/PID, fångstprivilegier, lokal kontra fjärrexekvering, källvärdnamn och kärnstöd.

TLS-certifikatfel. Korrigera CA/profil/butik och klient omstart. Certifikatfästning är en kompatibilitetsbegränsning, inte en anledning att inaktivera verifiering.

401. Klienten måste använda en Model Gate-nyckel för det matchande kontot/API-domänen; map_remote utbyter inte referenser.

404. Inspektera den faktiska vägen; Enbart ursprungsmatning lägger inte till /v1.

400 eller messages.0 / system fel. Kontrollera kompatibilitet med begäran-protokoll. En ursprungsomskrivning översätter inte meddelanderoller eller andra JSON-fält.

Modellen är inte tillgänglig. Använd ett aktiverat kanoniskt ID eller befintligt alias; mappningen byter inte namn model.

Streaming kommer på en gång. Kontrollera att tillägget för endast svar har laddats, klientens stream värde och faktisk leverantörsstöd. Aktivera inte strömning av global begäran.

Stoppa och ta bort förtroendet

Innan du stoppar avlyssning, stäng klienten eller ta bort Model Gate-nyckeln från dess ursprungliga leverantörskonfiguration. Annars kan nästa direkta begäran skicka den nyckeln till den ursprungliga leverantören. Anta inte att det inte går att stänga proxyn. Stoppa mitmweb med Ctrl+C och återställ sedan klientens normala slutpunkts-/nyckelinställningar.

För Windows Nuvarande användare importera ovan, ta bara bort denna installations exakta certifikat:

$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.' }

För det valfria Lokal maskin importera, använd ett förhöjt skal och certutil -delstore Root $cert.Thumbprint i stället. Behåll den offentliga CA-filen tills du har identifierat och tagit bort det matchande betrodda certifikatet; ta inte bort orelaterade betrodda rötter efter namn.

För Ubuntu/Debian systemomfattande import ovan:

sudo rm -- /usr/local/share/ca-certificates/model-gate-local-mitmproxy.crt
sudo update-ca-certificates --fresh

Ta också bort eventuell applikationsspecifik CA-konfiguration. Starta om klienter. Ta bort känsliga fångade artefakter och rotera den dedikerade Model Gate-nyckeln om den exponerades eller skickades till en oavsiktlig destination. Dessa arbetsstationssteg kräver inte ändring av nginx, serverförtroendebutiker, produktion .env filer eller Model Gates TLS-policy.

Officiella referenser

Recenserad 2026-09-08. Bekräfta alternativ mot din installerade mitmweb --options; klientfångst och förtroendebeteende kräver fortfarande testning på din arbetsstation.