在 OpenAI 和 Anthropic API 协议之间进行双向转换的代理服务集合,通过 Node.js SDK 中转绕过 WAF 检测
AnyRouter.top 是一个提供 API 转发服务的中转站网站。
- 用途: 帮助国内用户绕过网络限制,直接通过本地终端调用 Claude 的 API
- 现状: 常被社区用于低成本使用 Claude Code 功能
- 体验地址: http://115.190.165.156:3000/
- 体验 Key:
sk-eKU0nC4uERD0OVirefq6VgcD2FCwn7t7lvqy84c9xIQrlD1S(100 美金用完即止)
| 站点 | 类型 | 特点 |
|---|---|---|
| AnyRouter.top | 公益站 | 每天登录送 25 美金 |
| AgentRouter | 公益站 | 可抽奖、登录送 25 美金 |
| CodeMirror | 非公益 | 邀请新户送积分 |
| GemAI | 非公益 | 有 gemini-3-pro-image-preview |
| GeekNow | 非公益 | 有 gemini-3-pro-image-preview、gpt5.2 |
| JXinCM | 付费 | 支持 Sora2 |
| CPass | 非公益 | 邀请新户送积分 |
| GoGoGo公益站 | 公益站 | 新户送100,每天可签到,gemini-3-pro/flash-preview |
| hotaruapi | 非公益 | 新户送20,每天可签到 |
本项目包含多个代理服务和客户端示例,实现了 OpenAI 和 Anthropic API 协议的互相转换。通过 Node.js SDK 中转绕过 WAF 检测,实现 API 接口和 Claude Code 的便捷使用。
- Node.js SDK 中转: 使用官方 Anthropic SDK 绕过 WAF/TLS 指纹检测
- Claude Code 请求伪装: 自动注入 Claude Code CLI 完整请求特征,绕过高级模型负载限制
- 双向协议转换: OpenAI ↔ Anthropic 协议互相转换
- Codex Responses API 代理: 支持 Codex
wire_api = "responses",直连https://anyrouter.top/v1 - 客户端头部透传: 完整透传客户端请求头到上游,支持 Claude Code 等工具直连
- 透传代理模式: 客户端提供 API Key,服务端只做协议转换
- 多 Key 负载均衡: 支持逗号分隔的多个 Key 自动轮询
- Docker 一键部署: Node.js、Anthropic、OpenAI、Codex 代理容器化编排
┌─────────────────────────────────────────────────────────────────────────────────────────────┐
│ AnyRouter2Proxy 调用链路总览 │
├─────────────────────────────────────────────────────────────────────────────────────────────┤
│ │
│ Claude / Anthropic 模式(需要 Node.js 层处理 WAF、TLS 指纹和 Claude Code 请求伪装) │
│ │
│ ┌──────────────┐ ┌─────────────────────┐ ┌────────────────┐ ┌──────────────┐ │
│ │ OpenAI 客户端 │ ──► │ anyrouter2openai.py │ ──► │ node-proxy │ ──► │ AnyRouter.top │ │
│ │ Bearer Key │ │ Python :9999 │ │ Node.js :4000 │ │ Claude API │ │
│ │ Chat API │ │ OpenAI→Anthropic │ │ WAF / TLS / SDK │ │ │ │
│ └──────────────┘ └─────────────────────┘ └────────────────┘ └──────────────┘ │
│ │
│ ┌──────────────┐ ┌─────────────────────┐ ┌────────────────┐ ┌──────────────┐ │
│ │ Anthropic │ ──► │ anyrouter2anthropic │ ──► │ node-proxy │ ──► │ AnyRouter.top │ │
│ │ 客户端 │ │ Python :9998 │ │ Node.js :4000 │ │ Claude API │ │
│ │ x-api-key │ │ 头部透传 │ │ Codex/Claude │ │ │ │
│ └──────────────┘ └─────────────────────┘ └────────────────┘ └──────────────┘ │
│ │
│ Anthropic AgentRouter 直连模式(不经过 Node.js WAF 层) │
│ │
│ ┌──────────────┐ ┌──────────────────────────────┐ ┌──────────────┐ │
│ │ Anthropic │ ──► │ anyrouter2anthropic_ │ ─────────────────► │ AnyRouter.top │ │
│ │ 客户端 │ │ agentrouter.py Python :9997 │ 直连 │ Claude API │ │
│ └──────────────┘ └──────────────────────────────┘ └──────────────┘ │
│ │
│ Codex / OpenAI Responses 模式(直连 AnyRouter OpenAI 兼容 /v1,不经过 Node.js 层) │
│ │
│ ┌──────────────┐ ┌──────────────────────────────┐ ┌──────────────┐ │
│ │ Codex Desktop │ ──► │ codex_anyrouter_proxy.py │ ─────────────────► │ AnyRouter.top │ │
│ │ wire_api= │ │ Python :9996 │ /v1/responses │ OpenAI /v1 │ │
│ │ responses │ │ Codex 请求头/metadata 兼容 │ │ gpt-5.5 │ │
│ └──────────────┘ └──────────────────────────────┘ └──────────────┘ │
│ │
│ ┌──────────────┐ ┌──────────────────────────────┐ ┌──────────────┐ │
│ │ CherryStudio │ ──► │ codex_anyrouter_proxy.py │ ─────────────────► │ AnyRouter.top │ │
│ │ sub2api 等 │ │ Python :9996 │ /v1/responses │ OpenAI /v1 │ │
│ │ OpenAI 兼容 │ │ /chat/completions→responses │ │ gpt-5.5 │ │
│ └──────────────┘ └──────────────────────────────┘ └──────────────┘ │
│ │
│ Web 管理端(随 Codex 代理容器一起提供) │
│ │
│ ┌──────────────┐ ┌──────────────────────────────┐ ┌────────────────────────────┐ │
│ │ 浏览器 │ ──► │ http://host:9996/admin │ ──► │ /app/config/.env │ │
│ │ 管理员登录 │ │ 管理上游 Key、代理 Key、模型 │ │ 宿主机 .env 文件持久化 │ │
│ └──────────────┘ └──────────────────────────────┘ └────────────────────────────┘ │
│ │
└─────────────────────────────────────────────────────────────────────────────────────────────┘
| 技术 | 版本 | 用途 |
|---|---|---|
| Python | 3.11+ | 代理服务主语言 |
| Node.js | 20+ | SDK 中转层(绕过 WAF) |
| FastAPI | 0.116+ | Web 框架 |
| httpx | 0.28+ | 异步 HTTP 客户端 |
| @anthropic-ai/sdk | 0.71+ | 官方 Anthropic Node.js SDK |
| Uvicorn | 0.35+ | ASGI 服务器 |
- Python 3.11+
- Node.js 20+
- pip / npm
# Python 依赖
pip install -r requirements.txt
# Node.js 依赖
cd node-proxy && npm install && cd ..# 1. 启动 Node.js 代理(端口 4000,必须最先启动)
cd node-proxy && npm start &
# 2. 启动 Anthropic 协议代理(端口 9998)
python anyrouter2anthropic.py
# 3. 启动 OpenAI 协议代理(端口 9999)
python anyrouter2openai.py
# 4. 启动 Codex Responses API 代理(端口 9996,直连 anyrouter.top/v1)
python codex_anyrouter_proxy.py先在 .env 中配置 AnyRouter Key:
ANYROUTER_API_KEY=sk-your-anyrouter-api-key
PROXY_API_KEY=sk-proxy-your-local-client-key
ANYROUTER_OPENAI_BASE_URL=https://anyrouter.top/v1
CODEX_PROXY_MODEL=gpt-5.5
ADMIN_USERNAME=admin
ADMIN_PASSWORD=changeme然后将 Codex 配置里的 base_url 指向本地代理:
model_provider = "custom"
model = "gpt-5.5"
model_reasoning_effort = "medium"
[model_providers.custom]
name = "custom"
wire_api = "responses"
requires_openai_auth = true
base_url = "http://127.0.0.1:9996/v1"Web 管理端地址:
http://127.0.0.1:9996/admin
默认账号是 admin / changeme。首次进入后建议立刻在管理端修改密码;如果要暴露到公网,请务必设置强密码和 ADMIN_TOKEN_SECRET。
CherryStudio、sub2api 等第三方平台调用时填写:
Base URL: http://你的服务器:9996/v1
API Key: 管理端“第三方平台接入”里生成的代理 API Key
Model: gpt-5.5
如果第三方平台使用 /v1/chat/completions,Codex 代理会在模型为 gpt-5.5 时自动转成上游 /v1/responses 请求,再把响应转换回 Chat Completions 格式。
import openai
client = openai.OpenAI(
api_key="sk-your-anyrouter-api-key",
base_url="http://localhost:9999/v1"
)
response = client.chat.completions.create(
model="claude-haiku-4-5-20251001",
messages=[{"role": "user", "content": "你好"}],
stream=True
)
for chunk in response:
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")import openai
# 多个 Key 用逗号分隔,代理会自动轮询
client = openai.OpenAI(
api_key="sk-key1,sk-key2,sk-key3",
base_url="http://localhost:9999/v1"
)import anthropic
client = anthropic.Anthropic(
api_key="sk-your-anyrouter-api-key",
base_url="http://localhost:9998"
)
response = client.messages.create(
model="claude-haiku-4-5-20251001",
max_tokens=1024,
messages=[{"role": "user", "content": "你好"}]
)
print(response.content[0].text)访问地址http://127.0.0.1:9996/admin
复制 .env.example 为 .env 并按需修改:
| 变量名 | 默认值 | 说明 |
|---|---|---|
NODE_PROXY_PORT |
4000 |
Node.js 代理端口 |
NODE_PROXY_URL |
http://127.0.0.1:4000 |
Python 代理连接 Node.js 的地址 |
ANYROUTER_BASE_URL |
https://anyrouter.top |
上游服务地址(Node.js 使用) |
PORT |
9998 |
Anthropic 代理端口 |
OPENAI_PROXY_PORT |
9999 |
OpenAI 代理端口 |
CODEX_PROXY_PORT |
9996 |
Codex Responses API 代理端口 |
HOST |
0.0.0.0 |
绑定地址 |
HTTP_TIMEOUT |
120 |
HTTP 请求超时时间(秒) |
DEFAULT_MAX_TOKENS |
8192 |
默认最大 tokens |
FORCE_NON_STREAM |
false |
强制非流式模式(OpenAI 代理) |
ANYROUTER_OPENAI_BASE_URL |
https://anyrouter.top/v1 |
Codex 代理转发的 OpenAI 兼容上游 |
ANYROUTER_API_KEY |
空 | Codex 代理服务端使用的 AnyRouter Key,支持逗号分隔多个 key |
PROXY_API_KEY |
空 | 对外提供给第三方平台的本地代理 Key,支持逗号分隔多个 key |
CODEX_PROXY_MODEL |
gpt-5.5 |
Codex 请求未传 model 时使用的默认模型 |
CODEX_PROXY_FORCE_MODEL |
false |
是否强制覆盖请求中的 model |
ADMIN_USERNAME |
admin |
Codex Web 管理端用户名 |
ADMIN_PASSWORD |
changeme |
Codex Web 管理端密码 |
ADMIN_TOKEN_SECRET |
随机生成 | 管理端登录 token 签名密钥 |
ADMIN_TOKEN_TTL_SECONDS |
86400 |
管理端登录有效期(秒) |
Anthropic/OpenAI 转 Anthropic 的透传模式不需要在服务端配置 API Key,客户端必须在请求头中提供。Codex 代理推荐在服务端配置 ANYROUTER_API_KEY。
# 构建 Codex 代理镜像(包含 admin-ui 管理端,Dockerfile 会自动执行前端构建)
docker build -t wwwzhouhui569/anyrouter2proxy:codex-local .
# 构建通用 Python 代理镜像(可选,用于 Anthropic/OpenAI 代理)
docker build -t wwwzhouhui569/anyrouter2proxy:latest .
# 构建 Node.js 代理镜像
docker build -t wwwzhouhui569/anyrouter-node-proxy:latest ./node-proxy构建 Codex 镜像时不需要手动执行 cd admin-ui && npm install && npm run build,多阶段 Dockerfile 会在镜像构建过程中自动完成管理端编译。
# 首次部署先创建宿主机 .env 文件,避免 Docker 将不存在的文件挂载成目录
mkdir -p /home/app/anyrouter2proxy
touch /home/app/anyrouter2proxy/.env
chmod 600 /home/app/anyrouter2proxy/.env
# 只打包并启动 Codex 代理和管理端(端口 9996)
docker compose up -d --build codex-proxy
# 如果已经先执行过 docker build,也可以直接启动
docker compose up -d codex-proxy
# 开发环境:本地构建并启动全部服务
docker compose -f docker-compose-dev.yml up -d --build
# 启动全部服务
docker compose up -d
# 查看状态
docker compose ps
# 查看日志
docker compose logs -f
# 停止服务
docker compose down需要先创建 Docker 网络,确保相关容器互通:
# 创建网络
docker network create anyrouter-proxy
# 1. 启动 Node.js 代理(必须最先启动)
docker run -d \
--name anyrouter-node-proxy \
--network anyrouter-proxy \
-p 4000:4000 \
-e NODE_PROXY_PORT=4000 \
-e ANYROUTER_BASE_URL=https://anyrouter.top \
anyrouter-node-proxy:latest
# 2. 启动 Anthropic 代理
docker run -d \
--name anyrouter-anthropic-proxy \
--network anyrouter-proxy \
-p 9998:9998 \
-e RUN_MODE=anthropic \
-e NODE_PROXY_URL=http://anyrouter-node-proxy:4000 \
-e PORT=9998 \
anyrouter2proxy:latest
# 3. 启动 OpenAI 代理
docker run -d \
--name anyrouter-openai-proxy \
--network anyrouter-proxy \
-p 9999:9999 \
-e RUN_MODE=openai \
-e NODE_PROXY_URL=http://anyrouter-node-proxy:4000 \
-e OPENAI_PROXY_PORT=9999 \
anyrouter2proxy:latest
# 4. 启动 Codex Responses API 代理
docker run -d \
--name anyrouter-codex-proxy \
--network anyrouter-proxy \
-p 9996:9996 \
-e RUN_MODE=codex \
-e CODEX_PROXY_PORT=9996 \
-e ANYROUTER_OPENAI_BASE_URL=https://anyrouter.top/v1 \
-e ANYROUTER_API_KEY=sk-your-anyrouter-api-key \
-e PROXY_API_KEY=sk-proxy-your-local-client-key \
-e CODEX_PROXY_MODEL=gpt-5.5 \
-e ADMIN_USERNAME=admin \
-e ADMIN_PASSWORD=change-this-password \
-e ADMIN_TOKEN_SECRET=change-this-random-secret \
-v /home/app/anyrouter2proxy/.env:/app/config/.env \
wwwzhouhui569/anyrouter2proxy:codex-local# 检查 Node.js 代理
curl http://localhost:4000/health
# 检查 Anthropic 代理(含 Node.js 状态)
curl http://localhost:9998/health
# 检查 OpenAI 代理(含 Node.js 状态)
curl http://localhost:9999/health
# 检查 Codex Responses API 代理
curl http://localhost:9996/health
# 测试调用
curl -X POST http://localhost:9999/v1/chat/completions \
-H "Authorization: Bearer sk-your-api-key" \
-H "Content-Type: application/json" \
-d '{"model": "claude-haiku-4-5-20251001", "messages": [{"role": "user", "content": "你好"}]}'# Codex 镜像已由 docker build 直接打好标签
# docker build -t wwwzhouhui569/anyrouter2proxy:codex-local .
# 标记其他镜像
docker tag anyrouter2proxy:latest wwwzhouhui569/anyrouter2proxy:latest
docker tag anyrouter-node-proxy:latest wwwzhouhui569/anyrouter-node-proxy:latest
# 推送到 Docker Hub
docker push wwwzhouhui569/anyrouter2proxy:codex-local
docker push wwwzhouhui569/anyrouter2proxy:latest
docker push wwwzhouhui569/anyrouter-node-proxy:latest| 端点 | 方法 | 说明 |
|---|---|---|
/v1/messages |
POST | Anthropic Messages API(直连上游) |
/v1/models |
GET | 列出可用模型 |
/health |
GET | 健康检查 |
/stats |
GET | 负载均衡统计 |
/ |
GET | 服务信息 |
| 端点 | 方法 | 说明 |
|---|---|---|
/v1/messages |
POST | Anthropic Messages API(含 WAF 处理) |
/health |
GET | 健康检查 |
/ |
GET | 服务信息 |
| 端点 | 方法 | 说明 |
|---|---|---|
/v1/messages |
POST | Anthropic Messages API |
/v1/models |
GET | 列出可用模型 |
/health |
GET | 健康检查(含 Node.js 状态) |
/ |
GET | 服务信息 |
| 端点 | 方法 | 说明 |
|---|---|---|
/v1/chat/completions |
POST | OpenAI Chat Completions API |
/v1/models |
GET | 列出可用模型 |
/health |
GET | 健康检查(含 Node.js 状态) |
/ |
GET | 服务信息 |
| 端点 | 方法 | 说明 |
|---|---|---|
/v1/responses |
POST | Codex wire_api = "responses" 主接口 |
/v1/models |
GET | 透传 AnyRouter 模型列表 |
/v1/chat/completions |
POST | OpenAI Chat Completions API;gpt-5.5 自动桥接到 /v1/responses |
/v1/{path} |
多方法 | 其它 OpenAI 兼容端点透传 |
/admin |
GET | Web 管理端 |
/admin/api/config |
GET | 读取当前配置(需登录) |
/admin/api/keys |
GET/POST/PUT | 管理 AnyRouter API Keys(需登录) |
/admin/api/keys/{index} |
DELETE | 删除指定 AnyRouter API Key(需登录) |
/admin/api/proxy-keys |
GET/POST/PUT | 管理对外提供的本地代理 Key(需登录) |
/admin/api/proxy-keys/generate |
POST | 生成新的本地代理 Key(需登录) |
/admin/api/proxy-keys/{index} |
DELETE | 删除指定本地代理 Key(需登录) |
/admin/api/settings |
PUT | 修改上游地址、默认模型、强制模型开关(需登录) |
/admin/api/password |
PUT | 修改管理端密码(需登录) |
/admin/api/reload |
POST | 从 .env 重载配置(需登录) |
/health |
GET | 健康检查 |
/ |
GET | 服务信息 |
Authorization: Bearer sk-your-api-key
# 多 Key 负载均衡
Authorization: Bearer sk-key1,sk-key2,sk-key3x-api-key: sk-your-api-key
# 或
Authorization: Bearer sk-your-api-key
# 多 Key 负载均衡
x-api-key: sk-key1,sk-key2,sk-key3推荐在 .env 或 Docker 环境变量中设置:
ANYROUTER_API_KEY=sk-your-api-key
PROXY_API_KEY=sk-proxy-your-local-client-keyANYROUTER_API_KEY 是服务端调用 AnyRouter 的上游 Key,可配置多个做轮询。PROXY_API_KEY 是你对外提供给 CherryStudio、sub2api 等第三方平台的本地代理 Key。
第三方平台请求本代理时使用:
Authorization: Bearer sk-proxy-your-local-client-key如果未设置 PROXY_API_KEY,代理不会校验本地访问 Key;如果未设置 ANYROUTER_API_KEY,代理会退回透传客户端的 Authorization 或 x-api-key 作为上游 Key。
| 模型名称 | 说明 |
|---|---|
gpt-5.5 |
Codex Responses API 代理默认模型 |
claude-haiku-4-5-20251001 |
Claude Haiku 4.5 |
claude-3-5-haiku-20241022 |
Claude 3.5 Haiku |
claude-3-5-sonnet-20241022 |
Claude 3.5 Sonnet |
claude-3-7-sonnet-20250219 |
Claude 3.7 Sonnet |
claude-sonnet-4-20250514 |
Claude Sonnet 4 |
claude-sonnet-4-5-20250929 |
Claude Sonnet 4.5 |
claude-sonnet-4-6 |
Claude Sonnet 4.6 |
claude-opus-4-5-20251101 |
Claude Opus 4.5 |
claude-opus-4-6 |
Claude Opus 4.6 |
anyrouter2proxy/
├── anyrouter2anthropic.py # Anthropic 协议代理 - Node.js 中转模式 (端口 9998)
├── anyrouter2openai.py # OpenAI 协议代理 - Node.js 中转模式 (端口 9999)
├── anyrouter2anthropic_agentrouter.py # Anthropic 协议代理 - 直连模式 (端口 9997)
├── codex_anyrouter_proxy.py # Codex Responses API 代理 - 直连 anyrouter.top/v1 (端口 9996)
├── node-proxy/ # Node.js 代理层(WAF 绕过 + Claude Code 伪装)
│ ├── server.mjs # Node.js 代理服务 (端口 4000)
│ ├── package.json # Node.js 依赖配置
│ └── Dockerfile # Node.js 镜像构建文件
├── Dockerfile # Python 代理镜像构建文件
├── docker-compose.yml # 生产环境 Docker Compose
├── docker-compose-dev.yml # 开发环境 Docker Compose
├── .env.example # 环境变量示例
├── .env.agentrouter # AgentRouter 直连模式配置
├── requirements.txt # Python 依赖
├── test_openai_proxy.py # OpenAI 代理测试
├── test_agentrouter_proxy.py # Anthropic 代理测试
│
├── # LiteLLM 方案
├── anthropic2openai_proxy.py # Anthropic → OpenAI 代理 (端口 8088)
├── conf_anthropic20251212.yaml # LiteLLM 配置文件
├── openai_client.py # OpenAI SDK 客户端示例
├── anthropic_client.py # Anthropic SDK 客户端示例
│
└── README.md
方式一:通过 Node.js 中转代理(推荐,可使用高级模型)
{
"env": {
"ANTHROPIC_AUTH_TOKEN": "sk-your-anyrouter-api-key",
"ANTHROPIC_BASE_URL": "http://localhost:9998",
"ANTHROPIC_MODEL": "claude-sonnet-4-6"
}
}方式二:直连 AnyRouter(需配合 Claude Code 环境变量)
{
"env": {
"ANTHROPIC_AUTH_TOKEN": "sk-your-anyrouter-api-key",
"ANTHROPIC_BASE_URL": "https://anyrouter.top",
"ANTHROPIC_MODEL": "claude-opus-4-6",
"CLAUDE_CODE_ATTRIBUTION_HEADER": "0",
"CLAUDE_CODE_DISABLE_NONESSENTIAL_TRAFFIC": "1"
}
}注意:直连方式仅适用于 Claude Code 等 CC 工具,普通 API 客户端无法添加这两个环境变量。推荐使用方式一通过代理调用,代理会自动注入所有必要的 Claude Code 请求特征。
- 添加新的 API 提供商
- API 地址:
http://localhost:9999/v1(OpenAI)或http://localhost:9998(Anthropic) - API Key:填入你的 anyrouter.top API Key
- 选择模型并开始使用
Q: 401 Unauthorized 错误?
A: 确保请求头包含有效的 API Key。OpenAI 协议使用 Authorization: Bearer sk-xxx,Anthropic 协议使用 x-api-key: sk-xxx。
Q: 服务无法访问?
A: 检查服务状态:docker compose ps 和 docker compose logs。确保 Node.js 代理已启动。
Q: health 接口显示 node_status 为 unreachable?
A: Node.js 代理未启动或网络不通。检查 node-proxy 容器是否运行:docker compose logs node-proxy。
Q: 如何使用多个 API Key?
A: 在客户端将多个 Key 用逗号分隔,如 sk-key1,sk-key2,sk-key3,代理会自动轮询。
Q: 遇到 WAF 拦截返回 HTML 内容?
A: Node.js 代理内置了 WAF 自动解决机制。确保请求经过 Node.js 代理(4000 端口),而不是直连上游。
Q: Docker 容器启动顺序?
A: Node.js 代理必须最先启动。使用 Docker Compose 时已通过 depends_on + service_healthy 自动保证启动顺序。
Q: 高级模型(sonnet-4-6、opus-4-6)报"负载已达上限"?
A: 这是上游服务对非 Claude Code 请求的限制。使用 Node.js 中转模式(端口 9998/9999)可自动注入 Claude Code 请求特征绕过限制。直连模式(端口 9997)无此能力。
Q: "invalid claude code request" 错误?
A: 上游检测到 Claude Code 的 User-Agent 但请求体不符合 Claude Code 特征。请确保使用 Node.js 中转模式,代理会自动注入完整的 Claude Code 系统提示、thinking 字段和 SDK 指纹头。
新增功能:Codex Responses API 代理 & Web 管理端
- 新增 Codex Responses API 代理:新增
codex_anyrouter_proxy.py,默认端口9996,支持 Codexwire_api = "responses"通过https://anyrouter.top/v1调用gpt-5.5 - 新增 OpenAI Chat Completions 桥接:第三方平台请求
/v1/chat/completions且模型为gpt-5.5时,自动转换为上游/v1/responses,再转换回 OpenAI Chat Completions 响应格式,方便 CherryStudio、sub2api 等客户端接入 - 新增 Web 管理端:新增 React + Vite + TypeScript 管理页面,支持管理上游 AnyRouter API Key、对外代理 API Key、默认模型、强制模型开关、管理员密码
- 新增对外代理 Key 管理:支持通过管理端生成或添加本地
PROXY_API_KEY,第三方平台可使用该 Key 调用本代理;服务端使用ANYROUTER_API_KEY多账号轮询调用上游 - 新增 Docker 持久化配置:Codex 代理容器使用
/app/config/.env保存管理端配置,并通过宿主机/home/app/anyrouter2proxy/.env文件挂载持久化,方便直接备份和编辑 - 新增容器内前端构建:Dockerfile 改为多阶段构建,镜像构建时自动执行
admin-ui的npm ci和npm run build,不再需要手动构建管理端静态文件 - 新增调用链路总览图:README 中更新完整调用链路,覆盖
9996Codex/OpenAI Responses、9997AgentRouter 直连、9998/9999Node.js 中转模式和 Web 管理端配置流
改进与修复:
/v1/*鉴权、配置和上游连接错误统一返回 OpenAI 兼容的顶层{"error": {...}},避免 CherryStudio/sub2api 等客户端类型校验失败.gitignore新增.env.backup.*/*.env.backup.*,避免管理端生成的密钥备份文件被误提交docker-compose.yml、docker-compose-dev.yml新增codex-proxy服务,统一使用wwwzhouhui569/anyrouter2proxy:codex-local镜像标签- README 更新 Docker 打包、Compose 启动、Docker Run、镜像推送、Codex 配置和第三方平台接入说明
新增功能:Claude Code 请求伪装 & 高级模型支持
- Claude Code 请求伪装:Node.js 代理层自动注入完整 Claude Code CLI 请求特征,包括:
User-Agent: claude-cli/2.1.39 (external, cli)anthropic-beta: claude-code-20250219,...等 beta 特性标识x-app: cli、x-stainless-*SDK 指纹头、sec-fetch-mode等完整头部- Claude Code 系统提示(system prompt)
thinking: {"type": "adaptive"}自适应思维metadata用户身份信息
- 客户端头部完整透传:Python 代理层(9998/9999)不再硬编码请求头,改为完整透传客户端所有特殊头到 Node.js 层,支持 Claude Code 等工具直连时的头部原样传递
- 绕过高级模型负载限制:通过模拟 Claude Code 请求特征,解决
claude-sonnet-4-6、claude-opus-4-6等高级模型 "负载已达到上限" 的问题 - 新增模型支持:
claude-sonnet-4-6、claude-opus-4-6 - 请求日志增强:Python 代理层增加完整请求头和请求体日志(脱敏),便于调试和抓包分析
修复问题:
- 修复
anyrouter2openai.py硬编码系统提示导致 Node.js 层无法注入 Claude Code 特征的问题 - 修复 Python httpx 的
User-Agent: python-httpx/0.28.1泄露导致上游识别为非 Claude Code 请求的问题 - 修复 Node.js 代理缺少
anthropic-version头导致非流式请求被拒绝的问题 - 修复小写/大写重复头(
content-type/Content-Type、accept/Accept)导致上游解析异常的问题
- 初始版本
- Node.js SDK 中转模式,绕过 WAF/TLS 指纹检测
- OpenAI ↔ Anthropic 双向协议转换
- 多 Key 负载均衡
- Docker 容器化部署
- AgentRouter 直连代理模式
MIT License
欢迎加入技术交流群,分享你的使用心得和反馈建议:
- 微信: laohaibao2025
- 邮箱: 75271002@qq.com
如果这个项目对你有帮助,欢迎请我喝杯咖啡
微信支付
如果觉得项目不错,欢迎点个 Star




