Preglasitev končne točke v sistemih Windows in Linux

Usmerite fiksno končno točko HTTPS pooblaščenega lokalnega odjemalca prek mitmproxy z zajemanjem v obsegu, zaupanjem TLS, pretakanjem in povrnitvijo nazaj.

Uporabite vgrajeno odjemalca Osnovni URL / končna točka po meri / BYOK nastavitev, kadar koli je to mogoče. Glej Navodila za povezavo in GitHub kopilot. Lokalno prestrezanje HTTPS je neobvezna nadomestna možnost za odjemalca, ki ne more spremeniti svoje končne točke, in ni pogoj za uporabo Model Gate.

To ni univerzalno združljivo. Odjemalec mora poslati protokol, pot in model, ki ga podpira vaš račun Model Gate, sprejeti vaš lokalni overitelj potrdil in vam omogočiti konfiguracijo ključa API Model Gate. Pripenjanje potrdila, zasebna zaupanja vredna trgovina, podpisane zahteve, trdo kodiran model ali oddaljeni gostitelj razširitve lahko preprečijo delovanje te metode. Prepis URL-ja ne pretvori zaključkov klepeta OpenAI v antropična sporočila ali odzive, ne doda zmožnosti modela ali nadomesti preverjanja pristnosti GitHub.

Prestrezajte samo aplikacije in promet, ki ste v vaši lasti ali ste za pregled pooblaščeni. Pridobite odobritev za upravljane delovne postaje. mitmproxy vidi dešifrirane pozive, izvorno kodo in glave za preverjanje pristnosti; njegov lokalni zasebni ključ CA lahko pooseblja strežnike HTTPS strankam, ki mu zaupajo. Ne delite zasebnih ključev CA, ne izvažajte neredigiranih tokov/datotek HAR, ne izpostavljajte njegovega uporabniškega vmesnika omrežju ali onemogočite preverjanja TLS.

Kaj ta primer spremeni

Primer natančno preslika ta izvorni izvor v izvor API-ja modela, prikazanega v dokumentaciji tega mesta:

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

Konfigurirajte a namenski ključ API-ja Model Gate, ne ključa DeepSeek, v odjemalčevem polju poverilnic. Izberite omogočen model Model Gate ali vzdevek, ki ga upravlja skrbnik, iz katalog modelov. Uporabite izvor API modela, ki je prikazan v tem priročniku, z ustreznim ključem API; ne uporabljajte gostitelja plošče ali partnerskega API-ja.

Pravilo namerno ne ureja metode HTTP, poti, poizvedbe, telesa JSON, model, Authorizationali JSON stream vrednost. Spremeni cilj in HTTP Host / HTTP/2 :authority; TLS navzgor se poveže z novim ciljem. Različica HTTP, črta/vrstni red glave, glave povezave in okvirjanje se lahko prav tako razlikujejo. Ne gre za ohranjanje bajt za bajtom vseh glav ali omrežnega prometa.

Pripravite pretakanje samo za odziv (oba sistema)

Shranite naslednje kot model-gate-response-stream.py v vašem delovnem imeniku. Ista datoteka je vključena v izdajo znotraj aplikacije PHP na naslovu deploy/client-tools/; deluje znotraj mitmproxy in ne potrebuje ločene namestitve Pythona, ko uporablja 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

Vgrajeni map_remote addon prepiše cilj v zahteva hook, potem ko je prebrano telo zahteve. Naj bo pretakanje zahtev onemogočeno, dokler se to ponovno pisanje ne zgodi. Ne uporabljajte --set stream_large_bodies=1 s tem receptom: lahko posreduje izvirno zahtevo pred prepisom. Zgornji majhen dodatek omogoča samo pretakanje odgovorov, vključno s SSE, brez spreminjanja telesa JSON ali ponovnega predvajanja zahtev.

Spodnji ukazi uporabljajo --set stream_large_bodies brez znaka enačaja ali vrednosti da ponastavite to izbirno nastavitev na Nonein izrecno onemogočite zadrževanje pretočnega telesa. Dodatek zavrne poznejše omogočanje globalnega praga pretakanja. Odstranite druge dodatke za pretakanje zahtev/prepisovanje iz te namenske seje in odpravite vse napake pri zagonu, preden vstavite ključ v odjemalca. Proxy ni meja poverilnic, ki ni zaprta zaradi napake: najprej potrdite pot z navideznim ključem.

Windows: primer Visual Studio

Namestite uradni izvorni paket Windows iz mitmproxy prenosi. Ponovno odprite PowerShell in preverite mitmweb --version. Ne nameščajte znotraj WSL za ta primer procesa Windows.

Ustvarite lokalni CA te namestitve in ji zaupajte

Zaženite enkrat pod istim računom Windows, ki bo izvajal proxy:

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

