[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-74181":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":8,"htmlUrl":8,"language":9,"languages":8,"totalLinesOfCode":8,"stars":10,"forks":11,"watchers":12,"openIssues":13,"contributorsCount":14,"subscribersCount":14,"size":14,"stars1d":14,"stars7d":12,"stars30d":15,"stars90d":14,"forks30d":14,"starsTrendScore":14,"compositeScore":16,"rankGlobal":8,"rankLanguage":8,"license":17,"archived":18,"fork":18,"defaultBranch":19,"hasWiki":18,"hasPages":18,"topics":20,"createdAt":8,"pushedAt":8,"updatedAt":21,"readmeContent":22,"aiSummary":23,"trendingCount":14,"starSnapshotCount":14,"syncStatus":24,"lastSyncTime":25,"discoverSource":26},74181,"codex-manager","cnlimiter\u002Fcodex-manager","cnlimiter",null,"Python",1992,758,5,25,0,35,59.64,"MIT License",false,"master",[],"2026-06-12 04:01:13","# OpenAI 账号管理系统 v2\n\n管理 OpenAI 账号的 Web UI 系统，支持多种邮箱服务、并发批量注册、代理管理和账号管理。\n\n# 官方拉闸了,改变了授权流程,各位自行研究吧  \n\n> ⚠️ **免责声明**：本工具仅供学习和研究使用，使用本工具产生的一切后果由使用者自行承担。请遵守相关服务的使用条款，不要用于任何违法或不当用途。 如有侵权，请及时联系，会及时删除。\n\n[![License: MIT](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-yellow.svg)](LICENSE)\n[![Python](https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPython-3.10%2B-blue.svg)](https:\u002F\u002Fwww.python.org\u002F)\n\n## 功能特性\n\n- **多邮箱服务支持**\n  - Tempmail.lol（临时邮箱，无需配置）\n  - Outlook（IMAP + XOAUTH2，支持批量导入）\n  - 自定义域名（两种子类型）\n    - **MoeMail**：标准 REST API，配置 API 地址 + API 密钥\n    - **TempMail**：自部署 Cloudflare Worker 临时邮箱，配置 Worker 地址 + Admin 密码\n  - DuckMail\n    - **DuckMail API**：兼容 DuckMail 接口，手动填写 API 地址、默认域名，可选 API Key\n\n- **注册模式**\n  - 单次注册\n  - 批量注册（可配置数量和间隔时间）\n  - Outlook 批量注册（指定账户逐一注册）\n\n- **并发控制**\n  - 流水线模式（Pipeline）：每隔 interval 秒启动新任务，限制最大并发数\n  - 并行模式（Parallel）：所有任务同时提交，Semaphore 控制最大并发\n  - 并发数可在 UI 自定义（1-50）\n  - 日志混合显示，带 `[任务N]` 前缀区分\n\n- **实时监控**\n  - WebSocket 实时日志推送\n  - 跨页面导航后自动重连\n  - 降级轮询备用方案\n\n- **代理管理**\n  - 动态代理（通过 API 每次获取新 IP）\n  - 代理列表（随机选取，支持设置默认代理，记录使用时间）\n\n- **账号管理**\n  - 查看、删除、批量操作\n  - Token 刷新与验证\n  - 订阅状态管理（手动标记 \u002F 自动检测 plus\u002Fteam\u002Ffree）\n  - 导出格式：JSON \u002F CSV \u002F CPA 格式 \u002F Sub2API 格式\n    - 单个账号导出为独立 `.json` 文件\n    - 多个 CPA 账号打包为 `.zip`，每个账号一个独立文件\n    - Sub2API 格式所有账号合并为单个 JSON\n  - Codex Auth 格式需先在账号管理中手动执行 `Codex Auth 登录` 成功后才能导出\n  - 上传目标（直连不走代理）：\n    - **CPA**：支持多服务配置，上传时选择目标服务，可按服务开关将账号实际代理写入 auth file 的 `proxy_url`\n    - **Sub2API**：支持多服务配置，标准 sub2api-data 格式\n    - **Team Manager**：支持多服务配置\n\n- **支付升级**\n  - 为账号生成 ChatGPT Plus 或 Team 订阅支付链接\n  - 后端命令行以无痕模式自动打开 Chrome\u002FEdge\n  - Team 套餐支持自定义工作区名称、座位数、计费周期\n\n- **系统设置**\n  - 代理配置（动态代理 + 代理列表，支持设默认）\n  - CPA 服务列表管理（多服务，连接测试）\n  - Sub2API 服务列表管理（多服务，连接测试）\n  - Team Manager 服务列表管理（多服务，连接测试）\n  - Outlook OAuth 参数\n  - 注册参数（超时、重试、密码长度等）\n  - 验证码等待配置（超时时间、轮询间隔、收件箱未找到时最多重发次数）\n  - 数据库管理（备份、清理）\n  - 支持远程 PostgreSQL\n\n## 快速开始\n\n### 环境要求\n\n- Python 3.10+\n- [uv](https:\u002F\u002Fgithub.com\u002Fastral-sh\u002Fuv)（推荐）或 pip\n\n### 安装依赖\n\n```bash\n# 使用 uv（推荐）\nuv sync\n\n# 或使用 pip\npip install -r requirements.txt\n```\n\n### 环境变量配置（可选）\n\n复制 `.env.example` 为 `.env`，按需填写：\n\n```bash\ncp .env.example .env\n```\n\n| 变量 | 说明 | 默认值 |\n|------|------|--------|\n| `APP_HOST` | 监听主机 | `0.0.0.0` |\n| `APP_PORT` | 监听端口 | `15555` |\n| `APP_ACCESS_PASSWORD` | Web UI 访问密钥 | `admin123` |\n| `APP_DATABASE_URL` | 数据库连接字符串 | `data\u002Fdatabase.db` |\n\n> 优先级：命令行参数 > 环境变量（`.env`）> 数据库设置 > 默认值\n\n### 修改端口\n\n默认端口是 `15555`。现在已经收敛到少数几个固定入口：\n\n- 本地临时启动改端口：直接用 `python webui.py --port 18080`\n- 本地通过 `.env` 改端口：设置 `APP_PORT=18080`\n- 源码里的默认端口：修改 `src\u002Fconfig\u002Fconstants.py` 里的 `DEFAULT_WEBUI_PORT`\n- Docker Compose 默认端口：修改 `docker-compose.yml` 顶部的 `x-webui-port`\n- Docker 镜像构建默认端口：修改 `Dockerfile` 里的 `ARG DEFAULT_WEBUI_PORT`\n\n补充说明：\n- `src\u002Fconfig\u002Fconstants.py` 的 `DEFAULT_WEBUI_PORT` 会同时影响默认 Web UI 端口、默认回调地址和 e2e 脚本默认地址。\n- `docker-compose.yml` 里已经把端口映射、容器内 `WEBUI_PORT` 和健康检查统一绑到同一个 `x-webui-port`，改一处就够。\n\n### 启动 Web UI\n\n```bash\n# 默认启动（0.0.0.0:15555）\npython webui.py\n\n# 指定地址和端口\npython webui.py --host 0.0.0.0 --port 8080\n\n# 调试模式（热重载）\npython webui.py --debug\n\n# 设置 Web UI 访问密钥\npython webui.py --access-password mypassword\n\n# 组合参数\npython webui.py --host 0.0.0.0 --port 8080 --access-password mypassword\n```\n\n> `--access-password` 优先级高于数据库中保存的密钥设置，每次启动时生效。打包后的 exe 同样支持此参数：\n> ```bash\n> codex-register.exe --access-password mypassword\n> ```\n\n### Docker 部署\n\n项目支持通过 Docker 进行容器化部署。Docker 镜像已托管至 GitHub Container Registry (GHCR)。\n\n#### 使用 docker-compose (推荐)\n\n在项目根目录下，直接使用 `docker-compose` 启动：\n\n```bash\ndocker-compose up -d\n```\n你可以在 `docker-compose.yml` 中修改相关的环境变量，例如配置端口或者设置 `WEBUI_ACCESS_PASSWORD` 访问密码。\n\n如果要修改 Docker Compose 对外端口，直接改文件顶部这一行即可：\n\n```yaml\nx-webui-port: &webui-port 15555\n```\n\n这一个值会同时同步到：\n\n- 宿主机端口映射\n- 容器内 `WEBUI_PORT`\n- 健康检查访问地址\n\n#### 直接使用 docker run\n\n如果你不想使用 docker-compose，也可以直接拉取并运行镜像：\n\n```bash\ndocker run -d \\\n  -p 15555:15555 \\\n  -e WEBUI_HOST=0.0.0.0 \\\n  -e WEBUI_PORT=15555 \\\n  -e WEBUI_ACCESS_PASSWORD=your_secure_password \\\n  -v $(pwd)\u002Fdata:\u002Fapp\u002Fdata \\\n  --name codex-register \\\n  ghcr.io\u002Fyunxilyf\u002Fcodex-register:latest\n```\n\n环境变量说明：\n- `WEBUI_HOST`: 监听的主机地址 (默认 `0.0.0.0`)\n- `WEBUI_PORT`: 监听的端口 (默认 `15555`)\n- `WEBUI_ACCESS_PASSWORD`: 设置 Web UI 的访问密码\n- `DEBUG`: 设为 `1` 或 `true` 开启调试模式\n- `LOG_LEVEL`: 日志级别，如 `info`, `debug`\n\n> **注意**：`-v $(pwd)\u002Fdata:\u002Fapp\u002Fdata` 挂载参数非常重要，它确保了你的数据库文件和账户信息在容器重启或更新后不会丢失。\n\n如果你要把容器端口改成 `18080`，`-p` 和 `WEBUI_PORT` 需要一起改：\n\n```bash\ndocker run -d \\\n  -p 18080:18080 \\\n  -e WEBUI_HOST=0.0.0.0 \\\n  -e WEBUI_PORT=18080 \\\n  -e WEBUI_ACCESS_PASSWORD=your_secure_password \\\n  -v $(pwd)\u002Fdata:\u002Fapp\u002Fdata \\\n  --name codex-register \\\n  ghcr.io\u002Fyunxilyf\u002Fcodex-register:latest\n```\n\n### 使用远程 PostgreSQL\n\n通过环境变量指定数据库连接字符串：\n\n```bash\nexport APP_DATABASE_URL=\"postgresql:\u002F\u002Fuser:password@host:5432\u002Fdbname\"\npython webui.py\n```\n\n也支持 `DATABASE_URL`，优先级低于 `APP_DATABASE_URL`。\n\n启动后访问 http:\u002F\u002F127.0.0.1:15555\n\n## 打包为可执行文件\n\n```bash\n# Windows\nbuild.bat\n\n# Linux\u002FmacOS\nbash build.sh\n```\n\n打包后生成 `codex-register.exe`（Windows）或 `codex-register`（Unix），双击或直接运行即可，无需安装 Python 环境。\n\n## 项目结构\n\n```\ncodex-register-v2\u002F\n├── webui.py            # Web UI 入口\n├── build.bat           # Windows 打包脚本\n├── build.sh            # Linux\u002FmacOS 打包脚本\n├── src\u002F\n│   ├── config\u002F         # 配置管理（Pydantic Settings）\n│   ├── core\u002F\n│   │   ├── openai\u002F     # OAuth、Token 刷新、支付核心\n│   │   └── upload\u002F     # CPA \u002F Sub2API \u002F Team Manager 上传模块\n│   ├── database\u002F       # 数据库（SQLAlchemy + SQLite\u002FPostgreSQL）\n│   ├── services\u002F       # 邮箱服务实现\n│   └── web\u002F\n│       ├── app.py      # 应用入口、路由挂载\n│       ├── task_manager.py  # 任务\u002F日志\u002FWebSocket 管理\n│       └── routes\u002F     # API 路由\n│           └── upload\u002F # CPA \u002F Sub2API \u002F TM 服务管理路由\n├── templates\u002F          # Jinja2 HTML 模板\n├── static\u002F             # 静态资源（CSS \u002F JS）\n└── data\u002F               # 运行时数据目录（数据库、日志）\n```\n\n## 技术栈\n\n| 层级 | 技术 |\n|------|------|\n| Web 框架 | FastAPI + Uvicorn |\n| 数据库 | SQLAlchemy + SQLite \u002F PostgreSQL |\n| 模板引擎 | Jinja2 |\n| HTTP 客户端 | curl_cffi（浏览器指纹模拟） |\n| 实时通信 | WebSocket |\n| 并发 | asyncio Semaphore + ThreadPoolExecutor |\n| 前端 | 原生 JavaScript（无框架） |\n| 打包 | PyInstaller |\n\n## API 端点\n\n### 注册任务\n\n| 方法 | 路径 | 说明 |\n|------|------|------|\n| POST | `\u002Fapi\u002Fregistration\u002Fstart` | 启动注册任务 |\n| GET | `\u002Fapi\u002Fregistration\u002Ftasks` | 任务列表 |\n| GET | `\u002Fapi\u002Fregistration\u002Ftasks\u002F{uuid}\u002Flogs` | 任务日志 |\n| POST | `\u002Fapi\u002Fregistration\u002Ftasks\u002F{uuid}\u002Fcancel` | 取消任务 |\n| GET | `\u002Fapi\u002Fregistration\u002Favailable-services` | 可用邮箱服务 |\n\n### 账号管理\n\n| 方法 | 路径 | 说明 |\n|------|------|------|\n| GET | `\u002Fapi\u002Faccounts` | 账号列表（支持分页、筛选、搜索） |\n| GET | `\u002Fapi\u002Faccounts\u002F{id}` | 账号详情 |\n| PATCH | `\u002Fapi\u002Faccounts\u002F{id}` | 更新账号（状态\u002Fcookies） |\n| DELETE | `\u002Fapi\u002Faccounts\u002F{id}` | 删除账号 |\n| POST | `\u002Fapi\u002Faccounts\u002Fbatch-delete` | 批量删除 |\n| POST | `\u002Fapi\u002Faccounts\u002Fexport\u002Fjson` | 导出 JSON |\n| POST | `\u002Fapi\u002Faccounts\u002Fexport\u002Fcsv` | 导出 CSV |\n| POST | `\u002Fapi\u002Faccounts\u002Fexport\u002Fcpa` | 导出 CPA 格式（单文件或 ZIP） |\n| POST | `\u002Fapi\u002Faccounts\u002Fexport\u002Fsub2api` | 导出 Sub2API 格式 |\n| POST | `\u002Fapi\u002Faccounts\u002F{id}\u002Frefresh` | 刷新 Token |\n| POST | `\u002Fapi\u002Faccounts\u002Fbatch-refresh` | 批量刷新 Token |\n| POST | `\u002Fapi\u002Faccounts\u002F{id}\u002Fvalidate` | 验证 Token |\n| POST | `\u002Fapi\u002Faccounts\u002Fbatch-validate` | 批量验证 Token |\n| POST | `\u002Fapi\u002Faccounts\u002F{id}\u002Fupload-cpa` | 上传单账号到 CPA |\n| POST | `\u002Fapi\u002Faccounts\u002Fbatch-upload-cpa` | 批量上传到 CPA |\n| POST | `\u002Fapi\u002Faccounts\u002F{id}\u002Fupload-sub2api` | 上传单账号到 Sub2API |\n| POST | `\u002Fapi\u002Faccounts\u002Fbatch-upload-sub2api` | 批量上传到 Sub2API |\n\n### 支付升级\n\n| 方法 | 路径 | 说明 |\n|------|------|------|\n| POST | `\u002Fapi\u002Fpayment\u002Fgenerate` | 生成 Plus\u002FTeam 支付链接 |\n| POST | `\u002Fapi\u002Fpayment\u002Fopen` | 后端无痕模式打开浏览器 |\n| POST | `\u002Fapi\u002Fpayment\u002Faccounts\u002F{id}\u002Fmark-subscription` | 手动标记订阅类型 |\n| POST | `\u002Fapi\u002Fpayment\u002Faccounts\u002Fbatch-check-subscription` | 批量检测订阅状态 |\n| POST | `\u002Fapi\u002Fpayment\u002Faccounts\u002F{id}\u002Fupload-tm` | 上传单账号到 Team Manager |\n| POST | `\u002Fapi\u002Fpayment\u002Faccounts\u002Fbatch-upload-tm` | 批量上传到 Team Manager |\n\n### 邮箱服务\n\n| 方法 | 路径 | 说明 |\n|------|------|------|\n| GET | `\u002Fapi\u002Femail-services` | 服务列表 |\n| POST | `\u002Fapi\u002Femail-services` | 添加服务 |\n| PATCH | `\u002Fapi\u002Femail-services\u002F{id}` | 更新服务 |\n| DELETE | `\u002Fapi\u002Femail-services\u002F{id}` | 删除服务 |\n| POST | `\u002Fapi\u002Femail-services\u002F{id}\u002Ftest` | 测试服务 |\n| POST | `\u002Fapi\u002Femail-services\u002Foutlook\u002Fbatch-import` | 批量导入 Outlook |\n\n### 上传服务管理\n\n| 方法 | 路径 | 说明 |\n|------|------|------|\n| GET\u002FPOST | `\u002Fapi\u002Fcpa-services` | CPA 服务列表\u002F创建 |\n| PUT\u002FDELETE | `\u002Fapi\u002Fcpa-services\u002F{id}` | 更新\u002F删除 CPA 服务 |\n| POST | `\u002Fapi\u002Fcpa-services\u002F{id}\u002Ftest` | 测试 CPA 连接 |\n| GET\u002FPOST | `\u002Fapi\u002Fsub2api-services` | Sub2API 服务列表\u002F创建 |\n| PUT\u002FDELETE | `\u002Fapi\u002Fsub2api-services\u002F{id}` | 更新\u002F删除 Sub2API 服务 |\n| POST | `\u002Fapi\u002Fsub2api-services\u002F{id}\u002Ftest` | 测试 Sub2API 连接 |\n| GET\u002FPOST | `\u002Fapi\u002Ftm-services` | Team Manager 服务列表\u002F创建 |\n| PUT\u002FDELETE | `\u002Fapi\u002Ftm-services\u002F{id}` | 更新\u002F删除 TM 服务 |\n| POST | `\u002Fapi\u002Ftm-services\u002F{id}\u002Ftest` | 测试 TM 连接 |\n\n### 设置\n\n| 方法 | 路径 | 说明 |\n|------|------|------|\n| GET | `\u002Fapi\u002Fsettings` | 获取所有设置 |\n| POST | `\u002Fapi\u002Fsettings\u002Fproxy\u002Fdynamic` | 更新动态代理设置 |\n| GET\u002FPOST\u002FDELETE | `\u002Fapi\u002Fsettings\u002Fproxies` | 代理列表管理 |\n| POST | `\u002Fapi\u002Fsettings\u002Fproxies\u002F{id}\u002Fset-default` | 设为默认代理 |\n| GET | `\u002Fapi\u002Fsettings\u002Fdatabase` | 数据库信息 |\n\n### WebSocket\n\n| 路径 | 说明 |\n|------|------|\n|| `ws:\u002F\u002Fhost\u002Fapi\u002Fws\u002Flogs\u002F{uuid}` | 实时日志流 |\n\n## Docker 部署\n\n### 环境要求\n\n- Docker\n- Docker Compose\n\n### 快速部署\n\n```bash\n# 克隆项目\ngit clone https:\u002F\u002Fgithub.com\u002Fcnlimiter\u002Fcodex-register.git\ncd codex-register\n\n# 启动服务\ndocker-compose up -d\n```\n\n服务启动后访问 http:\u002F\u002Flocalhost:15555\n\n### 配置说明\n\n**端口映射**：默认 `15555` 端口，修改 `docker-compose.yml` 顶部的 `x-webui-port` 即可。\n\n**数据持久化**：\n```yaml\nvolumes:\n  - .\u002Fdata:\u002Fapp\u002Fdata\n  - .\u002Flogs:\u002Fapp\u002Flogs\n```\n\n**环境变量配置**：\n```yaml\nenvironment:\n  WEBUI_ACCESS_PASSWORD: mypassword\n  WEBUI_HOST: 0.0.0.0\n  WEBUI_PORT: 15555\n```\n\n### 常用命令\n\n```bash\n# 查看日志\ndocker-compose logs -f\n\n# 停止服务\ndocker-compose down\n\n# 重新构建\ndocker-compose build --no-cache\n```\n\n## 注意事项\n\n- 首次运行会自动创建 `data\u002F` 目录和 SQLite 数据库\n- 所有账号和设置数据存储在 `data\u002Fregister.db`\n- 日志文件写入 `logs\u002F` 目录\n- 代理优先级：动态代理 > 代理列表（随机\u002F默认） > 直连\n- CPA \u002F Sub2API \u002F Team Manager 上传始终直连，不走代理；其中 CPA 可选把账号记录的代理写入 auth file 的 `proxy_url`\n- 注册时自动随机生成用户名和生日（年龄范围 18-45 岁）\n- 验证码重发：收件箱超时未获取到验证码时，自动重新发送验证码并再次轮询，最多重发次数可在「验证码配置」中设置（默认 2 次，设为 0 禁用）\n- 支付链接货币与计费国家动态对应，从 ChatGPT API 实时获取国家\u002F货币列表（缓存 7 天），不再受限于内置静态映射表\n- 支付链接生成使用账号 access_token 鉴权，走全局代理配置\n- 无痕打开支付页默认调用系统 Chrome\u002FEdge 的隐私模式\n- 订阅状态自动检测调用 `chatgpt.com\u002Fbackend-api\u002Fme`，走全局代理\n- 批量注册并发数上限为 50，线程池大小已相应调整\n\n## License\n\n[MIT](LICENSE)\n","codex-manager 是一个用于管理 OpenAI 账号的 Web UI 系统，支持多种邮箱服务、并发批量注册、代理管理和账号管理。其核心功能包括多邮箱服务支持（如 Tempmail.lol、Outlook 和自定义域名等）、注册模式（单次和批量注册）、并发控制（流水线和并行模式）、实时监控（WebSocket 实时日志推送）、代理管理（动态代理和代理列表）以及账号管理（查看、删除、批量操作、Token 刷新与验证等）。该系统适合需要高效管理和自动化处理多个 OpenAI 账号的场景，例如开发者、研究者或团队协作环境。",2,"2026-06-11 03:49:25","high_star"]