Skip to content
Projects

cnlimiter/codex-manager has 1,991 GitHub stars and 720 forks. GitHot measured 0 stars in 24 hours. Last checked 2026-11-07 23:58 UTC. Last push 2026-03-28.

How these counts are measured

⚠️ 免责声明:本工具仅供学习和研究使用,使用本工具产生的一切后果由使用者自行承担。请遵守相关服务的使用条款,不要用于任何违法或不当用途。 如有侵权,请及时联系,会及时删除。

Measured star growth

in 24h
0
in 7 days
Collecting history
in 15 days
Collecting history
in 1 month
Collecting history

Net star changes over overlapping periods, not daily totals. Missing measurements are left blank. Stars measure attention, not software quality.

README.md

Original

OpenAI 账号管理系统 v2

管理 OpenAI 账号的 Web UI 系统,支持多种邮箱服务、并发批量注册、代理管理和账号管理。

官方拉闸了,改变了授权流程,各位自行研究吧

⚠️ 免责声明:本工具仅供学习和研究使用,使用本工具产生的一切后果由使用者自行承担。请遵守相关服务的使用条款,不要用于任何违法或不当用途。 如有侵权,请及时联系,会及时删除。

License: MIT Python

功能特性

  • 多邮箱服务支持

    • Tempmail.lol(临时邮箱,无需配置)
    • Outlook(IMAP + XOAUTH2,支持批量导入)
    • 自定义域名(两种子类型)
      • MoeMail:标准 REST API,配置 API 地址 + API 密钥
      • TempMail:自部署 Cloudflare Worker 临时邮箱,配置 Worker 地址 + Admin 密码
    • DuckMail
      • DuckMail API:兼容 DuckMail 接口,手动填写 API 地址、默认域名,可选 API Key
  • 注册模式

    • 单次注册
    • 批量注册(可配置数量和间隔时间)
    • Outlook 批量注册(指定账户逐一注册)
  • 并发控制

    • 流水线模式(Pipeline):每隔 interval 秒启动新任务,限制最大并发数
    • 并行模式(Parallel):所有任务同时提交,Semaphore 控制最大并发
    • 并发数可在 UI 自定义(1-50)
    • 日志混合显示,带 [任务N] 前缀区分
  • 实时监控

    • WebSocket 实时日志推送
    • 跨页面导航后自动重连
    • 降级轮询备用方案
  • 代理管理

    • 动态代理(通过 API 每次获取新 IP)
    • 代理列表(随机选取,支持设置默认代理,记录使用时间)
  • 账号管理

    • 查看、删除、批量操作
    • Token 刷新与验证
    • 订阅状态管理(手动标记 / 自动检测 plus/team/free)
    • 导出格式:JSON / CSV / CPA 格式 / Sub2API 格式
      • 单个账号导出为独立 .json 文件
      • 多个 CPA 账号打包为 .zip,每个账号一个独立文件
      • Sub2API 格式所有账号合并为单个 JSON
    • Codex Auth 格式需先在账号管理中手动执行 Codex Auth 登录 成功后才能导出
    • 上传目标(直连不走代理):
      • CPA:支持多服务配置,上传时选择目标服务,可按服务开关将账号实际代理写入 auth file 的 proxy_url
      • Sub2API:支持多服务配置,标准 sub2api-data 格式
      • Team Manager:支持多服务配置
  • 支付升级

    • 为账号生成 ChatGPT Plus 或 Team 订阅支付链接
    • 后端命令行以无痕模式自动打开 Chrome/Edge
    • Team 套餐支持自定义工作区名称、座位数、计费周期
  • 系统设置

    • 代理配置(动态代理 + 代理列表,支持设默认)
    • CPA 服务列表管理(多服务,连接测试)
    • Sub2API 服务列表管理(多服务,连接测试)
    • Team Manager 服务列表管理(多服务,连接测试)
    • Outlook OAuth 参数
    • 注册参数(超时、重试、密码长度等)
    • 验证码等待配置(超时时间、轮询间隔、收件箱未找到时最多重发次数)
    • 数据库管理(备份、清理)
    • 支持远程 PostgreSQL

快速开始

环境要求

  • Python 3.10+
  • uv(推荐)或 pip

安装依赖

# 使用 uv(推荐)
uv sync

# 或使用 pip
pip install -r requirements.txt

环境变量配置(可选)

复制 .env.example 为 .env,按需填写:

cp .env.example .env
变量 说明 默认值
APP_HOST 监听主机 0.0.0.0
APP_PORT 监听端口 15555
APP_ACCESS_PASSWORD Web UI 访问密钥 admin123
APP_DATABASE_URL 数据库连接字符串 data/database.db

优先级:命令行参数 > 环境变量(.env)> 数据库设置 > 默认值

修改端口