Po zagonu ga zaustavite z Ctrl+C. mitmproxy ustvari svoj CA v %USERPROFILE%\.mitmproxy. Raje Trenutni uporabnik zaupajte aplikaciji, ki se izvaja kot 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.' }

Zaupajte samo CA, ki ga ustvari vaša lastna namestitev. mitmproxy-ca-cert.cer je javno potrdilo; mitmproxy-ca.pem vsebuje tudi zasebni ključ in mora ostati zaseben. Po spremembi zaupanja znova zaženite Visual Studio.

Samo, če odobrena vloga posebej potrebuje Lokalni stroj zaupajte, uporabite povišan PowerShell in certutil -addstore Root "$ca" brez -user. To zaupa celotnemu stroju CA, je širša varnostna sprememba in zahteva spodnjo odstranitev ujemajoče se strojne shrambe. Nadmorska višina pod a drugačen skrbniški račun lahko uporablja drug profil in CA; ohranite dosledno konfiguracijo računa, potrdila in proxyja.

Zajemite samo predvideni proces in gostitelja

Zaženite izvorni PowerShell kot skrbnik, ko to zahtevajo dovoljenja za zajem v sistemu Windows, z uporabo istega računa/profila. Najprej zaženite Visual Studio. Ta primer cilja na ime 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/'

Za povratno kljukico PowerShell za nadaljevanje vrstice ne sme biti presledkov. Zasidrano pravilo se ujema samo z navedenim izvorom HTTPS, vključno z eksplicitnimi vrati 443; ime gostitelja ponudnika, ki se pojavi znotraj poizvedbe, ali drugo ime gostitelja ni prepisano. Seznam dovoljenih gostiteljev se izogne ​​dešifriranju nepovezanih ciljev iz izbranega procesa. lazy plus upstream_cert=false se izogne ​​nepotrebni povezavi s prvotnim ponudnikom za vohanje potrdil. TLS preverjanje dejanskega navzgor je še vedno omogočeno.

Visual Studio je ne Koda VS. Razširitev lahko pošlje zahteve prek ločenega ServiceHuba, jezikovnega strežnika ali pomožnega procesa, ne pa devenv. Ugotovite dejanski proces lastništva omrežja, preden razširite zajemanje. Če želite pregledati primerke Visual Studio:

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

Zamenjaj local:devenv z local:12345 z uporabo dejanskega PID-ja ali z vejicami ločenega seznama izrecno identificiranih PID-jev. PID-ji se spremenijo po ponovnem zagonu. Ne uporabljajte $PID za spremenljivko PowerShell po meri; nanaša se na lasten proces PowerShell. Ne preklopite na celoten stroj --mode local zgolj zato, da se pojavi manjkajoča zahteva.

Linux: preslikava z enakim obsegom

Namestite trenutno uradno zgradbo mitmproxy in preverite mitmweb --version in uname -r. Lokalni zajem uporablja eBPF; uradna podpora je Linux 6.8. Za začetek potrebuje privilegiranega pomočnika sudo. Teči mitmweb kot vaš običajni uporabnik z --mode local:... v ukazni vrstici, da lahko zahteva ta privilegij; izogibajte se preklopu celotnega proxyja na root in nenamerni uporabi /root/.mitmproxy.

Najprej inicializirajte CA pod vašim običajnim računom, nato pa prenehajte z Ctrl+C:

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

Dajte prednost dokumentiranemu mehanizmu CA po meri aplikacije. Vklopljeno Ubuntu/Debian, lahko aplikacije, ki uporabljajo sistemsko shrambo zaupanja, namesto tega uporabljajo to izbirno sistemsko namestitev:

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 zaženite odjemalca. Zasebna shramba zaupanja v Java/vozlišče/brskalnik ali omejena aplikacija morda potrebuje lastno dokumentirano nastavitev zaupanja; uvoz v trgovino OS ne zagotavlja, da mu vsaka stranka zaupa. Druge distribucije uporabljajo lastne postopke CA-store.

Za lokalni postopek kode VS imenovan code, preslikava 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/'

Tako kot v sistemu Windows uporabite dejanski postopek ustvarjanja zahteve/PID, ne nujno okno urejevalnika. Preglejte ps -eo pid,comm,args in nadomestek local:12345 po potrebi. Ujemanje imen Linux je omejeno na prvih 16 znakov. Lokalni zajem na WSL ni podprt, vsebniki pa potrebujejo gostiteljsko omrežje za ta način. Promet iz gostitelja SSH/oddaljene razširitve mora biti konfiguriran na napravi, kjer se ta proces izvaja, ne samo na namizju.

Streaming, paths in drugi ponudniki

Dodatek samo za odziv posreduje odgovore HTTP brez čakanja na celoten odgovor, kar je pomembno za dostavo žetonov SSE. Telesa zahtevka ostanejo shranjena do map_remote je spremenil cilj. Pretočna telesa privzeto niso zadržana za pregled; glave in stanje ostanejo uporabni. Ne omogočite zadrževanja telesa ali izvoza pretoka samo za odpravljanje težav s ključem. Ta nastavitev ne spremeni JSON odjemalca stream zastavico in ne more omogočiti nepretočnega ponudnika pretakanja.

