Végpont felülbírálása Windows és Linux rendszeren

Egy felhatalmazott helyi ügyfél rögzített HTTPS-végpontjának irányítása a mitmproxyn keresztül, hatókörű rögzítéssel, TLS megbízhatósággal, adatfolyam-továbbítással és visszaállítással.

Használja a kliens beépített funkcióját Alap URL / Egyéni végpont / BYOK beállítást, amikor csak lehetséges. Lásd Csatlakozási útmutatók és GitHub másodpilóta. A helyi HTTPS-elfogás egy opcionális tartalék egy olyan ügyfél számára, amely nem tudja megváltoztatni a végpontját, nem követelmény a Model Gate használatához.

Ez nem univerzálisan kompatibilis. Az ügyfélnek el kell küldenie a Model Gate-fiókja által támogatott protokollt, elérési utat és modellt, el kell fogadnia a helyi tanúsító hatóságot, és lehetővé kell tennie a Model Gate API-kulcs konfigurálását. A tanúsítvány rögzítése, a privát megbízhatósági tároló, az aláírt kérelmek, a merev kódolású modell vagy a távoli bővítmény gazdagép megakadályozhatja ennek a módszernek a működését. Az URL-cím átírása nem alakítja át az OpenAI csevegéskiegészítéseket antropikus üzenetekké vagy válaszokká, nem ad hozzá modellképességeket, és nem helyettesíti a GitHub-hitelesítést.

Csak az Ön tulajdonában lévő vagy ellenőrzésre jogosult alkalmazásokat és forgalmat szabad lehallgatni. Szerezzen jóváhagyást a felügyelt munkaállomásokon. A mitmproxy látja a visszafejtett promptokat, a forráskódot és a hitelesítési fejléceket; helyi CA privát kulcsa megszemélyesítheti a HTTPS-kiszolgálókat a benne megbízó ügyfelek számára. Ne ossza meg a CA privát kulcsait, ne exportáljon módosítatlan folyamokat/HAR-fájlokat, ne tegye ki felhasználói felületét a hálózatnak, és ne tiltsa le a TLS-ellenőrzést.

Mit változtat meg ez a példa

A példa pontosan ezt a forrásforrást képezi le a webhely dokumentációjában látható Model API eredetével:

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

Konfigurálja a dedikált Model Gate API kulcs, nem pedig DeepSeek kulcsot, az ügyfél hitelesítő adatmezőjében. Válasszon egy engedélyezett Model Gate modellt vagy rendszergazda által kezelt álnevet a listából modell katalógus. Használja az útmutatóban látható Model API-eredetet a hozzá tartozó API-kulccsal; ne használja a panelt vagy a Partner API gazdagépet.

A szabály nem szerkeszti szándékosan a HTTP-módszert, elérési utat, lekérdezést, JSON törzset, model, Authorization, vagy a JSON stream érték. Megváltoztatja a célt és a HTTP Host / HTTP/2 :authority; upstream TLS csatlakozik az új célhoz. A HTTP-verzió, a fejléc betű- és sorrendje, a csatlakozási fejlécek és a keretezés is eltérhet. Ez nem az összes fejléc vagy hálózati forgalom bájtonkénti megőrzése.

Csak válaszadási adatfolyam előkészítése (mindkét rendszer)

Mentse el a következőt másként model-gate-response-stream.py a munkakönyvtárában. Ugyanez a fájl szerepel a PHP alkalmazáson belüli kiadásban a címen deploy/client-tools/; a mitmproxy-n belül fut, és nincs szüksége külön Python-telepítésre a natív csomag használatakor.

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

A beépített map_remote addon átírja a célt a kér hook, a kérés törzsének beolvasása után. Tartsa letiltva a kérések adatfolyamát, amíg az átírás meg nem történik. Ne használja --set stream_large_bodies=1 ezzel a recepttel: az átírás előtt továbbíthatja az eredeti kérést. A fenti kis kiegészítő csak válaszfolyamatokat tesz lehetővé, beleértve az SSE-t is, a JSON törzsének módosítása vagy a kérések újrajátszása nélkül.

