# codex-register-v3
**Repository Path**: wurulan/codex-register-v3
## Basic Information
- **Project Name**: codex-register-v3
- **Description**: No description available
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-04-15
- **Last Updated**: 2026-04-15
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# codex-register-v3
ChatGPT 账号无头浏览器自动批量注册工具。
支持双浏览器引擎(Playwright Chromium / Camoufox Firefox)、多种邮件服务(GPTMail / NPCmail / YYDS Mail / 通用 IMAP / Outlook)、代理池轮换,asyncio 并发执行,SQLite 持久化存储,注册完成后自动完成 Codex OAuth Token 换取。
---
## 功能特性
| 功能 | 说明 |
|------|------|
| 双引擎 | Playwright (Chromium) 或 Camoufox (Firefox),可通过 WebUI 或 CLI 即时切换 |
| 反检测 | Chromium 注入 13 点 stealth JS;Camoufox 内置指纹混淆 + GeoIP |
| 手机指纹 | 顶层 `mobile: true` 即可全程使用手机端 UA / 视口 / 触控,注册与 OAuth 复用同一 session |
| 多邮件后端 | GPTMail / NPCmail / YYDS Mail / **通用 IMAP** / **Outlook**,统一工厂接口 |
| IMAP 别名 | qq.com / gmail.com 自动启用 `+alias` 子地址,每次注册生成唯一别名,并发互不干扰 |
| 多 IMAP 账户 | 支持配置多个 IMAP 邮箱,随机轮换或按索引固定使用 |
| WebUI 配置 | WebUI/FastAPI 配置存储在 SQLite `settings` 表;支持页面直接修改各配置 section |
| OAuth Token | 注册完成后自动完成 Codex PKCE OAuth2 流程,写入 `access_token` / `refresh_token` / `id_token` |
| OAuth OTP 重试 | OAuth 登录阶段若直接进入邮箱验证码,支持自动检测;验证码错误时自动重发、拉取新码并重试 |
| 代理池 | 从文本文件导入,轮询分配,失败 3 次自动禁用 |
| 并发 | asyncio.Semaphore 控制同时运行的浏览器数量 |
| 持久化 | aiosqlite 驱动的 SQLite,账号去重 upsert |
| CLI / WebUI | typer + rich CLI,以及 FastAPI + React WebUI |
| 日志 | loguru 双路输出:终端彩色 INFO + 文件 DEBUG(register.log,10 MB 自动轮转) |
---
## 注册流程(7 步状态机)
注册流程完全逆向自 `plan/browser/tool.js` (`_0x548_inner`) 并在 Python 中忠实复现:
```
GOTO_SIGNUP → FILL_EMAIL → FILL_PASSWORD → WAIT_CODE
→ FILL_CODE → FILL_PROFILE → COMPLETE
```
| 状态 | 动作 |
|------|------|
| `GOTO_SIGNUP` | 打开 `chatgpt.com/auth/login`,等待 Auth0 跳转;若邮箱框已出现直接填写,否则查找并点击"Sign up"按钮 |
| `FILL_EMAIL` | 等待邮箱输入框,用 React 原生 setter 填入生成的邮箱,点击 Continue |
| `FILL_PASSWORD` | 等待密码框,填入自动生成的强密码(大写+小写+数字+特殊字符),点击 Continue |
| `WAIT_CODE` | 轮询邮件服务获取 6 位验证码(最长 60 s,可配置) |
| `FILL_CODE` | 将 6 位验证码逐位填入 `input[maxlength="1"]` 方格或单字段,点击 Continue |
| `FILL_PROFILE` | 填写 firstName / lastName;生日优先走 `[role="spinbutton"]`,不足时回退到 `