Contourner le blocage côté serveur d'Anthropic pour les clients tiers : Analyse technique
Anthropic a mis en place des vérifications côté serveur sur les sources des requêtes API. Les requêtes des clients officiels Claude Code et Cowork sont couvertes par les abonnements Pro. Les outils tiers comme OpenClaw sont redirigés vers le mode Usage Supplémentaire avec facturation par token, ce qui fait exploser les coûts. Les simples requêtes HTTP avec en-têtes falsifiés ne suffisent pas : le serveur examine le corps de la requête.
Objectif : Rendre les requêtes indistinguables des clients officiels tout en conservant les 17 fonctionnalités d'outils d'OpenClaw.
Analyse de la structure des requêtes
Les requêtes API d'Anthropic sont des payloads JSON contenant des invites système, l'historique des messages, des métadonnées et une liste d'outils. Les tests ont révélé :
- Les invites système et l'historique passent sans problème.
- L'ajout d'outils déclenche la détection.
En décomposant les outils par groupe, les coupables ont été identifiés :
- read, edit, write — passent.
- exec, process — passent.
- sessions_list, sessions_history, sessions_send — passent.
- web_search, web_fetch — passent.
- image, memory_search, memory_get — passent.
- subagents — bloqués.
- session_status — bloqués.
Le serveur d'Anthropic scanne les noms d'outils absents de Claude Code. Seulement deux des 17 outils suffisent pour déclencher l'Usage Supplémentaire.
Architecture de la chaîne de proxies
Solution : Une configuration à deux niveaux de proxies entre OpenClaw et api.anthropic.com.
- CLIProxyAPI (Go, 23k étoiles GitHub) : Imite les en-têtes de Claude Code (user-agent, en-tête de facturation, client_id). Authentification OAuth — le proxy génère une URL, vous vous connectez via le navigateur, et le refresh_token est stocké localement.
- Replace-proxy (Node.js, 133 lignes, sans dépendances) : Intercepte le JSON dans les deux sens.
- Sortant : subagents → sub_dispatch, session_status → check_status, OpenClaw → Assistant.
- Entrant : Remplacements inverses ligne par ligne pour le streaming.
Chaîne : OpenClaw (port 8318) → replace-proxy → CLIProxyAPI (8317) → api.anthropic.com.
Replace-proxy s'exécute comme un service systemd avec redémarrage automatique.
Mise en place de Replace-Proxy
Le code du proxy est léger : serveur HTTP qui parse les corps, applique des remplacements regex et bufferise les événements de streaming.
// Extrait d'exemple : Gestion des requêtes sortantes
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];
// });
// Similaire pour les réponses
Le serveur écoute sur localhost:8318 et transfère vers CLIProxyAPI:8317.
Configuration d'OpenClaw
Ajoutez un fournisseur dans openclaw.json :
{
"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}
]
}
}
}
}
Définissez comme par défaut :
openclaw config set "agents.defaults.model.primary" "custom-proxy/claude-opus-4-6"
Redémarrez OpenClaw. Le changement de modèle fonctionne en chat.
Points clés
- Détection basée sur les outils : Anthropic inspecte les noms d'outils dans le corps JSON. Les spécificités d'OpenClaw (subagents, session_status) déclenchent l'Usage Supplémentaire.
- Proxy à deux niveaux : CLIProxyAPI masque les en-têtes, replace-proxy nettoie le contenu.
- Authentification OAuth : CLIProxyAPI renouvelle automatiquement les tokens ; réauthentification à l'expiration du refresh_token.
- Support du streaming : Replace-proxy bufferise les événements pour des remplacements en temps réel.
- Risques : Contourne les CGU d'Anthropic. Bans de compte possibles ; la détection pourrait évoluer (patterns d'invite, structure).
Limites et surveillance
- Pas pour la production : Usage personnel à vos risques et périls.
- Surveillance : Vérifiez les logs du proxy pour les erreurs de remplacement ou nouvelles détections.
- Évolutivité : Systemd assure la stabilité, mais les mises à jour Anthropic pourraient nécessiter des ajustements du replace-map.
Les tests confirment que cela fonctionne sur Opus 4.6 et Sonnet 4.6 sans Usage Supplémentaire.
— Editorial Team
Aucun commentaire pour le moment.