Az alábbi parancsok használatosak --set stream_large_bodies egyenlőségjel vagy érték nélkül az opcionális beállítás visszaállításához None, és kifejezetten letiltja a streamelt test megtartását. A bővítmény elutasítja a globális streamelési küszöb későbbi engedélyezését. Távolítsa el a többi kérés-adatfolyam-/újraírás-kiegészítőt ebből a dedikált munkamenetből, és javítsa ki az indítási hibákat, mielőtt kulcsot helyezne el az ügyfélben. A proxy nem egy sikertelenül lezárt hitelesítő adathatár: először érvényesítse az útvonalat egy álkulccsal.

Windows: Visual Studio példa

Telepítse a hivatalos natív Windows-csomagot innen mitmproxy letöltések. Nyissa meg újra a PowerShellt, és ellenőrizze mitmweb --version. Ne telepítse a WSL-be ezt a Windows-folyamat példáját.

Hozzon létre és bízzon meg a telepítés helyi CA-jában

Indítsa el egyszer ugyanazzal a Windows-fiókkal, amelyen a proxy fut:

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

Indítás után állítsa le a következővel Ctrl+C. A mitmproxy létrehozza a CA-ját %USERPROFILE%\.mitmproxy. Inkább Jelenlegi felhasználó bizalom egy Ön által használt alkalmazásban:

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

Csak a saját telepítése által generált CA-ban bízzon. mitmproxy-ca-cert.cer a nyilvános tanúsítvány; mitmproxy-ca.pem tartalmazza a privát kulcsot is, és privátnak kell maradnia. A bizalom megváltoztatása után indítsa újra a Visual Studio-t.

Csak akkor, ha egy jóváhagyott alkalmazás kifejezetten szükséges Helyi gép bízzon, használjon emelt szintű PowerShellt és certutil -addstore Root "$ca" nélkül -user. Ez az egész gépen megbízik a CA-ban, egy szélesebb körű biztonsági változtatás, és az alábbi megfelelő gép-áruház eltávolítását igényli. Az a. alatti magasság különböző a rendszergazdai fiók más profilt és CA-t használhat; a fiók, a tanúsítvány és a proxy konfiguráció konzisztenciája legyen.

Csak a tervezett folyamatot és gazdagépet rögzítse

Futtassa a natív PowerShellt rendszergazdaként, ha a Windows rögzítési engedélyei megkövetelik, ugyanazzal a fiókkal/profillal. Először indítsa el a Visual Studio-t. Ez a példa a folyamat nevét célozza meg 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/'

Nem lehet szóköz a PowerShell sorfolytatója után. A rögzített szabály csak a megadott HTTPS-forrásnak felel meg, beleértve az explicit 443-as portot is; a lekérdezésben vagy egy másik gazdagépnévben előforduló szolgáltatói gazdagépnév nem íródik át. A gazdagép engedélyezési listája elkerüli a nem kapcsolódó célhelyek visszafejtését a kiválasztott folyamatból. lazy plusz upstream_cert=false elkerüli a szükségtelen tanúsítványszippantást az eredeti szolgáltatóval. A tényleges upstream TLS-ellenőrzése továbbra is engedélyezve van.

A Visual Studio az nem VS kód. A bővítmények külön ServiceHubon, nyelvi kiszolgálón vagy segédfolyamatokon keresztül küldhetnek kéréseket, nem pedig devenv. A rögzítés kiterjesztése előtt azonosítsa a tényleges hálózattulajdonlási folyamatot. A Visual Studio példányok ellenőrzése:

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

Cserélje ki local:devenv -vel local:12345 a tényleges PID vagy a kifejezetten azonosított PID-ek vesszővel elválasztott listája használatával. A PID-ek az újraindítás után megváltoznak. Ne használja $PID egyéni PowerShell-változóhoz; a PowerShell saját folyamatára utal. Ne váltson át a teljes gépre --mode local pusztán egy hiányzó kérés megjelenítésére.

