* 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.
27 KiB
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_PROXY→HTTP_PROXY→ALL_PROXY(pẹ̀lú àwọn ẹ̀yà lẹ́tà kékeré náà) - Àkókò ìdádúró:
TLS_CLIENT_TIMEOUT_MS(ń jogún látiFETCH_TIMEOUT_MS, àìyípadà 600000) - Response
wreq-jsbá 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_MSnìkan kò lè fi ààlà sí body tí kò mú byte àkọ́kọ́ jáde láéláé.guardTlsFirstByte()ń firead()àkọ́kọ́ ti body ṣe ìdíje pẹ̀lúTLS_FIRST_BYTE_WATCHDOG_MS(àìyípadà10000,0má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úproxyFetchtẹ̀ 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ọ̀).
Transport olùpèsè web-cookie — wreq-js 3.2.0
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
ReadableStreamresponse 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ẹ́
proxyUrlti ì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á URLdata:tó ní content type padà láìba UTF-8 jẹ́.- Àwọn àṣìṣe ni
TlsClientUnavailableError(package/addon kò sí),TlsClientHangError(deadline ti kọjá), àtiWreqTransportCapacityError(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:
- Ṣe serialization ara pẹ̀lú àfipamọ́-àyè
cch=00000; xxhash64(bytes, seed) & 0xFFFFF- Hex kékeré oní-lẹ́tà márùn-ún tí a fi odo kún níwájú
- 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-12ní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úndisplay: "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-controlclaudeCodeToolRemapper.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:
- Jẹ́ kí àìyípadà
ANTIGRAVITY_CREDITS=offwà bí olùdarí kò bá gba ewu kírẹ́díìtì tí a sanwó fún àti ìmúṣẹ lórí àkọọ́lẹ̀ ní kedere.retrymá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ẹ;alwaysmáa ń fi kírẹ́díìtì kún ìbéèrè àkọ́kọ́. - 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. - Ṣè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). 30–60 RPM jẹ́ òpin òkè tó ṣeé dáàbò bo fún lílo tó ń bá a lọ.
- 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ọ̀.
- Tí a bá fòfin de ọ́: fi ẹ̀bẹ̀ ránṣẹ́ nípasẹ̀
support.google.com→ “Restore Workspace/Account access” pẹ̀lú ara ìdáhùnquota_exceeded/service disabledgangan 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— ń kaprocess.env.ANTIGRAVITY_CREDITSsrc/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)
- Ṣẹ̀dá cert tí a fọwọ́ sí fúnra rẹ̀ nípasẹ̀
selfsigned(RSA-2048, SHA-256, 1y) —cert/generate.ts - Fi cert sí ibi ìpamọ́ ìgbẹ́kẹ̀lé ètò —
cert/install.ts - Ṣàfikún àkọsílẹ̀ hosts
127.0.0.1 daily-cloudcode-pa.googleapis.com—dns/dnsConfig.ts - Ṣe spawn
src/mitm/server.cjspẹ̀lúROUTER_API_KEY+MITM_LOCAL_PORT(àiyipada443) - 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à
- Gba ìrìnàjò CLI ọ̀hún pẹ̀lú
mitmproxy(ìdásí TLS + ìdàsílẹ̀ àkọsílẹ̀) - Yọ JA3/JA4 àti ìtẹ̀lé àkọlé gangan jáde
- Ṣe ìmúdójúìwọ̀n àkọọ́lẹ̀
CLI_FINGERPRINTS[...]tó bá yẹ - Ṣe ìgbésókè àìyípadà
*_USER_AGENTtó bá a mu nínú.env.example - 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: - Ṣ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ṣẹ́
- Ṣ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ú
- RESILIENCE_GUIDE.md — ohun tó máa ṣẹlẹ̀ nígbà tí ọ̀nà àṣírí kan bá gba
403 - TROUBLESHOOTING.md
- ENVIRONMENT.md — ìtọ́kasí env ní ẹ̀kúnrẹ́rẹ́
- CLI-TOOLS.md — ojú ìwòye olùṣiṣẹ́ nípa ìlànà iṣẹ́ MITM