Obcházení serverové blokace Anthropic v třetích klientech: technická analýza
Anthropic zavedla serverovou kontrolu zdrojů požadavků na API. Požadavky z oficiálních klientů Claude Code a Cowork jsou pokryty předplatným Pro. Nástroje třetích stran, jako je OpenClaw, jsou přesměrovány do režimu Extra Usage s platbou za API tokeny, což mnohonásobně zvyšuje náklady. Prostý HTTP požadavek s falešnými hlavičkami nefunguje — server analyzuje obsah těla požadavku.
Cíl: učinit požadavek nerozlišitelným od oficiálního klienta, přičemž zachováme funkčnost OpenClaw s 17 nástroji.
Analýza struktury požadavku
Požadavek na Anthropic API je JSON se systémovým promptem, historií zpráv, metadaty a seznamem nástrojů. Testování ukázalo:
- Systémový prompt a historie procházejí kontrolou.
- Přidání nástrojů vede k detekci.
Rozbor nástrojů podle skupin odhalil problematické:
- read, edit, write — procházejí.
- exec, process — procházejí.
- sessions_list, sessions_history, sessions_send — procházejí.
- web_search, web_fetch — procházejí.
- image, memory_search, memory_get — procházejí.
- subagents — blokováno.
- session_status — blokováno.
Server Anthropic hledá specifická jména nástrojů, která nejsou přítomna v Claude Code. Dva nástroje z 17 stačí k přesměrování do Extra Usage.
Architektura řetězce proxy
Řešení: dvouúrovňový proxy mezi OpenClaw a api.anthropic.com.
- CLIProxyAPI (Go, 23k hvězd na GitHubu): napodobuje hlavičky Claude Code (user-agent, billing header, client_id). Autorizace přes OAuth — proxy generuje URL, uživatel se přihlásí v prohlížeči, refresh_token se uloží lokálně.
- Replace-proxy (Node.js, 133 řádků, bez závislostí): zachycuje JSON v obou směrech.
- V požadavku: subagents → sub_dispatch, session_status → check_status, OpenClaw → Assistant.
- V odpovědi: obrácená náhrada řádek po řádku pro streaming.
Řetězec: OpenClaw (port 8318) → replace-proxy → CLIProxyAPI (8317) → api.anthropic.com.
Replace-proxy je spuštěn jako systemd-služba s automatickým restartem.
Nastavení replace-proxy
Kód proxy je minimalistický: HTTP-server parsuje tělo, aplikuje nahrazení přes regex, bufferyzuje streaming-události.
// Příklad fragmentu: zpracování příchozího požadavku
const replaceMap = {
'subagents': 'sub_dispatch',
'session_status': 'check_status',
'OpenClaw': 'Assistant'
};
// JSON.parse(body).tools.forEach(tool => {
// if (replaceMap[tool.name]) tool.name = replaceMap[tool.name];
// });
// Podobně pro odpovědi
Server naslouchá na localhost:8318, přesměrovává na CLIProxyAPI:8317.
Konfigurace OpenClaw
V openclaw.json přidejte poskytovatele:
{
"models": {
"providers": {
"custom-proxy": {
"baseUrl": "http://localhost:8318",
"apiKey": "<api-key-from-CLIProxyAPI>",
"api": "anthropic-messages",
"models": [
{"id": "claude-opus-4-6", "contextWindow": 1000000, "maxTokens": 16384},
{"id": "claude-sonnet-4-6", "contextWindow": 200000, "maxTokens": 16384}
]
}
}
}
}
Nastavte výchozí:
openclaw config set "agents.defaults.model.primary" "custom-proxy/claude-opus-4-6"
Restartujte OpenClaw. Přepínání modelů funguje přes chat.
Co je důležité
- Detekce podle nástrojů: Anthropic kontroluje jména nástrojů v JSON-těle. Unikátní pro OpenClaw (subagents, session_status) vyvolávají Extra Usage.
- Dvouúrovňový proxy: CLIProxyAPI maskuje hlavičky, replace-proxy — obsah.
- OAuth-autorizace: CLIProxyAPI automaticky obnovuje tokeny, opětovná autorizace při vypršení refresh_token.
- Podpora streamingu: Replace-proxy bufferyzuje události pro nahrazení v reálném čase.
- Rizika: Obcházení ToS Anthropic. Možný zákaz účtu; detekce se může změnit (vzory promptu, struktura).
Omezení a monitorování
- Ne pro produkci: osobní použití na vlastní riziko.
- Monitorování: logy proxy na chyby nahrazení nebo nové detekce.
- Škálování: systemd zajišťuje stabilitu, ale při aktualizacích Anthropic je potřeba upravit replace-map.
Testování potvrdilo fungování na Opus 4.6 a Sonnet 4.6 bez Extra Usage.
— Editorial Team
Zatím žádné komentáře.