Замяна на крайна точка в Windows и Linux
Маршрутизирайте фиксирана HTTPS крайна точка на оторизиран локален клиент през mitmproxy, с прихващане с обхват, TLS доверие, поточно предаване и връщане назад.
Използвайте вграден клиент Основен URL адрес / Персонализирана крайна точка / BYOK настройка, когато е възможно. Вижте Ръководства за свързване и Копилот на GitHub. Локалното HTTPS прихващане е незадължителен резервен вариант за клиент, който не може да промени своята крайна точка, а не изискване за използване на Model Gate.
Това не е универсално съвместимо. Клиентът трябва да изпрати протокол, път и модел, поддържани от вашия акаунт в Model Gate, да приеме вашия местен сертифициращ орган и да ви позволи да конфигурирате API ключ на Model Gate. Фиксирането на сертификат, частно доверително хранилище, подписани заявки, твърдо кодиран модел или отдалечен хост на разширение могат да попречат на този метод да работи. Пренаписването на URL не преобразува OpenAI Chat Completions в антропни съобщения или отговори, не добавя възможности на модела или не замества удостоверяването на GitHub.
Прихващайте само приложения и трафик, които притежавате или сте упълномощени да проверявате. Получаване на одобрение за управлявани работни станции. mitmproxy вижда дешифрирани подкани, изходен код и заглавки за удостоверяване; неговият локален CA частен ключ може да имитира HTTPS сървъри на клиенти, които му се доверяват. Не споделяйте частни ключове на CA, не експортирайте нередактирани потоци/HAR файлове, не излагайте потребителския му интерфейс на мрежата или не деактивирайте TLS проверката.
Какво променя този пример
Примерът съпоставя точно този произход на източника с произхода на API на модела, показан в документацията на този сайт:
https://api.deepseek.com/v1/chat/completions
-> local mitmproxy
-> https://api.model-gate.com/v1/chat/completions
Конфигурирайте a специален ключ за API на Model Gate, а не ключ DeepSeek, в полето за идентификационни данни на клиента. Изберете активиран модел на модел Gate или управляван от администратор псевдоним от каталог на моделите. Използвайте произхода на API на модела, показан в това ръководство, със съответния ключ на API; не използвайте панела или партньорския API хост.
Правилото не редактира умишлено HTTP метода, пътя, заявката, тялото на JSON, model, Authorization, или JSON stream стойност. Той променя дестинацията и HTTP Host / HTTP/2 :authority; TLS нагоре по веригата се свързва с новата дестинация. HTTP версията, корпусът/редът на заглавката, заглавките на връзката и рамката също могат да се различават. Това не е байт за байт запазване на всички заглавки или мрежов трафик.
Подгответе поточно предаване само за отговор (и двете системи)
Запазете следното като model-gate-response-stream.py във вашата работна директория. Същият файл е включен в изданието в PHP приложението на адрес deploy/client-tools/; той работи вътре в mitmproxy и не се нуждае от отделна инсталация на Python, когато използва собствения пакет.
"""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
Вграденият map_remote addon пренаписва дестинацията в искане кука, след като тялото на заявката бъде прочетено. Поддържайте поточно предаване на заявка деактивирано, докато това пренаписване не се случи. Не използвайте --set stream_large_bodies=1 с тази рецепта: може да препрати оригиналната заявка преди пренаписването. Малката добавка по-горе позволява само поточно предаване на отговор, включително SSE, без промяна на тялото на JSON или повторно възпроизвеждане на заявки.
Командите по-долу използват --set stream_large_bodies без знак за равенство или стойност за да нулирате тази незадължителна настройка на Noneи изрично деактивирайте задържането на поточно тяло. Добавката отхвърля разрешаването на глобален праг за поточно предаване по-късно. Премахнете други добавки за поточно предаване/пренаписване на заявки от тази специална сесия и отстранете всички грешки при стартиране, преди да поставите ключ в клиента. Проксито не е граница на идентификационни данни със затворена грешка: първо проверете маршрута с фиктивен ключ.
Windows: Пример за Visual Studio
Инсталирайте официалния роден пакет за Windows от mitmproxy изтегляния. Отворете отново PowerShell и проверете mitmweb --version. Не инсталирайте вътре в WSL за този пример за процес на Windows.
Създайте и се доверете на локалния CA на тази инсталация
Стартирайте веднъж под същия Windows акаунт, който ще стартира проксито:
mitmweb --listen-host 127.0.0.1 --web-host 127.0.0.1
След стартиране го спрете с Ctrl+C. mitmproxy създава своя CA в %USERPROFILE%\.mitmproxy. Предпочитам Текущ потребител доверие за приложение, работещо като вие:
$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.' }
Доверете се само на CA, генериран от вашата собствена инсталация. mitmproxy-ca-cert.cer е публичното удостоверение; mitmproxy-ca.pem също съдържа частния ключ и трябва да остане частен. Рестартирайте Visual Studio след промяна на доверието.
Само когато одобреното приложение има конкретна нужда Локална машина доверие, използвайте повишен PowerShell и certutil -addstore Root "$ca" без -user. Това се доверява на цялата машина на CA, представлява по-широка промяна в сигурността и изисква премахването на съответстващото хранилище на машината по-долу. Кота под а различни администраторският акаунт може да използва различен профил и CA; поддържайте последователни конфигурацията на акаунта, сертификата и проксито.
Уловете само предвидения процес и хост
Стартирайте родния PowerShell като администратор, когато се изисква от разрешенията за заснемане на Windows, като използвате същия акаунт/профил. Първо стартирайте Visual Studio. Този пример е насочен към името на процеса 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/'
Не трябва да има интервали след обратната отметка за продължение на реда на PowerShell. Закотвеното правило отговаря само на посочения HTTPS произход, включително изричен порт 443; име на хост на доставчик, което се среща в заявка или друго име на хост не се пренаписва. Списъкът с разрешени хостове избягва дешифрирането на несвързани дестинации от избрания процес. lazy плюс upstream_cert=false избягва ненужна връзка за надушване на сертификати към оригиналния доставчик. TLS проверката на действителния поток все още е активирана.
Visual Studio е не VS код. Разширението може да изпраща заявки чрез отделен ServiceHub, езиков сървър или помощен процес, вместо devenv. Идентифицирайте действителния процес на притежаване на мрежата, преди да разширите улавянето. За да проверите екземпляри на Visual Studio:
Get-Process -Name devenv | Select-Object Id, ProcessName, Path
Сменете local:devenv с local:12345 използвайки действителния PID или разделен със запетаи списък с изрично идентифицирани PID. PID се променят след рестартиране. Не използвайте $PID за персонализирана променлива на PowerShell; отнася се до собствения процес на PowerShell. Не превключвайте към цяла машина --mode local просто за да се появи липсваща заявка.
Linux: съпоставяне със същия обхват
Инсталирайте текуща официална компилация на mitmproxy и проверете mitmweb --version и uname -r. Local Capture използва eBPF; официалният етаж за поддръжка е Linux 6.8. Нуждае се от привилегирован помощник, който да започне sudo. Бягай mitmweb като вашия обикновен потребител с --mode local:... на командния ред, за да може да поиска тази привилегия; избягвайте да превключвате целия прокси към root и случайно да използвате /root/.mitmproxy.
Първо инициализирайте CA под обикновения си акаунт, след което спрете Ctrl+C:
mitmweb --listen-host 127.0.0.1 --web-host 127.0.0.1
Предпочитайте документирания персонализиран CA механизъм на приложението. включено Ubuntu/Debian, приложенията, използващи хранилището за доверие на системата, могат вместо това да използват тази незадължителна инсталация за цялата система:
sudo install -m 0644 "$HOME/.mitmproxy/mitmproxy-ca-cert.pem" \
/usr/local/share/ca-certificates/model-gate-local-mitmproxy.crt
sudo update-ca-certificates
Рестартирайте клиента. Частно доверително хранилище на Java/възел/браузър или затворено приложение може да се нуждае от собствена документирана настройка на доверие; импортирането в OS store не гарантира, че всеки клиент му се доверява. Други дистрибуции използват свои собствени процедури за CA-store.
За локален VS Code процес с име code, картографирането е:
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/'
Както при Windows, използвайте действителния процес/PID за създаване на заявка, а не непременно прозореца на редактора. Огледайте ps -eo pid,comm,args и заместител local:12345 според нуждите. Съвпадението на имена в Linux е ограничено до първите 16 знака. Local Capture на WSL не се поддържа и контейнерите се нуждаят от хост мрежа за този режим. Трафикът от хост на SSH/отдалечено разширение трябва да бъде конфигуриран на машината, на която се изпълнява този процес, а не само на вашия работен плот.
Поточно предаване, пътища и други доставчици
Добавката само за отговор препраща HTTP отговори, без да чака пълния отговор, което е важно за доставката на SSE токен. Телата на заявката остават буферирани до map_remote промени дестинацията. Телата за поточно предаване не се запазват за проверка по подразбиране; заглавките и състоянието остават полезни. Не разрешавайте задържането на тялото или експортирането на поток само за отстраняване на неизправност с ключ. Тази настройка не променя JSON на клиента stream флаг и не може да направи поточно предаване на доставчик без стрийминг.
Картографирането по подразбиране запазва пътищата. Клиент изпраща /chat/completions без /v1 пак ще изпрати този път до Model Gate и може да получи 404. Само за изходен API, чиито пътеки изискват тази нормализация, заменете map_remote стойност с:
map_remote=|^https://api\.deepseek\.com(?::443)?/(?:v1/)?|https://api.model-gate.com/v1/
Това умишлено добавя един /v1/ префикс, запазване на съществуващ, оставащия път и заявка. Това е отделен вариант за промяна на пътя, а не примерът само за произход. Проверете получената крайна точка, преди да изпратите истинска подкана.
За друг доставчик заменете точното име на хост източника и двете allow-hosts и map_remote, екранирайте regex точките и изберете правилния целеви произход/път. Дръжте мача закотвен с ^https:// и граница на име на хост; никога не използвайте широка замяна на подниз. Съществуващите запазени добавки или правила за пренаписване могат да променят резултата, така че проверете конфигурацията на mitmproxy преди тестване.
Приемане и отстраняване на проблеми
Първо тестово маршрутизиране с фиктивни идентификационни данни и нечувствителна подкана; се очаква неуспешно удостоверяване на предвидената цел. Само след като дестинацията е потвърдена, направете една съзнателно малка заявка със специален ограничен ключ; изводът може да бъде таксуван. В mitmweb проверете дали местоназначението е предвиденият хост на API на Model Gate, пътят се поддържа, ID/псевдонимът на модела съществува и HTTP статусът е успешен. Проверете хронологията на заявките за модел Gate и потвърдете, че поточно предаваният текст пристига постепенно. Не публикувайте заглавка на разрешение или експорт на поток като доказателство.
Няма уловена заявка. Действителният помощник/PID, привилегиите за улавяне, локално спрямо отдалечено изпълнение, изходно име на хост и поддръжка на ядрото.
Грешка на TLS сертификата. Правилно рестартиране на CA/профил/магазин и клиент. Фиксирането на сертификат е ограничение за съвместимост, а не причина за деактивиране на проверката.
401. Клиентът трябва да използва модел Gate ключ за съвпадащия акаунт/API домейн; map_remote не обменя идентификационни данни.
404. Проверете действителния път; картографирането само за произход не добавя /v1.
400 или messages.0 / system грешка. Проверете съвместимостта на заявка-протокол. Пренаписването на произхода не превежда роли на съобщение или други JSON полета.
Моделът не е наличен. Използвайте активиран каноничен идентификатор или съществуващ псевдоним; картографирането не преименува model.
Поточно предаване пристига наведнъж. Проверете дали добавката само за отговор е заредена успешно, на клиента stream стойност и действителна поддръжка от доставчика. Не активирайте стрийминг на глобални заявки.
Спрете и премахнете доверието
Преди да спрете прихващането, затворете клиента или премахнете ключа Model Gate от първоначалната му конфигурация на доставчика. В противен случай следващата му директна заявка може да изпрати този ключ до първоначалния доставчик. Не приемайте, че спирането на проксито е неуспешно затворено. Спрете mitmweb с Ctrl+C, след което възстановете нормалните настройки на крайна точка/ключ на клиента.
За Windows Текущ потребител импортирайте по-горе, премахнете само точния сертификат на тази инсталация:
$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.' }
За незадължителните Локална машина импортирайте, използвайте повишена черупка и certutil -delstore Root $cert.Thumbprint вместо това. Съхранявайте публичния CA файл, докато не идентифицирате и премахнете съответстващия доверен сертификат; не изтривайте несвързани надеждни корени по име.
За импортирането в цялата система на Ubuntu/Debian по-горе:
sudo rm -- /usr/local/share/ca-certificates/model-gate-local-mitmproxy.crt
sudo update-ca-certificates --fresh
Премахнете и всяка специфична за приложението CA конфигурация. Рестартирайте клиентите. Изтрийте чувствителните уловени артефакти и завъртете специалния ключ за моделна врата, ако е бил разкрит или изпратен до нежелана дестинация. Тези стъпки на работната станция не изискват промяна на nginx, доверителни хранилища на сървъра, производство .env файлове или TLS политиката на Model Gate.
Официални справки
Прегледано на 2026-09-08. Потвърдете опциите спрямо вашите инсталирани mitmweb --options; улавянето на клиента и поведението на доверие все още изискват тестване на вашата работна станция.
- mitmproxy Local Capture режими и ограничения
- mitmproxy URL картографиране и стрийминг
- пример за добавка за поточно предаване на отговор на mitmproxy
- mitmproxy map_remote реализация на кука за заявка
- mitmproxy опции
- mitmproxy CA сертификати и фиксиране
- mitmproxy HTTP заявка дестинация и пълномощия
- Сертификат на Microsoft
- Инсталиране и премахване на Ubuntu CA