Privzeta preslikava ohranja poti. Stranka pošilja /chat/completions brez /v1 bo še vedno poslal to pot v Model Gate in morda prejel 404. Samo za izvorni API, katerega poti zahtevajo to normalizacijo, zamenjajte map_remote vrednost z:

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

To namenoma doda eno /v1/ predpono, ohrani obstoječo, preostalo pot in poizvedbo. To je ločena različica spreminjanja poti in ne samo izvorni primer. Preverite nastalo končno točko, preden pošljete pravi poziv.

Za drugega ponudnika zamenjajte točno izvorno ime gostitelja oboje allow-hosts in map_remote, ubežne pike regularnega izraza in izberite pravilen ciljni izvor/pot. Naj bo tekma zasidrana z ^https:// in mejo imena gostitelja; nikoli ne uporabljajte široke zamenjave podniza. Obstoječi shranjeni dodatki ali pravila za ponovno pisanje lahko spremenijo rezultat, zato pred testiranjem preglejte svojo konfiguracijo mitmproxy.

Sprejem in odpravljanje težav

Prvo preizkusno usmerjanje z navidezno poverilnico in neobčutljivim pozivom; pričakovana napaka pri preverjanju pristnosti na predvidenem cilju. Šele ko je cilj potrjen, naredite eno namerno majhno zahtevo z namenskim omejenim ključem; sklepanje je lahko plačljivo. V mitmweb preverite, ali je cilj predvideni gostitelj API-ja Model Gate, ali je pot podprta, ID/vzdevek modela obstaja in je status HTTP uspešen. Preverite zgodovino zahtev za vrata modela in potrdite, da pretočno besedilo prihaja postopoma. Ne objavljajte glave avtorizacije ali izvoza toka kot dokaz.

Ni zajete zahteve. Dejanski pomočnik/PID, privilegiji zajemanja, lokalno izvajanje v primerjavi z oddaljenim izvajanjem, izvorno ime gostitelja in podpora za jedro.

Napaka potrdila TLS. Popravi CA/profil/trgovino in ponovni zagon odjemalca. Pripenjanje potrdila je omejitev združljivosti in ne razlog za onemogočanje preverjanja.

401. Odjemalec mora uporabiti ključ modela vrat za ujemajoči se račun/domeno API-ja; map_remote ne izmenjuje poverilnic.

404. Preverite dejansko pot; preslikava samo izvora ne dodaja /v1.

400 oz messages.0 / system napaka. Preverite združljivost protokola zahteve. Prepis izvora ne prevede vlog sporočila ali drugih polj JSON.

Model ni na voljo. Uporabite omogočen kanonični ID ali obstoječi vzdevek; preslikava ne preimenuje model.

Pretakanje prispe naenkrat. Preverite, ali se je odjemalčev dodatek samo za odziv uspešno naložil stream vrednost in dejansko podporo ponudnika. Ne omogoči globalnega pretakanja zahtev.

Ustavite in odstranite zaupanje

Preden zaustavite prestrezanje, zaprite odjemalca ali odstranite ključ Model Gate iz konfiguracije prvotnega ponudnika. V nasprotnem primeru lahko njegova naslednja neposredna zahteva ta ključ pošlje prvotnemu ponudniku. Ne domnevajte, da zaustavitev proxyja ne uspe zapreti. Zaustavite mitmweb s Ctrl+C, nato obnovite odjemalčeve običajne nastavitve končne točke/ključa.

Za Windows Trenutni uporabnik uvozite zgoraj, odstranite samo potrdilo te namestitve:

$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 neobvezno Lokalni stroj uvozite, uporabite povišano lupino in certutil -delstore Root $cert.Thumbprint namesto tega. Hranite javno datoteko CA, dokler ne identificirate in odstranite ujemajočega se zaupanja vrednega potrdila; ne izbrišite nepovezanih zaupanja vrednih korenin po imenu.

Za zgornji sistemski uvoz Ubuntu/Debian:

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

Odstranite tudi vse konfiguracije CA, specifične za aplikacijo. Znova zaženite odjemalce. Izbrišite občutljive zajete artefakte in obrnite namenski ključ Model Gate, če je bil izpostavljen ali poslan na nepredviden cilj. Ti koraki delovne postaje ne zahtevajo spreminjanja nginx, strežniških shramb zaupanja, proizvodnje .env datoteke ali pravilnik TLS Model Gate.

Uradne reference

Pregledano dne 2026-09-08. Potrdite možnosti glede na nameščeno mitmweb --options; zajem odjemalca in vedenje zaupanja še vedno zahtevata testiranje na vaši delovni postaji.