Sluttpunktoverstyring på Windows og Linux

Ruter en autorisert lokal klients faste HTTPS-endepunkt gjennom mitmproxy, med scoped capture, TLS-trust, streaming og rollback.

Bruk en klients innebygde Base URL / Egendefinert endepunkt / BYOK innstilling når det er mulig. Se Tilkoblingsguider og GitHub Copilot. Lokal HTTPS-avskjæring er en valgfri reserve for en klient som ikke kan endre endepunktet, ikke et krav for bruk av Model Gate.

Dette er ikke universelt kompatibelt. Klienten må sende en protokoll, bane og modell som støttes av Model Gate-kontoen din, godta din lokale sertifiseringsinstans og tillate deg å konfigurere en Model Gate API-nøkkel. Sertifikatfesting, en privat tillitsbutikk, signerte forespørsler, en hardkodet modell eller en ekstern utvidelsesvert kan forhindre at denne metoden fungerer. En URL-omskriving konverterer ikke OpenAI Chat-fullføringer til antropiske meldinger eller svar, legger til modellfunksjoner eller erstatter GitHub-autentisering.

Kun avskjære applikasjoner og trafikk du eier eller er autorisert til å inspisere. Få godkjenning på administrerte arbeidsstasjoner. mitmproxy ser dekrypterte meldinger, kildekode og autentiseringshoder; den lokale CA private nøkkelen kan etterligne HTTPS-servere til klienter som stoler på den. Ikke del CA private nøkler, eksporter uredigerte flyter/HAR-filer, utsett brukergrensesnittet for nettverket eller deaktiver TLS-verifisering.

Hva dette eksemplet endrer

Eksemplet tilordner nøyaktig denne kildeopprinnelsen til Model API-opprinnelsen vist i dokumentasjonen til dette nettstedet:

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

Konfigurer en dedikert Model Gate API-nøkkel, ikke en DeepSeek-nøkkel, i klientens legitimasjonsfelt. Velg en aktivert Model Gate-modell eller administratoradministrert alias fra modellkatalog. Bruk modell-API-opprinnelsen vist i denne veiledningen med tilhørende API-nøkkel; ikke bruk panelet eller Partner API-verten.

Regelen redigerer ikke med hensikt HTTP-metoden, banen, spørringen, JSON-kroppen, model, Authorization, eller JSON stream verdi. Det endrer destinasjonen og HTTP Host / HTTP/2 :autoritet; oppstrøms TLS kobles til den nye destinasjonen. HTTP-versjon, hodehus/rekkefølge, tilkoblingshoder og innramming kan også variere. Det er ikke byte-for-byte-bevaring av alle overskrifter eller nettverkstrafikk.

Forbered svar-bare streaming (begge systemer)

Lagre følgende som model-gate-response-stream.py i arbeidskatalogen din. Den samme filen er inkludert i utgivelsen i PHP-applikasjonen på deploy/client-tools/; den kjører inne i mitmproxy og trenger ingen separat Python-installasjon når du bruker den opprinnelige pakken.