默认端口是 15555。现在已经收敛到少数几个固定入口:

  • 本地临时启动改端口:直接用 python webui.py --port 18080
  • 本地通过 .env 改端口:设置 APP_PORT=18080
  • 源码里的默认端口:修改 src/config/constants.py 里的 DEFAULT_WEBUI_PORT
  • Docker Compose 默认端口:修改 docker-compose.yml 顶部的 x-webui-port
  • Docker 镜像构建默认端口:修改 Dockerfile 里的 ARG DEFAULT_WEBUI_PORT

补充说明:

  • src/config/constants.py 的 DEFAULT_WEBUI_PORT 会同时影响默认 Web UI 端口、默认回调地址和 e2e 脚本默认地址。
  • docker-compose.yml 里已经把端口映射、容器内 WEBUI_PORT 和健康检查统一绑到同一个 x-webui-port,改一处就够。

启动 Web UI

# 默认启动(0.0.0.0:15555)
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 进行容器化部署。Docker 镜像已托管至 GitHub Container Registry (GHCR)。

使用 docker-compose (推荐)

在项目根目录下,直接使用 docker-compose 启动:

docker-compose up -d

你可以在 docker-compose.yml 中修改相关的环境变量,例如配置端口或者设置 WEBUI_ACCESS_PASSWORD 访问密码。

如果要修改 Docker Compose 对外端口,直接改文件顶部这一行即可:

x-webui-port: &webui-port 15555

这一个值会同时同步到:

  • 宿主机端口映射
  • 容器内 WEBUI_PORT
  • 健康检查访问地址

直接使用 docker run

如果你不想使用 docker-compose,也可以直接拉取并运行镜像:

docker run -d \
  -p 15555:15555 \
  -e WEBUI_HOST=0.0.0.0 \
  -e WEBUI_PORT=15555 \
  -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: 监听的端口 (默认 15555)
  • WEBUI_ACCESS_PASSWORD: 设置 Web UI 的访问密码
  • DEBUG: 设为 1 或 true 开启调试模式
  • LOG_LEVEL: 日志级别,如 info, debug

注意:-v $(pwd)/data:/app/data 挂载参数非常重要,它确保了你的数据库文件和账户信息在容器重启或更新后不会丢失。

如果你要把容器端口改成 18080,-p 和 WEBUI_PORT 需要一起改:

docker run -d \
  -p 18080:18080 \
  -e WEBUI_HOST=0.0.0.0 \
  -e WEBUI_PORT=18080 \
  -e WEBUI_ACCESS_PASSWORD=your_secure_password \
  -v $(pwd)/data:/app/data \
  --name codex-register \
  ghcr.io/yunxilyf/codex-register:latest

使用远程 PostgreSQL

通过环境变量指定数据库连接字符串:

export APP_DATABASE_URL="postgresql://user:password@host:5432/dbname"
python webui.py

也支持 DATABASE_URL,优先级低于 APP_DATABASE_URL。

启动后访问 http://127.0.0.1:15555

打包为可执行文件

# 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

API 端点

注册任务

方法 路径 说明
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 数据库信息

WebSocket

路径 说明
ws://host/api/ws/logs/{uuid}

Docker 部署

环境要求

  • Docker
  • Docker Compose

快速部署

# 克隆项目
git clone https://github.com/cnlimiter/codex-register.git
cd codex-register

# 启动服务
docker-compose up -d

服务启动后访问 http://localhost:15555

配置说明

端口映射:默认 15555 端口,修改 docker-compose.yml 顶部的 x-webui-port 即可。

数据持久化:

volumes:
  - ./data:/app/data
  - ./logs:/app/logs

环境变量配置:

environment:
  WEBUI_ACCESS_PASSWORD: mypassword
  WEBUI_HOST: 0.0.0.0
  WEBUI_PORT: 15555

常用命令

# 查看日志
docker-compose logs -f

# 停止服务
docker-compose down

# 重新构建
docker-compose build --no-cache

注意事项

  • 首次运行会自动创建 data/ 目录和 SQLite 数据库
  • 所有账号和设置数据存储在 data/register.db
  • 日志文件写入 logs/ 目录
  • 代理优先级:动态代理 > 代理列表(随机/默认) > 直连
  • CPA / Sub2API / Team Manager 上传始终直连,不走代理;其中 CPA 可选把账号记录的代理写入 auth file 的 proxy_url
  • 注册时自动随机生成用户名和生日(年龄范围 18-45 岁)
  • 验证码重发:收件箱超时未获取到验证码时,自动重新发送验证码并再次轮询,最多重发次数可在「验证码配置」中设置(默认 2 次,设为 0 禁用)
  • 支付链接货币与计费国家动态对应,从 ChatGPT API 实时获取国家/货币列表(缓存 7 天),不再受限于内置静态映射表
  • 支付链接生成使用账号 access_token 鉴权,走全局代理配置
  • 无痕打开支付页默认调用系统 Chrome/Edge 的隐私模式
  • 订阅状态自动检测调用 chatgpt.com/backend-api/me,走全局代理
  • 批量注册并发数上限为 50,线程池大小已相应调整

License

MIT

Explore related projects