Endpoint-tilsidesættelse på Windows og Linux

Rut en autoriseret lokal klients faste HTTPS-slutpunkt gennem mitmproxy med scoped capture, TLS-trust, streaming og rollback.

Brug en klients indbyggede Basis URL / Brugerdefineret slutpunkt / BYOK indstilling når det er muligt. Se Tilslutningsguider og GitHub Copilot. Lokal HTTPS-aflytning er en valgfri fallback for en klient, der ikke kan ændre sit slutpunkt, ikke et krav for at bruge Model Gate.

Dette er ikke universelt kompatibelt. Klienten skal sende en protokol, sti og model, der understøttes af din Model Gate-konto, acceptere din lokale certifikatmyndighed og tillade dig at konfigurere en Model Gate API-nøgle. Certifikatfastgørelse, en privat tillidsbutik, signerede anmodninger, en hårdkodet model eller en ekstern udvidelsesvært kan forhindre denne metode i at fungere. En URL-omskrivning konverterer ikke OpenAI Chat-afslutninger til antropiske meddelelser eller svar, tilføjer ikke modelfunktioner eller erstatter GitHub-godkendelse.

Opsnappe kun applikationer og trafik, som du ejer eller er autoriseret til at inspicere. Få godkendelse på administrerede arbejdsstationer. mitmproxy ser dekrypterede prompter, kildekode og godkendelsesoverskrifter; dens lokale CA private nøgle kan efterligne HTTPS-servere til klienter, der har tillid til den. Del ikke CA private nøgler, eksporter ikke-redigerede flows/HAR-filer, udsæt ikke dens brugergrænseflade for netværket eller deaktiver TLS-bekræftelse.

Hvad dette eksempel ændrer

Eksemplet kortlægger præcis denne kildeoprindelse til Model API-oprindelsen vist i dette websteds dokumentation:

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

Konfigurer en dedikeret Model Gate API-nøgle, ikke en DeepSeek-nøgle, i klientens legitimationsfelt. Vælg en aktiveret Model Gate-model eller administratorstyret alias fra modelkatalog. Brug Model API-oprindelsen vist i denne vejledning med dens matchende API-nøgle; Brug ikke panelet eller Partner API-værten.

Reglen redigerer ikke med vilje HTTP-metoden, stien, forespørgslen, JSON-kroppen, model, Authorization, eller JSON stream værdi. Det ændrer destinationen og HTTP Host / HTTP/2 :autoritet; upstream TLS forbinder til den nye destination. HTTP-version, header-hus/rækkefølge, forbindelsesheadere og framing kan også variere. Det er ikke byte-for-byte-bevarelse af alle overskrifter eller netværkstrafik.

Forbered kun svar-streaming (begge systemer)

Gem følgende som model-gate-response-stream.py i din arbejdsmappe. Den samme fil er inkluderet i udgivelsen i PHP-applikationen på deploy/client-tools/; det kører inde i mitmproxy og behøver ingen separat Python-installation, når du bruger den oprindelige pakke.