Linux: ugyanaz a hatókörű leképezés

Telepítsen egy aktuális hivatalos mitmproxy buildet, és ellenőrizze mitmweb --version és uname -r. A Local Capture eBPF-et használ; a hivatalos támogatási szint a Linux 6.8. Egy kiváltságos segítőre van szükség, amivel elkezdték sudo. Fut mitmweb mint a hétköznapi felhasználója --mode local:... a parancssorban, így kérheti ezt a jogosultságot; kerülje a teljes proxy gyökérre váltását és a véletlen használatát /root/.mitmproxy.

Először inicializálja a CA-t a szokásos fiókjában, majd hagyja abba Ctrl+C:

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

Részesítse előnyben az alkalmazás dokumentált egyéni CA-mechanizmusát. On Ubuntu/Debian, a rendszer megbízhatósági tárolóját használó alkalmazások ezt az opcionális, rendszerszintű telepítést használhatják:

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

Indítsa újra a klienst. Egy privát Java/csomópont/böngésző megbízhatósági tárolónak vagy egy korlátozott alkalmazásnak saját, dokumentált megbízhatósági beállításra lehet szüksége; az operációs rendszer áruházába történő importálás nem garantálja, hogy minden ügyfél megbízik benne. Más disztribúciók saját CA-tároló eljárásokat alkalmaznak.

nevű helyi VS Code folyamathoz code, a leképezés a következő:

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

A Windowshoz hasonlóan a tényleges kérés-előállító folyamatot/PID-t használja, nem feltétlenül a szerkesztőablakot. Vizsgálja meg ps -eo pid,comm,args és helyettesíti local:12345 szükség szerint. A Linux névegyeztetés az első 16 karakterre korlátozódik. A WSL helyi rögzítése nem támogatott, és a tárolóknak ehhez a módhoz gazdahálózatra van szükségük. Az SSH/távoli bővítmény gazdagépről érkező forgalmat azon a gépen kell konfigurálni, amelyen a folyamat fut, nem csak az asztalon.

Streaming, útvonalak és egyéb szolgáltatók

A csak válaszokat tartalmazó bővítmény a teljes válasz megvárása nélkül továbbítja a HTTP-válaszokat, ami fontos az SSE-jogkivonat kézbesítéséhez. A kérelmek testületei addig pufferelve maradnak map_remote megváltoztatta az úti célt. Az adatfolyam-testek alapértelmezés szerint nem maradnak meg ellenőrzésre; fejlécek és állapot továbbra is hasznosak maradnak. Ne engedélyezze a test megtartását vagy az áramlási exportot pusztán a kulcsok hibaelhárítása érdekében. Ez a beállítás nem módosítja az ügyfél JSON-ját stream jelölje meg, és nem tud nem streaming szolgáltatói adatfolyamot létrehozni.

Az alapértelmezett leképezés megőrzi az útvonalakat. Egy ügyfél küldése /chat/completions nélkül /v1 továbbra is elküldi ezt az útvonalat a Model Gate-nek, és megkaphatja a 404-et. Csak olyan forrás API-hoz, amelynek elérési útjairól ismert, hogy szükség van erre a normalizálásra, cserélje ki a map_remote érték a következővel:

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

Ez szándékosan hozzáad egyet /v1/ előtag, egy meglévő megőrzése, a fennmaradó elérési út és lekérdezés. Ez egy külön útváltó változat, nem csak az eredetre vonatkozó példa. Valódi prompt küldése előtt ellenőrizze az eredményül kapott végpontot.

Másik szolgáltató esetén cserélje ki a pontos forrás hosztnevet mindkét allow-hosts és map_remote, hagyja el a reguláris kifejezési pontokat, és válassza ki a megfelelő cél origót/útvonalat. Tartsa rögzítve a mérkőzést ^https:// és egy gazdagépnév határ; soha ne használjon széles részstring helyettesítést. A meglévő mentett kiegészítők vagy átírási szabályok megváltoztathatják az eredményt, ezért a tesztelés előtt ellenőrizze a mitmproxy konfigurációját.