"""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 innebygde map_remote addon omskriver destinasjonen i forespørsel krok, etter at forespørselsteksten er lest. Hold forespørselsstrømming deaktivert til omskrivingen har skjedd. Ikke bruk --set stream_large_bodies=1 med denne oppskriften: den kan videresende den opprinnelige forespørselen før omskrivingen. Det lille tillegget ovenfor muliggjør bare responsstrømming, inkludert SSE, uten å endre JSON-kroppen eller spille av forespørsler.

Kommandoene nedenfor bruker --set stream_large_bodies uten likhetstegn eller verdi for å tilbakestille denne valgfrie innstillingen til None, og deaktiver eksplisitt oppbevaring av strømmet kropp. Tillegget avviser å aktivere en global streamingterskel senere. Fjern andre forespørsel-streaming/omskriv-tillegg fra denne dedikerte økten, og løs eventuelle oppstartsfeil før du plasserer en nøkkel i klienten. Proxyen er ikke en feillukket legitimasjonsgrense: valider ruten med en dummynøkkel først.

Windows: Visual Studio eksempel

Installer den offisielle opprinnelige Windows-pakken fra mitmproxy Nedlastinger. Åpne PowerShell på nytt og sjekk mitmweb --version. Ikke installer inne i WSL for dette Windows-prosesseksemplet.

Opprett og stol på denne installasjonens lokale CA

Start en gang under den samme Windows-kontoen som vil kjøre proxyen:

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

Etter oppstart, stopp den med Ctrl+C. mitmproxy oppretter sin CA i %USERPROFILE%\.mitmproxy. Foretrekker Nåværende bruker stole på en applikasjon som kjører mens 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.' }

Stol bare på CA generert av din egen installasjon. mitmproxy-ca-cert.cer er det offentlige sertifikatet; mitmproxy-ca.pem inneholder også den private nøkkelen og må forbli privat. Start Visual Studio på nytt etter å ha endret tillit.

Bare når en godkjent søknad spesifikt trenger Lokal maskin tillit, bruk en forhøyet PowerShell og certutil -addstore Root "$ca" uten -user. Dette stoler på CA på hele maskinen, er en bredere sikkerhetsendring og krever fjerning av samsvarende maskinbutikk nedenfor. Høyde under a forskjellig administratorkonto kan bruke en annen profil og CA; holde kontoen, sertifikatet og proxy-konfigurasjonen konsekvent.

Fang bare den tiltenkte prosessen og vert

Kjør innebygd PowerShell som administrator når det kreves av Windows-opptakstillatelser, med samme konto/profil. Start Visual Studio først. Dette eksemplet retter seg mot prosessnavnet 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 må ikke være mellomrom etter PowerShells linje-fortsettelse backtick. Den forankrede regelen samsvarer bare med den angitte HTTPS-opprinnelsen, inkludert en eksplisitt port 443; et vertsnavn for leverandøren som forekommer i en spørring eller et annet vertsnavn, skrives ikke om. Vertstillatelseslisten unngår å dekryptere urelaterte destinasjoner fra den valgte prosessen. lazy pluss upstream_cert=false unngår en unødvendig sertifikat-sniffende forbindelse til den opprinnelige leverandøren. TLS-verifisering av den faktiske oppstrøms er fortsatt aktivert.

Visual Studio er ikke VS-kode. En utvidelse kan sende forespørsler gjennom en separat ServiceHub, språkserver eller hjelpeprosess i stedet for devenv. Identify the actual network-owning process before broadening capture. Slik inspiserer du Visual Studio-forekomster:

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

Bytt ut local:devenv med local:12345 ved å bruke den faktiske PID-en, eller en kommadelt liste over eksplisitt identifiserte PID-er. PID-er endres etter omstart. Ikke bruk $PID for en egendefinert PowerShell-variabel; det refererer til PowerShells egen prosess. Ikke bytt til hele maskinen --mode local bare for å få en manglende forespørsel til å vises.

Linux: samme scoped mapping

Installer en gjeldende offisiell mitmproxy-bygg og sjekk mitmweb --version og uname -r. Local Capture bruker eBPF; det offisielle støttegulvet er Linux 6.8. Det trenger en privilegert hjelper i gang sudo. Løp mitmweb som din vanlige bruker med --mode local:... på kommandolinjen slik at den kan be om det privilegiet; unngå å bytte hele proxyen til root og utilsiktet bruk /root/.mitmproxy.

Initialiser først CA under din vanlige konto, og stopp deretter med Ctrl+C:

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

Foretrekk applikasjonens dokumenterte tilpassede CA-mekanisme. På Ubuntu/Debian, kan applikasjoner som bruker systemtillitslageret i stedet bruke denne valgfrie, systemomfattende installasjonen:

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

Start klienten på nytt. En privat Java/Node/Nettleser tillitsbutikk eller en begrenset applikasjon kan trenge sitt eget dokumenterte tillitsoppsett; import til OS-butikken garanterer ikke at hver klient stoler på den. Andre distribusjoner bruker sine egne CA-store prosedyrer.

For en lokal VS-kodeprosess kalt code, tilordningen er:

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, bruk selve forespørselsproduserende prosessen/PID, ikke nødvendigvis redigeringsvinduet. Undersøke ps -eo pid,comm,args og erstatter local:12345 etter behov. Matching av Linux-navn er begrenset til de første 16 tegnene. Local Capture på WSL støttes ikke, og containere trenger vertsnettverk for denne modusen. Trafikk fra en SSH/ekstern utvidelsesvert må konfigureres på maskinen der prosessen kjører, ikke bare på skrivebordet.

Streaming, stier og andre tilbydere

Svartillegget videresender HTTP-svar uten å vente på det fullstendige svaret, noe som er viktig for levering av SSE-token. Forespørselsinstanser forblir bufret til map_remote har endret destinasjonen. Streaming-organer beholdes ikke for inspeksjon som standard; overskrifter og status forblir nyttige. Ikke aktiver kroppsbevaring eller flyteksport bare for å feilsøke en nøkkel. Denne innstillingen endrer ikke klientens JSON stream flagg og kan ikke lage en ikke-streamingleverandør strømme.

Standardtilordningen bevarer stier. En klient som sender /chat/completions uten /v1 vil fortsatt sende den banen til Model Gate og kan motta 404. Bare for en kilde-API hvis stier er kjent for å kreve denne normaliseringen, bytt ut map_remote verdi med:

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

Dette legger bevisst en til /v1/ prefiks, bevare en eksisterende, den gjenværende banen og spørringen. Det er en egen baneendrende variant, ikke det eneste eksemplet. Bekreft det resulterende endepunktet før du sender en ekte forespørsel.

For en annen leverandør, bytt ut det eksakte kildevertsnavnet i både allow-hosts og map_remote, unnslipp regex-prikker, og velg riktig målopprinnelse/bane. Hold fyrstikken forankret med ^https:// og en vertsnavngrense; bruk aldri en bred delstrengerstatning. Eksisterende lagrede tillegg eller omskrivingsregler kan endre resultatet, så inspiser mitmproxy-konfigurasjonen før du tester.

Aksept og feilsøking

Test først ruting med en dummy-legitimasjon og ikke-sensitiv melding; en autentiseringsfeil på det tiltenkte målet forventes. Bare etter at destinasjonen er bekreftet, gjør en bevisst liten forespørsel med en dedikert begrenset nøkkel; slutning kan faktureres. I mitmweb, sjekk at destinasjonen er den tiltenkte Model Gate API-verten, at banen støttes, at modell-IDen/aliaset eksisterer og at HTTP-statusen er vellykket. Sjekk Model Gate Request History og bekreft at strømmet tekst kommer gradvis. Ikke publiser en autorisasjonsoverskrift eller flyteksport som bevis.

Ingen fanget forespørsel. Selve hjelperen/PID, fangstrettigheter, lokal kontra ekstern kjøring, kildevertsnavn og kjernestøtte.

TLS-sertifikatfeil. Riktig CA/profil/butikk og klient omstart. Sertifikatfesting er en kompatibilitetsbegrensning, ikke en grunn til å deaktivere verifisering.

401. Klienten må bruke en Model Gate-nøkkel for den matchende kontoen/API-domenet; map_remote utveksler ikke legitimasjon.

404. Inspiser den faktiske banen; Opprinnelses-bare kartlegging legger ikke til /v1.

400 eller messages.0 / system feil. Sjekk forespørselsprotokollkompatibilitet. En opprinnelses-omskriving oversetter ikke meldingsroller eller andre JSON-felt.

Modellen er ikke tilgjengelig. Bruk en aktivert kanonisk ID eller eksisterende alias; kartlegging gir ikke nytt navn model.

Streaming kommer på en gang. Sjekk at respons-only-tillegget ble lastet, klientens stream verdi og faktisk leverandørstøtte. Ikke aktiver global forespørselsstrømming.

Stopp og fjern tilliten

Før du stopper avlytting, lukk klienten eller fjern Model Gate-nøkkelen fra den opprinnelige leverandørkonfigurasjonen. Ellers kan den neste direkte forespørselen sende nøkkelen til den opprinnelige leverandøren. Ikke anta at stopping av proxy mislykkes lukket. Stopp mitmweb med Ctrl+C, og gjenopprett deretter klientens normale endepunkt/nøkkelinnstillinger.

For Windows Nåværende bruker import ovenfor, fjern bare denne installasjonens eksakte sertifikat:

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

For det valgfrie Lokal maskin importere, bruk et forhøyet skall og certutil -delstore Root $cert.Thumbprint i stedet. Behold den offentlige CA-filen til du har identifisert og fjernet det samsvarende pålitelige sertifikatet; ikke slett urelaterte pålitelige røtter etter navn.

For Ubuntu/Debian systemomfattende import ovenfor:

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

Fjern også enhver programspesifikk CA-konfigurasjon. Start klienter på nytt. Slett sensitive fangede artefakter og roter den dedikerte Model Gate-nøkkelen hvis den ble eksponert eller sendt til en utilsiktet destinasjon. Disse arbeidsstasjonstrinnene krever ikke endring av nginx, server trust stores, produksjon .env filer eller Model Gates TLS-policy.

Offisielle referanser

Anmeldt 2026-09-08. Bekreft alternativer mot din installerte mitmweb --options; klientfangst og tillitsatferd krever fortsatt testing på arbeidsstasjonen.