* feat(docs): mirror every docs/ page in all 65 locales Extends the documentation mirrors from the 22-page core set (#13940) to every Markdown page under docs/: 152 sources x 65 locales = 9,880 mirrors (6,208 new), language bars rewritten for the full locale list, state adopted so the blocking drift gate now covers all 152 pages. run-translation.mjs: an oversized block made only of table rows or list items (PROVIDER_REFERENCE.md 244-row table, FREE_TIERS.md 71-item list) is cut at item boundaries and rejoined without a blank line — the single 16-40 KB request outlived the backend socket for verbose scripts. 48 older mirrors whose tables had lost rows were retranslated with --force. * docs(i18n): refresh mirrors for the sources the base changed since the branch cut Section-level retranslation of the 29 docs (and README.md) whose source or mirrors moved on release/v3.8.51 during the run, then state adoption; the drift gate is green again on the merged tree.
32 KiB
Stealth Guide (Српски)
🌐 Languages: 🇺🇸 English · 🇪🇹 am · 🇸🇦 ar · 🇦🇿 az · 🇧🇬 bg · 🇧🇩 bn · 🇨🇿 cs · 🇩🇰 da · 🇩🇪 de · 🇬🇷 el · 🇪🇸 es · 🇪🇪 et · 🇮🇷 fa · 🇫🇮 fi · 🇫🇷 fr · 🇮🇪 ga · 🇮🇳 gu · 🇳🇬 ha · 🇮🇱 he · 🇮🇳 hi · 🇭🇷 hr · 🇭🇺 hu · 🇦🇲 hy · 🇮🇩 id · 🇳🇬 ig · 🇮🇹 it · 🇯🇵 ja · 🇬🇪 ka · 🇰🇭 km · 🇮🇳 kn · 🇰🇷 ko · 🇱🇹 lt · 🇱🇻 lv · 🇮🇳 ml · 🇮🇳 mr · 🇲🇾 ms · 🇲🇹 mt · 🇲🇲 my · 🇳🇵 ne · 🇳🇱 nl · 🇳🇴 no · 🇮🇳 or · 🇮🇳 pa · 🇵🇭 phi · 🇵🇱 pl · 🇵🇹 pt · 🇧🇷 pt-BR · 🇷🇴 ro · 🇷🇺 ru · 🇱🇰 si · 🇸🇰 sk · 🇸🇮 sl · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇳🇬 yo · 🇨🇳 zh-CN · 🇹🇼 zh-TW
Извор истине:
open-sse/utils/tlsClient.ts,open-sse/services/{tlsClientBase,claudeTlsClient,perplexityTlsClient,grokTlsClient,notionTlsClient,lmarenaTlsClient,claudeCodeCCH,claudeCodeFingerprint,claudeCodeObfuscation,claudeCodeCompatible}.ts,open-sse/config/cliFingerprints.ts,src/mitm/Последње ажурирање: 2026-09-02 — v3.8.51 Публика: Инжењери који одржавају прикривене интеграције специфичне за добављаче.
OmniRoute се интегрише са добављачима чији рубни системи активно идентификују незваничне клијенте на основу отиска (TLS JA3/JA4, редослед заглавља, облик JSON тела, токени интегритета). Ова страница документује површине за прикривање које OmniRoute излаже и места на којима су имплементиране.
Правно и етичко обавештење
Функције прикривања постоје како би OmniRoute могао да служи као слој компатибилности између званичних налога у власништву корисника (Claude Code CLI, Codex, Antigravity, Cursor итд.) и обједињеног API-ја система OmniRoute. Оне нису намењене заобилажењу система за откривање превара, дељењу акредитива или кршењу Услова коришћења добављача. Одржаваоци очекују од оператера да поштују услове коришћења узводног система које су прихватили приликом креирања налога.
Слој за TLS отиске
open-sse/utils/tlsClient.ts — wreq-js (Chrome 124)
Трајне wreq-js сесије креирају се лењо за сваки опсег налога и разрешени прокси. TlsClient на нивоу целог процеса обједињује највише 128 сесија које опонашају Chrome 124 на систему macOS за узводне системе иза Cloudflare-а. TlsClient.fetch() безбедно одбија захтев када изворно извршно окружење није доступно; позивалац може изричито да изабере резервну опцију изван овог омотача.
- Профил сесије:
browser: "chrome_124", os: "macos" - Разрешавање проксија (по приоритету):
HTTPS_PROXY→HTTP_PROXY→ALL_PROXY(такође варијанте малим словима) - Временско ограничење:
TLS_CLIENT_TIMEOUT_MS(наслеђује се изFETCH_TIMEOUT_MS, подразумевано 600000) wreq-jsResponse је компатибилан са fetch-ом (headers,text(),json(),clone(),body).- Надзор првог бајта (
open-sse/utils/tlsFirstByteWatchdog.ts, #12656):TlsClient.fetch()разрешава се чим стигну заглавља узводног система, па самоTLS_CLIENT_TIMEOUT_MSне може да ограничи тело које никада не испоручи први бајт.guardTlsFirstByte()упоредо извршава првиread()тела иTLS_FIRST_BYTE_WATCHDOG_MS(подразумевано10000,0га онемогућава); исправно тело остаје непромењено, док заустављено тело отказује wreq читач и омогућава постојећој TLS резервној логици функцијеproxyFetchда пређе на директни/прокси диспечер (захтев који није безбедно поновити, нпр. POST са телом, и даље изазива грешку уместо да буде неприметно поновљен).
Транспорт добављача заснован на веб-колачићима — wreq-js 3.2.0
open-sse/services/tlsClientBase.ts је заједнички адаптер за пет специјализованих
транспорта заснованих на веб-колачићима наведених испод. Сваки танки омотач добављача бира профил прегледача/оперативног система. Адаптер
користи јединствени учитавач wreq извршног окружења и скуп транспорта у open-sse/utils/tlsClient.ts, индексиран према
профилу + оперативном систему + разрешеном проксију, док сваки захтев користи cookieMode: "ephemeral". Налози и
захтеви стога деле везе на нивоу транспорта, али никада не деле wreq сесију нити складиште колачића.
| Добављач | Профил | Емулирани ОС | Правило за EOF тока |
|---|---|---|---|
| Claude | chrome_146 |
Linux | укључује [DONE] |
| Perplexity | firefox_148 |
macOS | укључује event: end_of_stream |
| Grok | chrome_146 |
Linux | искључује [DONE] |
| Notion | chrome_146 |
Windows | укључује [DONE] |
| LMArena | chrome_146 |
Windows | без сентинела; затварање при изворном EOF-у |
- Стримовање директно користи
ReadableStreamизворног одговора; не креира се привремена датотека нити пратећи процес. - Пре излагања тока проверава се до 256 почетних бајтова. SSE добављачи баферују грешке које нису SSE;
Grok/LMArena мапирају Cloudflare изазове на
403, а HTML међустанице на502. - Временско ограничење изворног захтева остаје обухваћено апсолутним крајњим JS роком. Застој поништава и затвара само погођени транспорт за профил/оперативни систем/прокси, пре него што га следећи захтев поново креира.
- Приоритет разрешавања проксија је
proxyUrlпо позиву → контекст налога/контролне табле ограничен на захтев →HTTPS_PROXY/HTTP_PROXY/ALL_PROXY(укључујући варијанте малим словима). Грешке разрешавања безбедно одбијају захтев уместо да доведу до цурења директне везе. LMArena намерно разрешава у односу наarena.ai. byteResponseвраћаdata:URL са наведеним типом садржаја, без оштећења UTF-8 података.- Грешке су
TlsClientUnavailableError(пакет/додатак није доступан),TlsClientHangError(рок је прекорачен) иWreqTransportCapacityError(заједнички кôд грешке капацитета сесија) када је свих 128 ограничених места за профил/оперативни систем/прокси активно или у процесу затварања.
Генеричка TlsClient сесија изнад остаје специјализована за трајно стање колачића које подржава прегледач.
Обе путање поново користе један кеширани учитавач wreq модула и куку животног циклуса процеса; њихови скупови остају
одвојени зато што су животни векови њихових колачића намерно различити.
Профиле подржава фиксирана верзија пакета, али стварно WAF прихватање може да се промени независно од локалних тестова уговора. Потврдите промене отиска помоћу изричито овлашћеног активног налога пре него што наведете да је постигнута еквивалентност са узводним прегледачем.
Claude Code пакет за прикривање
Када је cliCompatMode укључен, OmniRoute преобликује одлазне Claude захтеве тако да се не могу разликовати од claude-cli саобраћаја. Три модула сарађују:
claudeCodeFingerprint.ts
Израчунава отисак cc_version од 3 знака, уграђен у заглавље за наплату:
SHA256(SALT + msg[4] + msg[7] + msg[20] + version)[:3]
FINGERPRINT_SALT = "59cf53e54c78"(чврсто кодирано; подудара се са званичним клијентом)- Улази: знакови на индексима 4, 7 и 20 текста прве корисничке поруке + ниска верзије
- Излаз: хексадекадни префикс од 3 знака
claudeCodeCCH.ts (хеш садржаја клијента)
Серверска провера интегритета коју званични Claude Code CLI израчунава помоћу Bun/Zig. OmniRoute је поново имплементира помоћу xxhash-wasm:
- Серијализуј тело са резервисаним местом
cch=00000; xxhash64(bytes, seed) & 0xFFFFF- Хексадекадна вредност од 5 знакова, допуњена нулама, малим словима
- Замени
cch=00000;израчунатим токеном
Константе:
- Почетна вредност:
0x6e52736ac806831e - Образац:
/\bcch=([0-9a-f]{5});/
claudeCodeObfuscation.ts
Умеће Unicode спојницу нулте ширине (U+200D) после првог знака „осетљивих“ назива клијената, тако да их узводни филтери не могу пронаћи помоћу grep-а. Подразумевана листа речи:
opencode, open-code, cline, roo-cline, roo_cline, cursor, windsurf,
aider, continue.dev, copilot, avante, codecompanion
Примењује се на: system блокове, сав messages[].content садржај и tools[].description / tools[].function.description. Оператер може да измени листу помоћу setSensitiveWords().
claudeCodeCompatible.ts — anthropic-compatible-cc-* добављачи
За Anthropic посреднике трећих страна који прихватају само саобраћај „правог Claude Code-а“:
CLAUDE_CODE_COMPATIBLE_USER_AGENT = "claude-cli/2.1.258 (external, sdk-cli)"CLAUDE_CODE_COMPATIBLE_STAINLESS_PACKAGE_VERSION = "0.112.1"CLAUDE_CODE_COMPATIBLE_STAINLESS_RUNTIME_VERSION = "v26.3.0"anthropic-beta = "claude-code-20250219,interleaved-thinking-2025-05-14,effort-2025-11-24"подразумевано- Прекидач „Омогући redact-thinking бета-функцију“ за појединачну везу додаје
redact-thinking-2026-02-12када CC Compatible узводни систем изричито захтева редиговане токове размишљања - Прекидач „Омогући приказ сажетог размишљања“ за појединачну везу чува
providerSpecificData.requestDefaults.summarizeThinkingи додајеdisplay: "summarized"CC Compatible захтевима за размишљање који већ нису поставили режим приказа CONTEXT_1M_BETA_HEADER = "context-1m-2025-08-07"(породица Opus/Sonnet 4.x)- Подразумевана путања:
/v1/messages?beta=true
Сродни модули у истом пакету:
claudeCodeConstraints.ts— правила за температуру + контролу кешаclaudeCodeToolRemapper.ts— пресликавање назива алатаclaudeCodeExtraRemap.ts— додатна нормализација корисног садржаја
Antigravity прикривање
Antigravity захтеви чувају текст позиваоца бајт по бајт. OmniRoute не умеће знакове нулте ширине у упите нити преименује/умеће алате како би опонашао IDE клијент.
antigravityHeaderScrub.ts
Уклања маркере Stainless SDK-а (x-stainless-lang, x-stainless-package-version, x-stainless-os, x-stainless-arch, x-stainless-runtime, x-stainless-runtime-version, x-stainless-timeout, x-stainless-retry-count, x-stainless-helper-method) пре прослеђивања.
⚠️ Ризик: ANTIGRAVITY_CREDITS=always (жариште за забрану налога)
ANTIGRAVITY_CREDITS=always (који користи open-sse/executors/antigravity.ts) усмерава сваки захтев преко прекорачења Antigravity AI кредита (плаћених Google кредита), уместо да дозволи квоти Google-овог бесплатног нивоа да ограничава коришћење. Ово је документовано као функција, али представља убедљиво најчешћи пријављени случај кршења услова коришћења који виђамо — више Google Ultra налога је забрањено уз 403 / "service disabled for ToS violation" / insufficient_quota након неколико сати рада са =always.
Спровођење правила узводно одвија се на Google-овој страни и OmniRoute то не може да спречи. Назив променљиве окружења и постојећа документација остављају утисак да је то безбедна опција за укључивање; није.
Зашто ово привлачи откривање злоупотребе агресивније него коришћење искључиво бесплатног нивоа:
- Непрекидна аутоматизована потрошња на једном Google налогу означава се другачије од бесплатног нивоа који достиже квоту и зауставља се.
- Прекорачења кредита немају ограничење брзине, па погрешно конфигурисан клијент може да потроши неколико стотина USD за неколико минута и изгледа као препродаја API кључева или бот саобраћај.
- Више OmniRoute корисника који паралелно троше кредите за прекорачење са исте спољне IP адресе додатно појачава сигнал.
Препоручени приступ:
- Задржите подразумевану вредност
ANTIGRAVITY_CREDITS=off, осим ако оператер изричито не прихвата ризик плаћених кредита и санкција над налогом.retryпрво шаље уобичајени захтев и умеће кредите највише једном након одговарајуће грешке квоте 429;alwaysумеће кредите већ при првом захтеву. - Распоредите оптерећење међу добављачима путем Auto-Combo-а (
model: "auto"илиkr/glm/etc-combo), уместо да преоптеретите један Antigravity налог. - Поставите RPM ограничења за сваку везу на страници за измену Antigravity добављача (Контролна табла → Добављачи → Antigravity → веза → ограничење брзине). 30–60 RPM је одбрањива горња граница за непрекидно коришћење.
- Користите стабилну узводну мрежу под контролом оператера и избегавајте дељење једног налога међу неповезаним корисницима или радним оптерећењима.
- Ако је налог забрањен: поднесите жалбу преко
support.google.com→ „Врати приступ Workspace-у/налогу“, уз тачно тело одговораquota_exceeded/service disabledкоје је Google послао. Враћање приступа није загарантовано.
Референца променљивих окружења документује последице сваког режима кредита по налог и потрошњу.
Тачке додира:
open-sse/executors/antigravity.ts— читаprocess.env.ANTIGRAVITY_CREDITSsrc/lib/oauth/providers/antigravity.ts— прослеђивање акредитива- Оригинална пријава инцидента: Дискусија #1183
Регистар CLI отисака — open-sse/config/cliFingerprints.ts
Табела по добављачу која фиксира тачан редослед заглавља и поља JSON тела, забележен из mitmproxy трагова званичних CLI алата. Тренутно су регистровани: codex, claude, као и профили изведени током извршавања у providerHeaderProfiles.ts за antigravity и github.
interface CliFingerprint {
headerOrder: string[]; // осетљиво на велика и мала слова
bodyFieldOrder: string[]; // JSON кључеви највишег нивоа
userAgent?: string | (() => string);
extraHeaders?: Record<string, string>;
}
Укључује се или искључује за сваког добављача путем променљивих окружења (погледајте испод). Када је искључено, заглавља/кључеви тела појављују се редоследом којим су их Node/JSON генерисали — што олакшава препознавање отиска.
MITM прокси (Antigravity, Linux/macOS/Windows)
За CLI алате чије бинарне датотеке није могуће преусмерити путем OPENAI_BASE_URL, OmniRoute покреће локални прокси који прекида TLS везу. Крајње тачке се налазе у src/app/api/cli-tools/antigravity-mitm/.
| Метод | Крајња тачка | Намена |
|---|---|---|
| GET | /api/cli-tools/antigravity-mitm |
Статус — покренут, pid, dnsConfigured, certExists |
| POST | /api/cli-tools/antigravity-mitm |
Покретање MITM-а (захтева apiKey + sudoPassword) |
| DELETE | /api/cli-tools/antigravity-mitm |
Заустављање MITM-а |
| GET | /api/cli-tools/antigravity-mitm/alias |
Приказ псеудонима модела |
| PUT | /api/cli-tools/antigravity-mitm/alias |
Чување псеудонима модела за алат |
Циљни пресретнути хост: daily-cloudcode-pa.googleapis.com (Antigravity-јев удаљени сервер).
Редослед покретања (src/mitm/manager.ts::startMitm)
- Генерисање самопотписаног сертификата путем
selfsigned(RSA-2048, SHA-256, 1 година) —cert/generate.ts - Инсталирање сертификата у системско складиште поузданих сертификата —
cert/install.ts - Додавање уноса у hosts датотеку
127.0.0.1 daily-cloudcode-pa.googleapis.com—dns/dnsConfig.ts - Покретање
src/mitm/server.cjsсаROUTER_API_KEY+MITM_LOCAL_PORT(подразумевано443) - Чување PID-а у
<DATA_DIR>/mitm/.mitm.pid
Динамичко откривање складишта поузданих сертификата на Linux-у — cert/install.ts
getLinuxCertConfig() пролази кроз листу приоритета и бира први постојећи директоријум:
| Породица дистрибуција | Директоријум | Команда за ажурирање |
|---|---|---|
| Debian / Ubuntu | /usr/local/share/ca-certificates |
update-ca-certificates |
| Arch / CachyOS / Manjaro | /etc/ca-certificates/trust-source/anchors |
update-ca-trust |
| Fedora / RHEL / CentOS | /etc/pki/ca-trust/source/anchors |
update-ca-trust |
| openSUSE | /etc/pki/trust/anchors |
update-ca-certificates |
Назив датотеке сертификата: omniroute-mitm.crt. Подударање отиска путем getCertFingerprint() (SHA-1 над DER-ом).
Поред тога, updateNssDatabases() инсталира сертификат у NSS базе података појединачних корисника када је certutil доступан: ~/.pki/nssdb, ~/snap/chromium/.../nssdb, све Firefox профиле (укључујући snap), под надимком OmniRoute MITM Root CA.
macOS / Windows
- macOS:
security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain - Windows: PowerShell са повишеним привилегијама →
certutil -addstore Root
Аутентификација
Све MITM крајње тачке захтевају управљачку аутентификацију (requireCliToolsAuth). Sudo лозинка се кешира у опсегу модула (никада у globalThis) и брише се при позиву stopMitm().
Замене User-Agent вредности — променљиве окружења (.env.example, одељак 12)
| Променљива | Подразумевана вредност |
|---|---|
CLAUDE_USER_AGENT |
claude-cli/2.1.258 (external, cli) |
CODEX_USER_AGENT |
codex-cli/0.149.0 (Windows 10.0.26200; x64) |
GITHUB_USER_AGENT |
GitHubCopilotChat/0.54.0 |
ANTIGRAVITY_USER_AGENT |
antigravity/2.0.1 linux/arm64 google-api-nodejs-client/10.3.0 |
KIRO_USER_AGENT |
AWS-SDK-JS/3.0.0 kiro-ide/1.0.0 |
QODER_USER_AGENT |
Qoder-Cli |
CURSOR_USER_AGENT |
Cursor/3.4 |
Користи их open-sse/executors/base.ts::buildHeaders() путем динамичког проналажења. Ажурирајте их када добављачи објаве нове верзије CLI-ја — застарели UA стрингови почињу да се одбијају као застарели клијенти.
Прекидачи режима компатибилности CLI-ја (.env.example, одељак 13)
| Променљива | Ефекат |
|---|---|
CLI_COMPAT_CODEX=1 |
Codex отисак |
CLI_COMPAT_CLAUDE=1 |
claude-cli отисак |
CLI_COMPAT_GITHUB=1 |
GitHub Copilot Chat отисак |
CLI_COMPAT_ANTIGRAVITY=1 |
Antigravity отисак |
CLI_COMPAT_KIRO=1 |
Kiro |
CLI_COMPAT_CURSOR=1 |
Cursor |
CLI_COMPAT_KIMI_CODING=1 |
Kimi Coding |
CLI_COMPAT_KILOCODE=1 |
KiloCode |
CLI_COMPAT_CLINE=1 |
Cline |
CLI_COMPAT_ALL=1 |
Омогућава све наведено изнад |
IP адреса добављача се увек задржава — прекидач само преобликује мрежни приказ захтева и не мења излазну IP адресу.
Санитизација долазних заглавља
OmniRoute уклања долазна клијентска заглавља пре прослеђивања, тако да захтев који стигне из Cursor-а не открије User-Agent: Cursor/X.Y.Z Claude upstream серверу. Листа забрањених заглавља налази се у src/shared/constants/upstreamHeaders.ts и одржава се синхронизовано са Zod шемама и јединичним тестовима.
Ажурирање отисака када их добављач промени
- Снимите саобраћај званичног CLI-ја помоћу
mitmproxy(TLS пресретање + dump) - Издвојте JA3/JA4 и дослован редослед заглавља
- Ажурирајте одговарајући унос
CLI_FINGERPRINTS[...] - Ажурирајте одговарајућу подразумевану вредност
*_USER_AGENTу.env.example - Ако се променио и сам TLS handshake, ажурирајте одговарајући омотач добављача или опцију wreq-js
browser: - Покрените TLS тестове специфичне за добављача и ручни canary тест према активном добављачу
- Објавите у оквиру patch издања; документујте у
CHANGELOG.md
Тестови
open-sse/services/__tests__/claudeTlsClient.test.ts— понашање дељеног TLS омотачаtests/unit/anthropic-cache-fingerprint.test.ts— детерминистичност отискаtests/unit/chatgpt-web-source-retirement.test.ts— заједнички прикривени извор ChatGPT Web-а остаје одсутан, док Codex Web остаје присутан
Такође погледајте
- RESILIENCE_GUIDE.md — шта се дешава када прикривена путања добије
403 - TROUBLESHOOTING.md
- ENVIRONMENT.md — комплетна референца променљивих окружења
- CLI-TOOLS.md — приказ MITM радног тока из перспективе оператера