🎯 什么是 CLIProxyAPI?
CLIProxyAPI 是一个开源代理工具,它可以将网页版 ChatGPT/Codex 的账号通过 OAuth 认证转换成标准的 OpenAI 兼容 API。
核心价值
- 🔓 网页账号转 API:免费/低价的网页版账号也能当 API 用
- 🔄 多账号轮询:一个账号额度用完,自动切到下一个
- 🌐 标准兼容:转换后任何支持 OpenAI API 的工具都能用
- 💰 降低成本:使用网页版订阅,远比直接买 API 便宜
📊 整体架构流程图
graph TB
subgraph "Web 账号来源"
A1[ChatGPT 网页版]
A2[Claude Code 网页版]
A3[Gemini CLI]
end
subgraph "OAuth 认证"
B1[OAuth 登录]
B2[获取凭据文件]
B3[id_token + access_token + refresh_token]
end
subgraph "CLIProxyAPI 代理服务器"
C1[本地 Docker/源码部署]
C2[配置文件 config.yaml]
C3[Token 管理模块]
C4[API 转换模块]
C5[多账号轮询模块]
end
subgraph "客户端工具"
D1[Continue VS Code 插件]
D2[Claude Code CLI]
D3[OpenCode]
D4[Cursor]
D5[任何 OpenAI 兼容工具]
end
A1 -->|OAuth 授权| B1
A2 -->|OAuth 授权| B1
A3 -->|OAuth 授权| B1
B1 --> B2
B2 --> B3
B3 -->|复制到 config.yaml| C2
C2 --> C3
C3 --> C4
C4 --> C5
C5 -->|"localhost:8317/v1"| D1
C5 -->|"localhost:8317/v1"| D2
C5 -->|"localhost:8317/v1"| D3
C5 -->|"localhost:8317/v1"| D4
C5 -->|"localhost:8317/v1"| D5
%% 颜色配置 - 深色背景 + 白色文字
classDef webAccount fill:#1565C0,stroke:#0D47A1,stroke-width:3px,color:#FFFFFF,font-size:14px
classDef oauthAuth fill:#EF6C00,stroke:#BF360C,stroke-width:3px,color:#FFFFFF,font-size:14px
classDef cliProxy fill:#7B1FA2,stroke:#4A148C,stroke-width:3px,color:#FFFFFF,font-size:14px
classDef client fill:#2E7D32,stroke:#1B5E20,stroke-width:3px,color:#FFFFFF,font-size:14px
%% 应用样式类
class A1,A2,A3 webAccount
class B1,B2,B3 oauthAuth
class C1,C2,C3,C4,C5 cliProxy
class D1,D2,D3,D4,D5 client
🔄 详细工作流程
步骤 1:获取网页账号
graph LR
A["注册/拥有网页账号"] --> B["ChatGPT Plus<br/>或 Claude Code 订阅"]
B --> C["越南/印尼等地区<br/>Shopee 送 3 个月"]
C --> D["成本约 30 元/3月"]
%% 颜色配置
classDef step1 fill:#1565C0,stroke:#0D47A1,stroke-width:3px,color:#FFFFFF
classDef step2 fill:#1565C0,stroke:#0D47A1,stroke-width:3px,color:#FFFFFF
classDef step3 fill:#F9A825,stroke:#F57F17,stroke-width:3px,color:#000000
classDef step4 fill:#2E7D32,stroke:#1B5E20,stroke-width:3px,color:#FFFFFF
class A step1
class B step2
class C step3
class D step4
步骤 2:OAuth 认证获取凭据
graph TB
subgraph OAuth认证流程
A[访问 OAuth 授权页面] --> B[登录 ChatGPT 账号]
B --> C[授权 CLIProxyAPI 访问]
C --> D[获取凭据文件]
end
D --> E["id_token<br/>包含用户信息"]
D --> F["access_token<br/>用于 API 调用"]
D --> G["refresh_token<br/>用于自动续期"]
%% 颜色配置
classDef oauthFlow fill:#1565C0,stroke:#0D47A1,stroke-width:3px,color:#FFFFFF
classDef credential fill:#FF9800,stroke:#F57C00,stroke-width:3px,color:#FFFFFF
classDef token fill:#2E7D32,stroke:#1B5E20,stroke-width:3px,color:#FFFFFF
class A,B,C oauthFlow
class D credential
class E,F,G token
步骤 3:配置 CLIProxyAPI
graph TB
A[部署 CLIProxyAPI] --> B{部署方式}
B -->|推荐| B1[Docker 部署]
B -->|高级| B2[源码编译部署]
B1 --> C[编辑 config.yaml]
B2 --> C
C --> D["codex-api-key:<br/>api-key: 你的凭据文件内容"]
D --> E[启动服务]
E --> F["监听 localhost:8317"]
%% 颜色配置
classDef start fill:#1565C0,stroke:#0D47A1,stroke-width:3px,color:#FFFFFF
classDef config fill:#FF9800,stroke:#F57C00,stroke-width:3px,color:#FFFFFF
classDef success fill:#2E7D32,stroke:#1B5E20,stroke-width:3px,color:#FFFFFF
classDef choice fill:#9C27B0,stroke:#6A1B9A,stroke-width:3px,color:#FFFFFF
class A start
class B choice
class B1,B2 choice
class C,D config
class E,F success
步骤 4:客户端工具调用
graph LR
A[客户端工具] --> B[配置 API Base URL]
B --> C["localhost:8317/v1"]
C --> D["API Key 随意填<br/>例如 dummy"]
D --> E[调用 API]
E --> F[CLIProxyAPI 处理]
F --> G[多账号轮询]
G --> H[Token 自动刷新]
H --> I[返回标准 OpenAI 响应]
%% 颜色配置
classDef client fill:#1565C0,stroke:#0D47A1,stroke-width:3px,color:#FFFFFF
classDef config fill:#FF9800,stroke:#F57C00,stroke-width:3px,color:#FFFFFF
classDef process fill:#9C27B0,stroke:#6A1B9A,stroke-width:3px,color:#FFFFFF
classDef success fill:#2E7D32,stroke:#1B5E20,stroke-width:3px,color:#FFFFFF
class A client
class B,C,D config
class E,F,G,H process
class I success
🎬 完整调用时序图
sequenceDiagram
autonumber
participant U as 👤 用户
participant T as 💻 客户端工具<br/>(Continue/Codex)
participant P as 🔄 CLIProxyAPI
participant O as 🌐 OpenAI 服务
U->>T: 发送请求 "帮我写个函数"
T->>P: POST localhost:8317/v1/chat/completions
Note over P: 📊 检查可用账号
alt 有多个账号
P->>P: 选择未限流的账号
end
Note over P: 🔑 检查 Token 是否过期
alt access_token 过期
P->>O: 用 refresh_token 刷新
O-->>P: 返回新 access_token
end
P->>O: 转发请求 (使用 access_token)
O-->>P: 返回 AI 响应
alt 触发 429 限流
P->>P: ⚠️ 标记该账号限流
P->>P: 🔄 切换到下一个账号
P->>O: 🔄 重试请求
end
P-->>T: 返回标准 OpenAI 格式响应
T-->>U: 显示 AI 回复
Note over U: ✅ 用户感觉就像在用标准 OpenAI API
📝 实际配置示例
config.yaml 示例
# API 密钥(客户端工具使用)
api-keys:
- "proxy_001" # 客户端工具填这个 key
# Codex OAuth 配置
codex-api-key:
# 复制你下载的那个 JSON 文件的内容
- type: "codex"
email: "0nuvmzj99uf@duckmail.sbs"
expired: "2026-03-08T19:34:16+08:00"
id_token: "eyJhbGciOiJSUzI1NiIs..."
account_id: "7e7509ba-87b5-4b30-b682-53a940ce3101"
access_token: "eyJhbGciOiJSUzI1NiIs..."
refresh_token: "rt_6RIsdPLsZq_sfQXaLDXK7Cw..."
last_refresh: "2026-02-26T19:34:19+08:00"
VS Code Continue 插件配置示例
{
"models": [
{
"title": "GPT-5",
"provider": "openai",
"model": "gpt-5",
"apiBase": "http://localhost:8317/v1",
"apiKey": "proxy_001"
}
]
}
⚠️ 注意事项
1. 账号有效期
- 你下载的凭据文件有效期到 2026-03-08
- 临时邮箱
duckmail.sbs可能也会过期 - 建议:用自己的长期邮箱注册 ChatGPT 账号
2. 使用限制
- Codex 网页版有并发限制(约每 3 小时 150 次请求)
- CLIProxyAPI 会自动轮询多账号
- 如果只有一个账号,可能触发 429 限流
3. 安全性
config.yaml包含敏感凭据,不要提交到 Git- CLIProxyAPI 只在本地运行,不会上传凭据
- 生产环境建议使用环境变量存储凭据
🚀 快速开始
# 1. 克隆 CLIProxyAPI
git clone https://github.com/router-for-me/CLIProxyAPI.git
cd CLIProxyAPI
# 2. 安装依赖(根据你的系统)
npm install # 或使用 Docker
# 3. 编辑配置文件
cp config.example.yaml config.yaml
# 将你的凭据文件内容粘贴到 config.yaml 的 codex-api-key 部分
# 4. 启动服务
npm start # 或 docker-compose up -d
# 5. 测试 API
curl http://localhost:8317/v1/models \
-H "Authorization: Bearer proxy_001"
📚 相关资源
- CLIProxyAPI GitHub: github.com/router-for-…
- 详细教程: www.80aj.com/2026/02/05/…
- 实战教程: www.80aj.com/2026/01/15/…
💡 总结
网页 ChatGPT/Codex 账号
↓
OAuth 认证获取凭据
↓
配置到 CLIProxyAPI
↓
CLIProxyAPI 转换为标准 API
↓
任何 OpenAI 兼容工具都能用
核心优势:把网页版的免费/低价账号,变成像 OpenAI API 一样通用的开发能力!