Elfogadás és hibaelhárítás

Első tesztútválasztás ál hitelesítő adatokkal és nem érzékeny prompttal; hitelesítési hiba várható a tervezett célnál. Csak az úti cél megerősítése után adjon meg egy szándékosan kis kérést egy dedikált korlátozott kulccsal; következtetés számlázható lehet. A mitmwebben ellenőrizze, hogy a cél a tervezett Model Gate API-állomás, az elérési út támogatott-e, a modellazonosító/álnév létezik-e, és a HTTP állapot sikeres-e. Ellenőrizze a modellkapu-kérés előzményeit, és győződjön meg arról, hogy a streamelt szöveg fokozatosan érkezik. Ne tegyen közzé hitelesítési fejlécet vagy folyamatexportálást bizonyítékként.

Nincs rögzített kérés. A tényleges helper/PID, rögzítési jogosultságok, helyi versus távoli végrehajtás, forrás hosztnév és kernel támogatás.

TLS-tanúsítványhiba. Helyes CA/profil/üzlet és kliens újraindítása. A tanúsítvány rögzítése kompatibilitási korlátozás, nem pedig ok az ellenőrzés letiltására.

401. Az ügyfélnek Model Gate kulcsot kell használnia a megfelelő fiókhoz/API-tartományhoz; A map_remote nem cserél hitelesítő adatokat.

404. Vizsgálja meg a tényleges utat; A csak eredetre vonatkozó leképezés nem ad hozzá /v1.

400 ill messages.0 / system hiba. Ellenőrizze a kérés-protokoll kompatibilitást. Az eredet átírása nem fordítja le az üzenetszerepeket vagy más JSON-mezőket.

A modell nem elérhető. Használjon engedélyezett kanonikus azonosítót vagy meglévő álnevet; a leképezés nem nevezi át model.

A streamelés egyszerre érkezik. Ellenőrizze, hogy a csak válaszadást biztosító bővítmény sikeresen betöltődött-e az ügyfélnél stream érték és tényleges szolgáltatói támogatás. Ne engedélyezze a globális kérések streamingjét.

Állj le és távolítsd el a bizalmat

Az elfogás leállítása előtt zárja be az ügyfelet, vagy távolítsa el a Model Gate kulcsot az eredeti szolgáltató konfigurációjából. Ellenkező esetben a következő közvetlen kérés elküldheti ezt a kulcsot az eredeti szolgáltatónak. Ne feltételezze, hogy a proxy leállítása meghiúsul. Állítsa le a mitmweb-et a Ctrl+C billentyűkombinációval, majd állítsa vissza az ügyfél normál végpont-/kulcsbeállításait.

A Windows számára Jelenlegi felhasználó a fenti importálásnál csak a telepítés pontos tanúsítványát távolítsa el:

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

Az opcionálishoz Helyi gép importálás, emelt héj használata és certutil -delstore Root $cert.Thumbprint helyette. Tartsa meg a nyilvános CA-fájlt, amíg meg nem azonosítja és eltávolítja a megfelelő megbízható tanúsítványt; ne törölje név szerint a nem kapcsolódó megbízható gyökereket.

A fenti Ubuntu/Debian rendszerszintű importáláshoz:

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

Távolítson el minden alkalmazás-specifikus CA-konfigurációt is. Indítsa újra az ügyfeleket. Törölje az érzékeny rögzített műtermékeket, és forgassa el a dedikált Model Gate kulcsot, ha nyilvánosságra került vagy nem szándékolt célállomásra küldték. Ezek a munkaállomás lépések nem igénylik az nginx, a szerver megbízhatósági tárolók és a termelés módosítását .env fájlokat vagy a Model Gate TLS szabályzatát.

Hivatalos referenciák

Értékelés ideje: 2026-09-08. Erősítse meg a telepített opciókat mitmweb --options; Az ügyfélrögzítés és a bizalom viselkedése továbbra is tesztelést igényel a munkaállomáson.