"""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 indbyggede map_remote addon omskriver destinationen i anmodning krog, efter at anmodningsteksten er læst. Hold anmodningsstreaming deaktiveret, indtil omskrivningen er sket. Må ikke bruges --set stream_large_bodies=1 med denne opskrift: den kan videresende den oprindelige anmodning før omskrivningen. Den lille tilføjelse ovenfor muliggør kun responsstreaming, inklusive SSE, uden at ændre JSON-kroppen eller genafspille anmodninger.

Kommandoerne nedenfor bruger --set stream_large_bodies uden lighedstegn eller værdi for at nulstille denne valgfri indstilling til None, og deaktiver eksplicit tilbageholdelse af streamet krop. Tilføjelsen afviser senere at aktivere en global streaming-tærskel. Fjern andre anmodnings-streaming/omskriv-tilføjelser fra denne dedikerede session, og løs eventuelle opstartsfejl, før du placerer en nøgle i klienten. Proxyen er ikke en fejllukket legitimationsgrænse: valider ruten med en attrapnøgle først.

Windows: Visual Studio eksempel

Installer den officielle native Windows-pakke fra mitmproxy downloads. Genåbn PowerShell og tjek mitmweb --version. Installer ikke inde i WSL for dette Windows-proces eksempel.

Opret og stol på denne installations lokale CA

Start én gang under den samme Windows-konto, der kører proxyen:

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

Efter opstart stoppes det med Ctrl+C. mitmproxy opretter sin CA i %USERPROFILE%\.mitmproxy. Foretrække Nuværende bruger tillid til en applikation, der kø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 kun på den CA, der er genereret af din egen installation. mitmproxy-ca-cert.cer er det offentlige certifikat; mitmproxy-ca.pem indeholder også den private nøgle og skal forblive privat. Genstart Visual Studio efter ændring af tillid.

Kun når en godkendt ansøgning specifikt har brug for Lokal maskine tillid, brug en forhøjet PowerShell og certutil -addstore Root "$ca" uden -user. Dette har tillid til CA på hele maskinen, er en bredere sikkerhedsændring og kræver fjernelse af den tilsvarende maskinbutik nedenfor. Højde under a anderledes administratorkonto kan bruge en anden profil og CA; holde kontoen, certifikatet og proxy-konfigurationen konsekvent.

Fang kun den tilsigtede proces og vært

Kør native PowerShell som administrator, når det kræves af Windows-optagelsestilladelser, ved hjælp af den samme konto/profil. Start Visual Studio først. Dette eksempel er rettet mod procesnavnet 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/'

Der må ikke være mellemrum efter PowerShells line-fortsættelse backtick. Den forankrede regel matcher kun den angivne HTTPS-oprindelse, inklusive en eksplicit port 443; et udbyder-værtsnavn, der forekommer i en forespørgsel eller et andet værtsnavn, omskrives ikke. Værtstilladelseslisten undgår at dekryptere ikke-relaterede destinationer fra den valgte proces. lazy plus upstream_cert=false undgår en unødvendig certifikatsniffende forbindelse til den oprindelige udbyder. TLS-verifikation af den faktiske upstream er stadig aktiveret.

Visual Studio er ikke VS kode. En udvidelse kan sende anmodninger gennem en separat ServiceHub, sprogserver eller hjælperproces i stedet for devenv. Identificer den faktiske netværksejeproces, før du udvider optagelsen. Sådan inspicerer du Visual Studio-forekomster:

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

Erstatte local:devenv med local:12345 ved at bruge det faktiske PID eller en kommasepareret liste over eksplicit identificerede PID'er. PID'er ændres efter genstart. Må ikke bruges $PID for en brugerdefineret PowerShell-variabel; det refererer til PowerShells egen proces. Skift ikke til hele maskinen --mode local blot for at få en manglende anmodning til at dukke op.

Linux: den samme scoped mapping

Installer en aktuel officiel mitmproxy build og kontroller mitmweb --version og uname -r. Local Capture bruger eBPF; det officielle supportgulv er Linux 6.8. Det har brug for en privilegeret hjælper startet igennem sudo. Løbe mitmweb som din almindelige bruger med --mode local:... på kommandolinjen, så den kan anmode om det privilegium; undgå at skifte hele proxyen til root og bruge den ved et uheld /root/.mitmproxy.

Start først CA'en under din almindelige konto, og stop derefter med Ctrl+C:

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

Foretrækker applikationens dokumenterede brugerdefinerede CA-mekanisme. På Ubuntu/Debian, applikationer, der bruger systemtillidslageret, kan i stedet bruge denne valgfri, systemdækkende 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

Genstart klienten. En privat Java/Node/browser-tillidsbutik eller et begrænset program kan have brug for sin egen dokumenterede tillidsopsætning; import til OS-butikken garanterer ikke, at hver klient har tillid til den. Andre distributioner bruger deres egne CA-store procedurer.

For en lokal VS-kodeproces navngivet code, kortlægningen 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 skal du bruge den faktiske anmodningsproducerende proces/PID, ikke nødvendigvis editorvinduet. Inspicere ps -eo pid,comm,args og erstatning local:12345 efter behov. Linux-navnematchning er begrænset til de første 16 tegn. Local Capture på WSL understøttes ikke, og containere har brug for værtsnetværk til denne tilstand. Trafik fra en SSH/fjernudvidelsesvært skal konfigureres på den maskine, hvor denne proces kører, ikke kun på dit skrivebord.

Streaming, stier og andre udbydere

Addonet med kun svar videresender HTTP-svar uden at vente på det komplette svar, hvilket er vigtigt for levering af SSE-tokener. Anmodningsorganer forbliver bufferet indtil map_remote har ændret destinationen. Streaming-organer tilbageholdes ikke som standard til inspektion; overskrifter og status forbliver nyttige. Aktiver ikke kropsretention eller floweksport kun for at fejlfinde en nøgle. Denne indstilling ændrer ikke klientens JSON stream flag og kan ikke lave en ikke-streamingudbyder stream.

Standardtilknytningen bevarer stier. En klient sender /chat/completions uden /v1 vil stadig sende den sti til Model Gate og kan modtage 404. Kun for en kilde-API, hvis stier vides at kræve denne normalisering, udskift map_remote værdi med:

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

Dette tilføjer bevidst én /v1/ præfiks, bevare en eksisterende, den resterende sti og forespørgsel. Det er en separat sti-ændrende variant, ikke det eneste eksempel. Bekræft det resulterende slutpunkt, før du sender en rigtig prompt.

For en anden udbyder skal du erstatte det nøjagtige kildeværtsnavn i begge allow-hosts og map_remote, escape regex-prikker, og vælg den korrekte måloprindelse/sti. Hold tændstikken forankret med ^https:// og en værtsnavngrænse; Brug aldrig en bred substring-erstatning. Eksisterende gemte tilføjelser eller omskrivningsregler kan ændre resultatet, så inspicér din mitmproxy-konfiguration før test.

Accept og fejlfinding

Test først routing med en dummy-legitimationsoplysninger og ikke-følsom prompt; en godkendelsesfejl på det tilsigtede mål forventes. Først efter at destinationen er bekræftet, lav en bevidst lille anmodning med en dedikeret begrænset nøgle; slutning kan faktureres. I mitmweb skal du kontrollere, at destinationen er den tilsigtede Model Gate API-vært, stien er understøttet, model-id/alias findes, og HTTP-status er vellykket. Tjek Model Gate Request History og bekræft, at streamet tekst ankommer gradvist. Udgiv ikke en autorisationsheader eller en floweksport som bevis.

Ingen fanget anmodning. Den faktiske hjælper/PID, capture-privilegier, lokal kontra fjernudførelse, kildeværtsnavn og kerneunderstøttelse.

TLS-certifikatfejl. Korrekt CA/profil/butik og klientgenstart. Certifikatfastgørelse er en kompatibilitetsbegrænsning, ikke en grund til at deaktivere bekræftelse.

401. Klienten skal bruge en Model Gate-nøgle til den matchende konto/API-domæne; map_remote udveksler ikke legitimationsoplysninger.

404. Undersøg den faktiske sti; kortlægning kun oprindelse tilføjer ikke /v1.

400 eller messages.0 / system fejl. Tjek anmodningsprotokolkompatibilitet. En oprindelsesomskrivning oversætter ikke meddelelsesroller eller andre JSON-felter.

Modellen er ikke tilgængelig. Brug et aktiveret kanonisk ID eller eksisterende alias; kortlægning omdøber ikke model.

Streaming ankommer på én gang. Tjek, at den kun svar-addon blev indlæst, klientens stream værdi og faktisk udbydersupport. Aktiver ikke global anmodningsstreaming.

Stop og fjern tillid

Før du stopper aflytning, skal du lukke klienten eller fjerne Model Gate-nøglen fra dens oprindelige udbyderkonfiguration. Ellers kan dens næste direkte anmodning sende nøglen til den originale udbyder. Antag ikke, at stop af proxyen mislykkes lukket. Stop mitmweb med Ctrl+C, og gendan derefter klientens normale slutpunkt/nøgleindstillinger.

Til Windows Nuværende bruger import ovenfor, fjern kun denne installations nøjagtige 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.' }

Til det valgfrie Lokal maskine importere, brug en forhøjet skal og certutil -delstore Root $cert.Thumbprint i stedet. Behold den offentlige CA-fil, indtil du har identificeret og fjernet det matchende betroede certifikat; slet ikke ubeslægtede betroede rødder efter navn.

For Ubuntu/Debian-systemdækkende import ovenfor:

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

Fjern også enhver applikationsspecifik CA-konfiguration. Genstart klienter. Slet følsomme fangede artefakter, og drej den dedikerede Model Gate-nøgle, hvis den blev afsløret eller sendt til en utilsigtet destination. Disse arbejdsstationstrin kræver ikke ændring af nginx, servertillidsbutikker, produktion .env filer eller Model Gates TLS-politik.

Officielle referencer

Anmeldt 2026-09-08. Bekræft indstillinger mod din installerede mitmweb --options; klientfangst og tillidsadfærd kræver stadig test på din arbejdsstation.