Anthropic 서버 차단 우회: OpenClaw 프록시 체인 기술 분석
Anthropic이 API 요청 출처에 대한 서버 측 검사를 도입했습니다. 공식 Claude Code와 Cowork 클라이언트 요청은 Pro 구독으로 처리되지만, OpenClaw 같은 서드파티 도구는 토큰당 과금되는 Extra Usage 모드로 전환되어 비용이 크게 증가합니다. 헤더 위조만으로는 안 됩니다—서버가 요청 본문을 깊이 분석합니다.
목표: 공식 클라이언트와 구분되지 않게 요청을 보내고, OpenClaw의 17개 도구 기능을 그대로 유지합니다.
요청 구조 분석
Anthropic API 요청은 시스템 프롬프트, 메시지 히스토리, 메타데이터, 도구 목록을 포함한 JSON 페이로드입니다. 테스트 결과:
- 시스템 프롬프트와 히스토리는 문제없음.
- 도구 추가 시 탐지됨.
도구를 그룹별로 분석한 결과 문제 원인을 특정했습니다:
- read, edit, write — 통과.
- exec, process — 통과.
- sessions_list, sessions_history, sessions_send — 통과.
- web_search, web_fetch — 통과.
- image, memory_search, memory_get — 통과.
- subagents — 차단.
- session_status — 차단.
Anthropic 서버는 Claude Code에 없는 도구 이름을 스캔합니다. 17개 도구 중 단 2개만 있어도 Extra Usage가 발동합니다.
프록시 체인 아키텍처
해결책: OpenClaw와 api.anthropic.com 사이에 2단계 프록시 설정.
- CLIProxyAPI (Go, GitHub 23k 스타): Claude Code 헤더(user-agent, billing header, client_id) 모방. OAuth 인증—프록시가 URL 생성, 브라우저로 로그인 후 refresh_token 로컬 저장.
- Replace-proxy (Node.js, 133줄, 의존성 없음): 양방향 JSON 가로채기.
- 발신: subagents → sub_dispatch, session_status → check_status, OpenClaw → Assistant.
- 수신: 스트리밍을 위해 줄 단위 역변환.
체인: OpenClaw (포트 8318) → replace-proxy → CLIProxyAPI (8317) → api.anthropic.com.
Replace-proxy는 systemd 서비스로 자동 재시작 설정.
Replace-Proxy 설정
프록시 코드는 간결: HTTP 서버가 본문 파싱, 정규식 치환, 스트리밍 이벤트 버퍼링.
// 발신 요청 처리 샘플
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];
// });
// 응답도 유사
서버는 localhost:8318에서 수신, CLIProxyAPI:8317로 전달.
OpenClaw 설정
openclaw.json에 프로바이더 추가:
{
"models": {
"providers": {
"custom-proxy": {
"baseUrl": "http://localhost:8318",
"apiKey": "<CLIProxyAPI의 api-key>",
"api": "anthropic-messages",
"models": [
{"id": "claude-opus-4-6", "contextWindow": 1000000, "maxTokens": 16384},
{"id": "claude-sonnet-4-6", "contextWindow": 200000, "maxTokens": 16384}
]
}
}
}
}
기본 설정:
openclaw config set "agents.defaults.model.primary" "custom-proxy/claude-opus-4-6"
OpenClaw 재시작. 채팅 내 모델 전환 가능.
주요 요점
- 도구 기반 탐지: Anthropic이 JSON 본문의 도구 이름을 검사. OpenClaw 고유 도구(subagents, session_status)가 Extra Usage 유발.
- 2단계 프록시: CLIProxyAPI로 헤더 숨김, replace-proxy로 내용 세척.
- OAuth 인증: CLIProxyAPI가 토큰 자동 갱신; refresh_token 만료 시 재인증.
- 스트리밍 지원: Replace-proxy가 실시간 치환 위해 이벤트 버퍼링.
- 위험: Anthropic ToS 위반. 계정 정지 가능; 탐지 방식 진화(프롬프트 패턴, 구조) 가능.
제한사항 및 모니터링
- 프로덕션 불가: 개인 용도로 본인 책임.
- 모니터링: 프록시 로그로 치환 오류나 신규 탐지 확인.
- 확장성: Systemd로 안정 유지, Anthropic 업데이트 시 replace-map 조정 필요.
테스트 결과 Opus 4.6과 Sonnet 4.6에서 Extra Usage 없이 동작 확인.
— Editorial Team
아직 댓글이 없습니다.