Files
OmniRoute/docs/i18n/yo/docs/security/STEALTH_GUIDE.md
Diego Rodrigues de Sa e Souza 8feea123bb feat(docs): mirror every docs/ page in all 65 locales (#14106)
* 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.
2026-09-18 13:16:46 -03:00

27 KiB
Raw Blame History

Stealth Guide (Yorùbá)

🌐 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 · 🇷🇸 sr · 🇸🇪 sv · 🇰🇪 sw · 🇮🇳 ta · 🇮🇳 te · 🇹🇭 th · 🇹🇷 tr · 🇺🇦 uk-UA · 🇵🇰 ur · 🇺🇿 uz · 🇻🇳 vi · 🇨🇳 zh-CN · 🇹🇼 zh-TW


Orísun òtítọ́: 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/ Ìmúdójúìwọ̀n tó kẹ́yìn: 2026-09-02 — v3.8.51 Àwọn olùkà: Àwọn onímọ̀ ẹ̀rọ tí ń bójú tó àwọn ìṣọ̀kan àìfarahàn tó jẹ́ ti olùpèsè kan pàtó.

OmniRoute ń ṣọ̀kan pẹ̀lú àwọn olùpèsè tí àwọn ẹ̀rọ etí-nẹ́tíwọ́ọ̀kì wọn ń ṣe ìdánimọ̀ ìtẹ̀sí-ọwọ́ àwọn client tí kì í ṣe tiṣẹ́ (TLS JA3/JA4, ètò àwọn header, ìrísí body JSON, àwọn token ìjẹ́rìísí ìpéye). Ojú-ìwé yìí ṣàkọsílẹ̀ àwọn ojú-ọ̀nà àìfarahàn tí OmniRoute pèsè àti ibi tí a ti ṣe ìmúṣẹ wọn.

Àkíyèsí Òfin àti Ìwà-Ọmọlúwàbí

Àwọn ẹ̀yà àìfarahàn wà kí OmniRoute lè ṣiṣẹ́ gẹ́gẹ́ bí ipele ìbámu láàárín àwọn account tiṣẹ́ tí olumulo ní (Claude Code CLI, Codex, Antigravity, Cursor, àti bẹ́ẹ̀ bẹ́ẹ̀ lọ) àti API àpapọ̀ OmniRoute. Wọn kì í ṣe fún yíyẹra fún ìṣàwárí jìbìtì, pínpín àwọn credential, tàbí rú àwọn Ìlànà Iṣẹ́ olùpèsè. Àwọn olùtọ́jú retí pé àwọn olùṣiṣẹ́ yóò tẹ̀lé ToS ti upstream tí wọ́n fọwọ́ sí nígbà tí wọ́n ṣẹ̀dá àwọn account.


Ipele Ìdánimọ̀ Ìtẹ̀sí-ọwọ́ TLS

open-sse/utils/tlsClient.ts — wreq-js (Chrome 124)

Àwọn session wreq-js aláìsọ̀rọ̀dájú ni a ń ṣẹ̀dá ní ọ̀lẹ̀ọ̀lẹ̀ fún scope account kọ̀ọ̀kan àti proxy tí a ti yanjú. Àwọn pool TlsClient jákèjádò process náà ń gba session tó pọ̀ jù 128 lọ, tí wọ́n ń ṣe àfarawé Chrome 124 lórí macOS fún àwọn upstream lẹ́yìn Cloudflare. TlsClient.fetch() máa ń dá iṣẹ́ dúró pátápátá nígbà tí native runtime kò sí; ẹni tó pè é lè yan fallback ní kedere níta wrapper yìí.

  • Profile session: browser: "chrome_124", os: "macos"
  • Ìtòsíṣáájú ìyànjú proxy: HTTPS_PROXYHTTP_PROXYALL_PROXY (pẹ̀lú àwọn ẹ̀yà lẹ́tà kékeré náà)
  • Àkókò ìdádúró: TLS_CLIENT_TIMEOUT_MS (ń jogún láti FETCH_TIMEOUT_MS, àìyípadà 600000)
  • Response wreq-js bá fetch mu (headers, text(), json(), clone(), body).
  • Aṣọ́nà byte àkọ́kọ́ (open-sse/utils/tlsFirstByteWatchdog.ts, #12656): TlsClient.fetch() máa ń yanjú ní kété tí àwọn header upstream bá dé, nítorí náà TLS_CLIENT_TIMEOUT_MS nìkan kò lè fi ààlà sí body tí kò mú byte àkọ́kọ́ jáde láéláé. guardTlsFirstByte() ń fi read() àkọ́kọ́ ti body ṣe ìdíje pẹ̀lú TLS_FIRST_BYTE_WATCHDOG_MS (àìyípadà 10000, 0 máa ń pa á); body tó dára kò ní fojú kan, nígbà tí body tó dúró máa ń fagilé reader wreq, yóò sì jẹ́ kí ọgbọ́n fallback TLS tó wà tẹ́lẹ̀ nínú proxyFetch tẹ̀ síwájú sí dispatcher direct/proxy (ìbéèrè tí kò léwu láti tún ṣeré, fún àpẹẹrẹ POST tó ní body, ṣì máa ju àṣìṣe síta dípò kí a tún un gbìyànjú láìjẹ́kí ẹnikẹ́ni mọ̀).

open-sse/services/tlsClientBase.ts ni adapter àjọpín fún àwọn transport web-cookie àkànṣe márùn-ún ní ìsàlẹ̀. Wrapper olùpèsè kékeré kọ̀ọ̀kan ń yan profile browser/OS kan. Adapter náà ń lo loader runtime wreq kan ṣoṣo àti pool transport nínú open-sse/utils/tlsClient.ts, tí a fi profile + OS + proxy tí a yanjú ṣe key, nígbà tí gbogbo ìbéèrè ń lo cookieMode: "ephemeral". Nítorí náà, àwọn account àti ìbéèrè ń ṣàjọpín àwọn connection ipele-transport, ṣùgbọ́n wọn kì í ṣàjọpín session wreq tàbí cookie jar láéláé.

Olùpèsè Profile OS tí a ń ṣe àfarawé Ìlànà EOF stream
Claude chrome_146 Linux fi [DONE] kún un
Perplexity firefox_148 macOS fi event: end_of_stream kún un
Grok chrome_146 Linux yọ [DONE] kúrò
Notion chrome_146 Windows fi [DONE] kún un
LMArena chrome_146 Windows kò sí sentinel; pa á ní native EOF
  • Streaming ń lo ReadableStream response native náà tààrà; a kò ṣẹ̀dá fáìlì ìgbà díẹ̀ tàbí sidecar.
  • A máa ń ṣàyẹ̀wò tó byte àkọ́kọ́ 256 kí a tó fi stream hàn. Àwọn olùpèsè SSE máa ń fi àwọn àṣìṣe tí kì í ṣe SSE pamọ́ sínú buffer; Grok/LMArena máa ń yí àwọn ìpèníjà Cloudflare sí 403 àti àwọn interstitial HTML sí 502.
  • Ìdádúró ìbéèrè native ṣì wà lábẹ́ deadline líle JS tó péye. Dídì iṣẹ́ máa ń sọ transport profile/OS/proxy tó kan nìkan di asán, yóò sì pa á kí ìbéèrè tó kàn tó tún un ṣẹ̀dá.
  • Ìtòsíṣáájú ìyànjú proxy jẹ́ proxyUrl ti ìpè kọ̀ọ̀kan → context account/dashboard tó jẹ́ ti ìbéèrè → HTTPS_PROXY/HTTP_PROXY/ALL_PROXY (pẹ̀lú àwọn ẹ̀yà lẹ́tà kékeré). Àwọn àṣìṣe ìyànjú máa ń dá iṣẹ́ dúró pátápátá dípò jíjẹ́ kí connection direct tú jáde. LMArena mọ̀ọ́mọ̀ ń ṣe ìyànjú sí arena.ai.
  • byteResponse ń dá URL data: tó ní content type padà láìba UTF-8 jẹ́.
  • Àwọn àṣìṣe ni TlsClientUnavailableError (package/addon kò sí), TlsClientHangError (deadline ti kọjá), àti WreqTransportCapacityError (kóòdù àṣìṣe agbára session àjọpín) nígbà tí gbogbo slot profile/OS/proxy oníwọ̀n 128 bá ń ṣiṣẹ́ tàbí tí wọ́n ń pa.

Session TlsClient gbogbogbò lókè ṣì jẹ́ àkànṣe fún ipò cookie aláìsọ̀rọ̀dájú tó dá lórí browser. Ọ̀nà méjèèjì ń tún loader module wreq tí a cache kan náà àti hook ìgbésí-ayé process lò; àwọn pool wọn ṣì yàtọ̀ nítorí pé ìgbà ìyè cookie wọn yàtọ̀ ní ìmọ̀ọ́mọ̀.

Package tí a pin mọ́ ẹya pàtó ń ṣe àtìlẹ́yìn fún àwọn profile náà, ṣùgbọ́n ìtẹ́wọ́gbà WAF gidi lè yí padà láìdá lórí àwọn ìdánwò contract abẹ́nú. Ṣàyẹ̀wò àwọn àyípadà fingerprint lórí account gidi tí a fún ní àṣẹ ní kedere kí o tó sọ pé ó bá browser upstream dọ́gba.


Àkójọpọ̀ Ìfarapamọ́ Claude Code

Nígbà tí cliCompatMode bá wà ní títàn, OmniRoute máa ń tún àwọn ìbéèrè Claude tó ń jáde ṣe kí wọn má ṣe yàtọ̀ sí ìrìn-àjò claude-cli. Àwọn módù mẹ́ta ni wọ́n ń ṣiṣẹ́ pọ̀:

claudeCodeFingerprint.ts

Ó ń ṣírò àmì ìdánimọ̀ cc_version oní-lẹ́tà mẹ́ta tí a fi sínú àkọlé ìdíyelé:

SHA256(SALT + msg[4] + msg[7] + msg[20] + version)[:3]
  • FINGERPRINT_SALT = "59cf53e54c78" (a kọ ọ́ sínú kóòdù; ó bá ti oníbàárà iṣẹ́ ìbílẹ̀ mu)
  • Àwọn ìwọlé: àwọn àkíyèsí ní atọ́ka 4, 7, 20 láti inú ọ̀rọ̀ ìfiránṣẹ́ àkọ́kọ́ ti aṣàmúlò + ọ̀rọ̀ ẹ̀yà
  • Àbájáde: ìṣáájú hex oní-lẹ́tà mẹ́ta

claudeCodeCCH.ts (Hash Àkóónú Oníbàárà)

Àyẹ̀wò ìpéye ní ẹ̀gbẹ́ olupin tí Claude Code CLI ìbílẹ̀ ń ṣírò nípasẹ̀ Bun/Zig. OmniRoute tún un ṣe pẹ̀lú xxhash-wasm:

  1. Ṣe serialization ara pẹ̀lú àfipamọ́-àyè cch=00000;
  2. xxhash64(bytes, seed) & 0xFFFFF
  3. Hex kékeré oní-lẹ́tà márùn-ún tí a fi odo kún níwájú
  4. Rọ́pò cch=00000; pẹ̀lú àmì tí a ṣírò

Àwọn kọńsítáǹtì:

  • Seed: 0x6e52736ac806831e
  • Àpẹẹrẹ: /\bcch=([0-9a-f]{5});/

claudeCodeObfuscation.ts

Ó máa ń fi àsopọ̀ aláìní ìbú Unicode (U+200D) sí ẹ̀yìn àkíyèsí àkọ́kọ́ ti àwọn orúkọ oníbàárà “onífẹ̀ẹ́” kí àwọn àsẹ̀ òkè má bàa lè fi grep wá wọn. Àtòjọ ọ̀rọ̀ àìyípadà:

opencode, open-code, cline, roo-cline, roo_cline, cursor, windsurf,
aider, continue.dev, copilot, avante, codecompanion

A lò ó sí: àwọn ìdípọ̀ system, gbogbo messages[].content, àti tools[].description / tools[].function.description. Olùdarí lè yí i padà nípasẹ̀ setSensitiveWords().

claudeCodeCompatible.ts — àwọn olùpèsè anthropic-compatible-cc-*

Fún àwọn relay Anthropic ti ẹni-kẹta tí wọ́n gba ìrìn-àjò “Claude Code gidi” nìkan:

  • 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" ní àìyípadà
  • Yíyàn “Jẹ́ kí beta redact-thinking ṣiṣẹ́” fún àsopọ̀ kọ̀ọ̀kan máa ń ṣàfikún redact-thinking-2026-02-12 nígbà tí upstream CC Compatible kan bá nílò àwọn ṣiṣàn ìrònú tí a ti ṣe àtúnṣe sí ní pàtó
  • Yíyàn “Jẹ́ kí ìfihàn ìrònú tí a ṣe àkótán ṣiṣẹ́” fún àsopọ̀ kọ̀ọ̀kan máa ń tọ́jú providerSpecificData.requestDefaults.summarizeThinking, ó sì ń ṣàfikún display: "summarized" sí àwọn ìbéèrè ìrònú CC Compatible tí kò tíì ṣètò ìpo ìfihàn
  • CONTEXT_1M_BETA_HEADER = "context-1m-2025-08-07" (ẹbí Opus/Sonnet 4.x)
  • Ọ̀nà àìyípadà: /v1/messages?beta=true

Àwọn módù alábàákẹ́gbẹ́ inú àkójọpọ̀ kan náà:

  • claudeCodeConstraints.ts — àwọn òfin temperature + cache-control
  • claudeCodeToolRemapper.ts — àtúnyàn orúkọ irinṣẹ́
  • claudeCodeExtraRemap.ts — ìṣọ̀kan àfikún fún payload

Ìfarapamọ́ Antigravity

Àwọn ìbéèrè Antigravity máa ń pa ọ̀rọ̀ olùpè mọ́ báìtì-fún-báìtì. OmniRoute kì í fi àwọn àkíyèsí aláìní ìbú sínú àwọn prompt tàbí tún orúkọ àwọn irinṣẹ́ ṣe/fi irinṣẹ́ kún wọn láti fara wé oníbàárà IDE kan.

antigravityHeaderScrub.ts

Ó máa ń yọ àwọn àmì 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) kúrò kí ó tó darí ìbéèrè náà síwájú.

⚠️ Ewu: ANTIGRAVITY_CREDITS=always (ibi tí ìfòfindè àkọọ́lẹ̀ ti wọ́pọ̀)

ANTIGRAVITY_CREDITS=always (tí open-sse/executors/antigravity.ts ń lò) máa ń darí gbogbo ìbéèrè gba Antigravity AI Credit Overages (kírẹ́díìtì Google tí a sanwó fún) dípò jíjẹ́ kí quota ipele-ọ̀fẹ́ Google dí àwọn nǹkan dúró. A ṣàkọsílẹ̀ èyí gẹ́gẹ́ bí ẹ̀ya kan, ṣùgbọ́n ó jẹ́ ìròyìn ìrúfin ToS kan ṣoṣo tó wọ́pọ̀ jù lọ tí a ń rí — a ti fòfin de ọ̀pọ̀ àkọọ́lẹ̀ Google Ultra pẹ̀lú 403 / "service disabled for ToS violation" / insufficient_quota lẹ́yìn tí wọ́n ṣiṣẹ́ fún wákàtí díẹ̀ pẹ̀lú =always.

Ìmúṣẹ upstream wà ní ẹ̀gbẹ́ Google, kì í ṣe ohun tí OmniRoute lè dènà. Orúkọ env var àti àwọn àkọsílẹ̀ tó wà tẹ́lẹ̀ mú kí ó dà bí ìṣàkóso tí kò léwu láti tàn; ṣùgbọ́n kò rí bẹ́ẹ̀.

Ìdí tí èyí fi ń fa ìṣàwárí ìlòkulò lọ́nà tó le ju lílo ipele-ọ̀fẹ́-nìkan lọ:

  • Ìnáwó aládàáṣiṣẹ́ tó ń bá a lọ lórí àkọọ́lẹ̀ Google kan ṣoṣo máa ń fa àmì tó yàtọ̀ sí lílu-quota-ìpele-ọ̀fẹ́-tí-ó-sì-dúró.
  • Àwọn overage kírẹ́díìtì kò ní òpin oṣuwọn, nítorí náà oníbàárà tí a ṣètò ní àìtọ́ lè ná ọ̀pọ̀ ọgọ́rùn-ún USD láàárín ìṣẹ́jú díẹ̀, kí ó sì dà bí àtúntà kọ́kọ́rọ́ API tàbí ìrìn-àjò bot.
  • Ọ̀pọ̀ aṣàmúlò OmniRoute tí wọ́n ń lo àwọn kírẹ́díìtì overage ní àkókò kan náà láti IP ìta kan náà máa ń mú àmì náà le sí i.

Ìlànà tí a ṣeduro:

  1. Jẹ́ kí àìyípadà ANTIGRAVITY_CREDITS=off wà bí olùdarí kò bá gba ewu kírẹ́díìtì tí a sanwó fún àti ìmúṣẹ lórí àkọọ́lẹ̀ ní kedere. retry máa ń kọ́kọ́ fi ìbéèrè deede ránṣẹ́, ó sì máa ń fi kírẹ́díìtì kún un ní ẹ̀ẹ̀kan péré lẹ́yìn quota 429 tó yẹ; always máa ń fi kírẹ́díìtì kún ìbéèrè àkọ́kọ́.
  2. Pín ẹrù káàkiri àwọn olùpèsè nípasẹ̀ Auto-Combo (model: "auto" tàbí kr/glm/etc-combo) dípò fífi ẹrù kún àkọọ́lẹ̀ Antigravity kan ṣoṣo dé òpin.
  3. Ṣètò àwọn òpin RPM fún àsopọ̀ kọ̀ọ̀kan ní ojú-ìwé àtúnṣe olùpèsè Antigravity (Dashboard → Providers → Antigravity → àsopọ̀ → òpin oṣuwọn). 3060 RPM jẹ́ òpin òkè tó ṣeé dáàbò bo fún lílo tó ń bá a lọ.
  4. Lo nẹ́tíwọ́ọ̀kì upstream tó dúró ṣinṣin, tí olùdarí ń ṣàkóso kí o sì yẹra fún pípín àkọọ́lẹ̀ kan láàárín àwọn aṣàmúlò tàbí ẹrù iṣẹ́ tí kò ní ìbáṣepọ̀.
  5. Tí a bá fòfin de ọ́: fi ẹ̀bẹ̀ ránṣẹ́ nípasẹ̀ support.google.com → “Restore Workspace/Account access” pẹ̀lú ara ìdáhùn quota_exceeded / service disabled gangan tí Google fi ránṣẹ́. Kò sí ìdánilójú pé a ó mú un padà.

Ìtọ́kasí environment ṣàkọsílẹ̀ àwọn ipa tí ìpo kírẹ́díìtì kọ̀ọ̀kan ní lórí àkọọ́lẹ̀ àti ìnáwó.

Àwọn ibi ìfọwọ́kan:

  • open-sse/executors/antigravity.ts — ń ka process.env.ANTIGRAVITY_CREDITS
  • src/lib/oauth/providers/antigravity.ts — ìṣètò credential
  • Ìròyìn ìṣẹ̀lẹ̀ àkọ́kọ́: Ìjíròrò #1183

Ìforúkọsílẹ̀ Àmì-ìdánimọ̀ CLI — open-sse/config/cliFingerprints.ts

Tábìlì fún olùpèsè kọ̀ọ̀kan tí ó di ìtòlẹ́sẹẹsẹ akọlé àti ìtòlẹ́sẹẹsẹ àwọn pápá ara JSON gẹ́gẹ́ bí ó ti rí gan-an tí a mú láti inú àwọn ìtẹ̀jáde mitmproxy ti àwọn CLI ìfẹsẹ̀múlẹ̀. Àwọn tí a forúkọsílẹ̀ lọ́wọ́lọ́wọ́: codex, claude, pẹ̀lú àwọn prófáìlì tí a yọ jáde ní àkókò ìṣiṣẹ́ nínú providerHeaderProfiles.ts fún antigravity àti github.

interface CliFingerprint {
  headerOrder: string[]; // ó ń fiyè sí lẹ́tà ńlá àti kékeré
  bodyFieldOrder: string[]; // àwọn kọ́kọ́rọ́ JSON ipele òkè
  userAgent?: string | (() => string);
  extraHeaders?: Record<string, string>;
}

Tan-an tàbí pa á fún olùpèsè kọ̀ọ̀kan nípasẹ̀ env (wo ìsàlẹ̀). Nígbà tí a bá pa á, àwọn akọlé/kọ́kọ́rọ́ ara yóò farahàn ní èyíkéyìí ìtòlẹ́sẹẹsẹ tí Node/JSON bá fún wọn — ó rọrùn láti dá àmì wọn mọ̀.


MITM Proxy (Antigravity, Linux/macOS/Windows)

Fún àwọn CLI tí a kò lè darí fáìlì aláṣẹ wọn padà nípasẹ̀ OPENAI_BASE_URL, OmniRoute ń ṣiṣẹ́ aṣojú agbègbè kan tí ń fòpin sí TLS. Àwọn endpoint wà lábẹ́ src/app/api/cli-tools/antigravity-mitm/.

Ọ̀nà Endpoint Ìdí
GET /api/cli-tools/antigravity-mitm Ipò — ń ṣiṣẹ́, pid, dnsConfigured, certExists
POST /api/cli-tools/antigravity-mitm Bẹ̀rẹ̀ MITM (ó nílò apiKey + sudoPassword)
DELETE /api/cli-tools/antigravity-mitm Dá MITM dúró
GET /api/cli-tools/antigravity-mitm/alias Ṣàkójọ àwọn orúkọ-àpèjúwe model
PUT /api/cli-tools/antigravity-mitm/alias Fi àwọn orúkọ-àpèjúwe model pamọ́ fún irinṣẹ́ kan

Olùgbàlejò àfojúsùn tí a dá ọ̀nà rẹ̀ dúró: daily-cloudcode-pa.googleapis.com (upstream Antigravity).

Ìtòlẹ́sẹẹsẹ ìbẹ̀rẹ̀ (src/mitm/manager.ts::startMitm)

  1. Ṣẹ̀dá cert tí a fọwọ́ sí fúnra rẹ̀ nípasẹ̀ selfsigned (RSA-2048, SHA-256, 1y) — cert/generate.ts
  2. Fi cert sí ibi ìpamọ́ ìgbẹ́kẹ̀lé ètò — cert/install.ts
  3. Ṣàfikún àkọsílẹ̀ hosts 127.0.0.1 daily-cloudcode-pa.googleapis.comdns/dnsConfig.ts
  4. Ṣe spawn src/mitm/server.cjs pẹ̀lú ROUTER_API_KEY + MITM_LOCAL_PORT (àiyipada 443)
  5. Fi PID pamọ́ sí <DATA_DIR>/mitm/.mitm.pid

Ìṣàwárí ibi ìpamọ́ ìgbẹ́kẹ̀lé aláyípadà Linux — cert/install.ts

getLinuxCertConfig() ń kọjá àtòjọ ààyò, ó sì yan directory àkọ́kọ́ tí ó wà:

Ìdílé distro Directory Àṣẹ ìmúdójúìwọ̀n
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

Orúkọ fáìlì cert: omniroute-mitm.crt. Ìbáramu àmì-ìdánimọ̀ nípasẹ̀ getCertFingerprint() (SHA-1 ti DER).

Ní àfikún, updateNssDatabases() ń fi sí àwọn NSS DB ti aṣàmúlò kọ̀ọ̀kan nígbà tí certutil bá wà: ~/.pki/nssdb, ~/snap/chromium/.../nssdb, gbogbo àwọn prófáìlì Firefox (títí kan snap), lábẹ́ orúkọ ìnagijẹ OmniRoute MITM Root CA.

macOS / Windows

  • macOS: security add-trusted-cert -d -r trustRoot -k /Library/Keychains/System.keychain
  • Windows: PowerShell pẹ̀lú àṣẹ gíga → certutil -addstore Root

Ìfàṣẹsí

Gbogbo àwọn endpoint MITM nílò ìfàṣẹsí ìṣàkóso (requireCliToolsAuth). Ọ̀rọ̀ aṣínà sudo ni a ń fi pamọ́ fún ìgbà díẹ̀ nínú àyè module (kì í ṣe globalThis láé), a sì ń pa á rẹ́ nígbà stopMitm().


Àwọn Àtúnṣe User-Agent — àwọn oníyípadà àyíká (.env.example abala 12)

Oníyípadà Àìyípadà
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() ń lò wọ́n nípasẹ̀ ìṣàwárí alágbára. Ṣe ìgbésókè àwọn wọ̀nyí nígbà tí àwọn olùpèsè bá tu àwọn ẹ̀yà CLI tuntun jáde — àwọn ọ̀rọ̀ UA tí ó ti pẹ́ máa ń bẹ̀rẹ̀ sí í jẹ́ kí a kọ̀ wọ́n sílẹ̀ gẹ́gẹ́ bí àwọn oníbàárà tí ó ti di àtijọ́.

Àwọn Yíyí Ìpo Ìbámu CLI (.env.example abala 13)

Oníyípadà Ipa
CLI_COMPAT_CODEX=1 Àmì ìdánimọ̀ Codex
CLI_COMPAT_CLAUDE=1 Àmì ìdánimọ̀ claude-cli
CLI_COMPAT_GITHUB=1 Àmì ìdánimọ̀ GitHub Copilot Chat
CLI_COMPAT_ANTIGRAVITY=1 Àmì ìdánimọ̀ 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 Mu gbogbo àwọn tí ó wà lókè ṣiṣẹ́

A máa ń tọ́jú IP olùpèsè ní gbogbo ìgbà — yíyí náà kàn ń tún àwòrán ìbéèrè lórí waya ṣe, kò yí ọ̀nà àbájáde IP padà.


Ìmọ́tótó Àkọlé Tí ń Wọlé

OmniRoute máa ń yọ àwọn àkọlé oníbàárà tí ń wọlé kúrò kí ó tó fi ìbéèrè ránṣẹ́ síwájú, kí ìbéèrè tí ó wá láti Cursor má bàa tú User-Agent: Cursor/X.Y.Z sí ìsàlẹ̀-ọ̀nà Claude kan. Wo src/shared/constants/upstreamHeaders.ts fún àkójọ àwọn ohun tí a kò gbà láàyè, tí a ń pa mọ́ ní ìbámu pẹ̀lú àwọn àwòrán Zod àti àwọn ìdánwò ẹyọ̀.


Ìmúdójúìwọ̀n Àwọn Àmì Ìdánimọ̀ Nígbà Tí Olùpèsè Bá Yí Wọ́n Padà

  1. Gba ìrìnàjò CLI ọ̀hún pẹ̀lú mitmproxy (ìdásí TLS + ìdàsílẹ̀ àkọsílẹ̀)
  2. Yọ JA3/JA4 àti ìtẹ̀lé àkọlé gangan jáde
  3. Ṣe ìmúdójúìwọ̀n àkọọ́lẹ̀ CLI_FINGERPRINTS[...] tó bá yẹ
  4. Ṣe ìgbésókè àìyípadà *_USER_AGENT tó bá a mu nínú .env.example
  5. Tí ìfọwọ́bá TLS fúnra rẹ̀ bá yí padà, ṣe ìmúdójúìwọ̀n àpò olùpèsè tó yẹ tàbí àṣàyàn wreq-js browser:
  6. Ṣiṣe àwọn ìdánwò TLS tó jẹ́ ti olùpèsè náà àti ìdánwò canary afọwọ́ṣe sí olùpèsè tó ń ṣiṣẹ́
  7. Ṣe ìtújáde gẹ́gẹ́ bí ẹ̀yà àtúnṣe kékeré; ṣe àkọsílẹ̀ rẹ̀ nínú CHANGELOG.md

Àwọn Ìdánwò

  • open-sse/services/__tests__/claudeTlsClient.test.ts — ìhùwàsí àpò TLS tí a jọ ń lò
  • tests/unit/anthropic-cache-fingerprint.test.ts — ìdánilójú pé àmì ìdánimọ̀ máa ń jẹ́ ọ̀kan náà
  • tests/unit/chatgpt-web-source-retirement.test.ts — orísun ìfarapamọ́ ChatGPT Web tí gbogbo ènìyàn ń lò ṣì kò sí nígbà tí Codex Web ṣì wà níbẹ̀

Wo Pẹ̀lú