管理 OpenAI 账号的 Web UI 系统,支持多种邮箱服务、并发批量注册、代理管理和账号管理。
⚠️ 免责声明:本工具仅供学习和研究使用,使用本工具产生的一切后果由使用者自行承担。请遵守相关服务的使用条款,不要用于任何违法或不当用途。 如有侵权,请及时联系,会及时删除。
多邮箱服务支持
注册模式
并发控制
[任务N] 前缀区分实时监控
代理管理
账号管理
.json 文件.zip,每个账号一个独立文件proxy_url支付升级
系统设置
# 使用 uv(推荐)
uv sync
# 或使用 pip
pip install -r requirements.txt
复制 .env.example 为 .env,按需填写:
cp .env.example .env
| 变量 | 说明 | 默认值 |
|---|---|---|
APP_HOST | 监听主机 | 0.0.0.0 |
APP_PORT | 监听端口 | 8000 |
APP_ACCESS_PASSWORD | Web UI 访问密钥 | admin123 |
APP_DATABASE_URL | 数据库连接字符串 | data/database.db |
优先级:命令行参数 > 环境变量(
.env)> 数据库设置 > 默认值
# 默认启动(127.0.0.1:8000)
python webui.py
# 指定地址和端口
python webui.py --host 0.0.0.0 --port 8080
# 调试模式(热重载)
python webui.py --debug
# 设置 Web UI 访问密钥
python webui.py --access-password mypassword
# 组合参数
python webui.py --host 0.0.0.0 --port 8080 --access-password mypassword
--access-password优先级高于数据库中保存的密钥设置,每次启动时生效。打包后的 exe 同样支持此参数:codex-register.exe --access-password mypassword
项目支持通过 Docker 进行容器化部署。Docker 镜像已托管至 GitHub Container Registry (GHCR)。
在项目根目录下,直接使用 docker-compose 启动:
docker-compose up -d
你可以在 docker-compose.yml 中修改相关的环境变量,例如配置端口或者设置 WEBUI_ACCESS_PASSWORD 访问密码。
如果你不想使用 docker-compose,也可以直接拉取并运行镜像:
docker run -d \
-p 1455:1455 \
-e WEBUI_HOST=0.0.0.0 \
-e WEBUI_PORT=1455 \
-e WEBUI_ACCESS_PASSWORD=your_secure_password \
-v $(pwd)/data:/app/data \
--name codex-register \
ghcr.io/yunxilyf/codex-register:latest
环境变量说明:
WEBUI_HOST: 监听的主机地址 (默认 0.0.0.0)WEBUI_PORT: 监听的端口 (默认 1455)WEBUI_ACCESS_PASSWORD: 设置 Web UI 的访问密码DEBUG: 设为 1 或 true 开启调试模式LOG_LEVEL: 日志级别,如 info, debug注意:
-v $(pwd)/data:/app/data挂载参数非常重要,它确保了你的数据库文件和账户信息在容器重启或更新后不会丢失。
通过环境变量指定数据库连接字符串:
export APP_DATABASE_URL="postgresql://user:password@host:5432/dbname"
python webui.py
也支持 DATABASE_URL,优先级低于 APP_DATABASE_URL。
启动后访问 http://127.0.0.1:8000
# Windows
build.bat
# Linux/macOS
bash build.sh
打包后生成 codex-register.exe(Windows)或 codex-register(Unix),双击或直接运行即可,无需安装 Python 环境。
codex-register-v2/ ├── webui.py # Web UI 入口 ├── build.bat # Windows 打包脚本 ├── build.sh # Linux/macOS 打包脚本 ├── src/ │ ├── config/ # 配置管理(Pydantic Settings) │ ├── core/ │ │ ├── openai/ # OAuth、Token 刷新、支付核心 │ │ └── upload/ # CPA / Sub2API / Team Manager 上传模块 │ ├── database/ # 数据库(SQLAlchemy + SQLite/PostgreSQL) │ ├── services/ # 邮箱服务实现 │ └── web/ │ ├── app.py # 应用入口、路由挂载 │ ├── task_manager.py # 任务/日志/WebSocket 管理 │ └── routes/ # API 路由 │ └── upload/ # CPA / Sub2API / TM 服务管理路由 ├── templates/ # Jinja2 HTML 模板 ├── static/ # 静态资源(CSS / JS) └── data/ # 运行时数据目录(数据库、日志)
| 层级 | 技术 |
|---|---|
| Web 框架 | FastAPI + Uvicorn |
| 数据库 | SQLAlchemy + SQLite / PostgreSQL |
| 模板引擎 | Jinja2 |
| HTTP 客户端 | curl_cffi(浏览器指纹模拟) |
| 实时通信 | WebSocket |
| 并发 | asyncio Semaphore + ThreadPoolExecutor |
| 前端 | 原生 JavaScript(无框架) |
| 打包 | PyInstaller |
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /api/registration/start | 启动注册任务 |
| GET | /api/registration/tasks | 任务列表 |
| GET | /api/registration/tasks/{uuid}/logs | 任务日志 |
| POST | /api/registration/tasks/{uuid}/cancel | 取消任务 |
| GET | /api/registration/available-services | 可用邮箱服务 |
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/accounts | 账号列表(支持分页、筛选、搜索) |
| GET | /api/accounts/{id} | 账号详情 |
| PATCH | /api/accounts/{id} | 更新账号(状态/cookies) |
| DELETE | /api/accounts/{id} | 删除账号 |
| POST | /api/accounts/batch-delete | 批量删除 |
| POST | /api/accounts/export/json | 导出 JSON |
| POST | /api/accounts/export/csv | 导出 CSV |
| POST | /api/accounts/export/cpa | 导出 CPA 格式(单文件或 ZIP) |
| POST | /api/accounts/export/sub2api | 导出 Sub2API 格式 |
| POST | /api/accounts/{id}/refresh | 刷新 Token |
| POST | /api/accounts/batch-refresh | 批量刷新 Token |
| POST | /api/accounts/{id}/validate | 验证 Token |
| POST | /api/accounts/batch-validate | 批量验证 Token |
| POST | /api/accounts/{id}/upload-cpa | 上传单账号到 CPA |
| POST | /api/accounts/batch-upload-cpa | 批量上传到 CPA |
| POST | /api/accounts/{id}/upload-sub2api | 上传单账号到 Sub2API |
| POST | /api/accounts/batch-upload-sub2api | 批量上传到 Sub2API |
| 方法 | 路径 | 说明 |
|---|---|---|
| POST | /api/payment/generate | 生成 Plus/Team 支付链接 |
| POST | /api/payment/open | 后端无痕模式打开浏览器 |
| POST | /api/payment/accounts/{id}/mark-subscription | 手动标记订阅类型 |
| POST | /api/payment/accounts/batch-check-subscription | 批量检测订阅状态 |
| POST | /api/payment/accounts/{id}/upload-tm | 上传单账号到 Team Manager |
| POST | /api/payment/accounts/batch-upload-tm | 批量上传到 Team Manager |
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/email-services | 服务列表 |
| POST | /api/email-services | 添加服务 |
| PATCH | /api/email-services/{id} | 更新服务 |
| DELETE | /api/email-services/{id} | 删除服务 |
| POST | /api/email-services/{id}/test | 测试服务 |
| POST | /api/email-services/outlook/batch-import | 批量导入 Outlook |
| 方法 | 路径 | 说明 |
|---|---|---|
| GET/POST | /api/cpa-services | CPA 服务列表/创建 |
| PUT/DELETE | /api/cpa-services/{id} | 更新/删除 CPA 服务 |
| POST | /api/cpa-services/{id}/test | 测试 CPA 连接 |
| GET/POST | /api/sub2api-services | Sub2API 服务列表/创建 |
| PUT/DELETE | /api/sub2api-services/{id} | 更新/删除 Sub2API 服务 |
| POST | /api/sub2api-services/{id}/test | 测试 Sub2API 连接 |
| GET/POST | /api/tm-services | Team Manager 服务列表/创建 |
| PUT/DELETE | /api/tm-services/{id} | 更新/删除 TM 服务 |
| POST | /api/tm-services/{id}/test | 测试 TM 连接 |
| 方法 | 路径 | 说明 |
|---|---|---|
| GET | /api/settings | 获取所有设置 |
| POST | /api/settings/proxy/dynamic | 更新动态代理设置 |
| GET/POST/DELETE | /api/settings/proxies | 代理列表管理 |
| POST | /api/settings/proxies/{id}/set-default | 设为默认代理 |
| GET | /api/settings/database | 数据库信息 |
| 路径 | 说明 |
|---|---|
ws://host/api/ws/logs/{uuid} |
# 克隆项目
git clone https://github.com/cnlimiter/codex-register.git
cd codex-register
# 启动服务
docker-compose up -d
服务启动后访问 http://localhost:8000
端口映射:默认 8000 端口,可在 docker-compose.yml 中修改。
数据持久化:
volumes:
- ./data:/app/data
- ./logs:/app/logs
环境变量配置:
environment:
- APP_ACCESS_PASSWORD=mypassword
- APP_HOST=0.0.0.0
- APP_PORT=8000
# 查看日志
docker-compose logs -f
# 停止服务
docker-compose down
# 重新构建
docker-compose build --no-cache
data/ 目录和 SQLite 数据库data/register.dblogs/ 目录proxy_urlpip install ".[payment]" && playwright install chromium(可选)chatgpt.com/backend-api/me,走全局代理