mirror of
https://github.com/cnlimiter/codex-register.git
synced 2026-05-06 20:02:51 +08:00
288 lines
9.0 KiB
Markdown
288 lines
9.0 KiB
Markdown
# OpenAI 自动注册系统 v2
|
||
|
||
自动化注册 OpenAI 账号的 Web UI 系统,支持多种邮箱服务、并发批量注册、代理管理和账号管理。
|
||
|
||
[](LICENSE)
|
||
[](https://www.python.org/)
|
||
|
||
## 功能特性
|
||
|
||
- **多邮箱服务支持**
|
||
- Tempmail.lol(临时邮箱,无需配置)
|
||
- Outlook(IMAP + XOAUTH2,支持批量导入)
|
||
- 自定义域名(REST API)
|
||
|
||
- **注册模式**
|
||
- 单次注册
|
||
- 批量注册(可配置数量和间隔时间)
|
||
- Outlook 批量注册(指定账户逐一注册)
|
||
|
||
- **并发控制**
|
||
- 流水线模式(Pipeline):每隔 interval 秒启动新任务,限制最大并发数
|
||
- 并行模式(Parallel):所有任务同时提交,Semaphore 控制最大并发
|
||
- 并发数可在 UI 自定义(1-50)
|
||
- 日志混合显示,带 `[任务N]` 前缀区分
|
||
|
||
- **实时监控**
|
||
- WebSocket 实时日志推送
|
||
- 跨页面导航后自动重连
|
||
- 降级轮询备用方案
|
||
|
||
- **代理管理**
|
||
- 静态代理配置
|
||
- 动态代理(通过 API 每次获取新 IP)
|
||
- 代理列表(随机选取,记录使用时间)
|
||
|
||
- **账号管理**
|
||
- 查看、删除、批量操作
|
||
- Token 刷新与验证
|
||
- 导出(JSON / CSV / CPA 格式)
|
||
- 单个账号导出为独立 `.json` 文件
|
||
- 多个账号打包为 `.zip`,每个账号一个独立文件
|
||
- CPA 上传(Codex Protocol API,直连不走代理)
|
||
- 订阅状态管理(手动标记 / 自动检测 plus/team)
|
||
- Team Manager 上传(直连不走代理)
|
||
|
||
- **支付升级**
|
||
- 为账号生成 ChatGPT Plus 或 Team 订阅支付链接
|
||
- 后端命令行以无痕模式自动打开 Chrome/Edge
|
||
- Team 套餐支持自定义工作区名称、座位数、计费周期
|
||
|
||
- **系统设置**
|
||
- 代理配置(静态 + 动态)
|
||
- Outlook OAuth 参数
|
||
- 注册参数(超时、重试、密码长度等)
|
||
- 验证码等待配置
|
||
- CPA 上传配置
|
||
- Team Manager 配置(API URL + API Key)
|
||
- 数据库管理(备份、清理)
|
||
|
||
## 快速开始
|
||
|
||
### 环境要求
|
||
|
||
- Python 3.10+
|
||
- [uv](https://github.com/astral-sh/uv)(推荐)或 pip
|
||
|
||
### 安装依赖
|
||
|
||
```bash
|
||
# 使用 uv(推荐)
|
||
uv sync
|
||
|
||
# 或使用 pip
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
### 启动 Web UI
|
||
|
||
```bash
|
||
# 默认启动(127.0.0.1:8000)
|
||
python webui.py
|
||
|
||
# 指定地址和端口
|
||
python webui.py --host 0.0.0.0 --port 8080
|
||
|
||
# 调试模式(热重载)
|
||
python webui.py --debug
|
||
```
|
||
|
||
启动后访问 http://127.0.0.1:8000
|
||
|
||
## 打包为可执行文件
|
||
|
||
```bash
|
||
# 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/ # 核心功能(注册引擎、HTTP 客户端、CPA 上传、支付、TM 上传)
|
||
│ ├── database/ # 数据库(SQLAlchemy + SQLite)
|
||
│ ├── services/ # 邮箱服务实现
|
||
│ └── web/ # FastAPI Web 应用
|
||
│ ├── app.py # 应用入口、路由挂载
|
||
│ ├── routes/ # API 路由
|
||
│ ├── task_manager.py # 任务/日志/WebSocket 管理
|
||
│ └── routes/websocket.py # WebSocket 处理
|
||
├── templates/ # Jinja2 HTML 模板
|
||
├── static/ # 静态资源(CSS / JS)
|
||
└── data/ # 运行时数据目录(数据库、日志)
|
||
```
|
||
|
||
## 技术栈
|
||
|
||
| 层级 | 技术 |
|
||
|------|------|
|
||
| Web 框架 | FastAPI + Uvicorn |
|
||
| 数据库 | SQLAlchemy + SQLite |
|
||
| 模板引擎 | Jinja2 |
|
||
| HTTP 客户端 | curl_cffi(浏览器指纹模拟) |
|
||
| 实时通信 | WebSocket |
|
||
| 并发 | asyncio Semaphore + ThreadPoolExecutor |
|
||
| 前端 | 原生 JavaScript(无框架) |
|
||
| 打包 | PyInstaller |
|
||
|
||
## API 端点
|
||
|
||
### 注册任务
|
||
|
||
| 方法 | 路径 | 说明 |
|
||
|------|------|------|
|
||
| POST | `/api/registration/start` | 启动单次注册 |
|
||
| POST | `/api/registration/batch` | 启动批量注册(支持 `concurrency`、`mode` 参数) |
|
||
| GET | `/api/registration/batch/{id}` | 批量任务状态 |
|
||
| POST | `/api/registration/batch/{id}/cancel` | 取消批量任务 |
|
||
| POST | `/api/registration/outlook-batch` | 启动 Outlook 批量注册 |
|
||
| GET | `/api/registration/outlook-batch/{id}` | Outlook 批量状态 |
|
||
| GET | `/api/registration/tasks` | 任务列表 |
|
||
| GET | `/api/registration/tasks/{uuid}` | 任务详情 |
|
||
| GET | `/api/registration/tasks/{uuid}/logs` | 任务日志 |
|
||
| POST | `/api/registration/tasks/{uuid}/cancel` | 取消任务 |
|
||
| DELETE | `/api/registration/tasks/{uuid}` | 删除任务 |
|
||
| GET | `/api/registration/available-services` | 可用邮箱服务 |
|
||
| GET | `/api/registration/outlook-accounts` | 可用 Outlook 账户 |
|
||
|
||
### 账号管理
|
||
|
||
| 方法 | 路径 | 说明 |
|
||
|------|------|------|
|
||
| GET | `/api/accounts` | 账号列表 |
|
||
| GET | `/api/accounts/{id}` | 账号详情 |
|
||
| 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/{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/payment/generate-link` | 生成 Plus/Team 支付链接 |
|
||
| POST | `/api/payment/open-incognito` | 后端无痕模式打开浏览器 |
|
||
| 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` | 添加服务 |
|
||
| GET | `/api/email-services/{id}` | 服务详情 |
|
||
| 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 | `/api/settings` | 获取所有设置 |
|
||
| POST | `/api/settings/proxy` | 更新代理设置 |
|
||
| POST | `/api/settings/dynamic-proxy` | 更新动态代理设置 |
|
||
| POST | `/api/settings/cpa` | 更新 CPA 设置 |
|
||
| POST | `/api/settings/cpa/test` | 测试 CPA 连接 |
|
||
| GET/POST | `/api/settings/team-manager` | Team Manager 设置 |
|
||
| POST | `/api/settings/team-manager/test` | 测试 Team Manager 连接 |
|
||
| GET | `/api/settings/database` | 数据库信息 |
|
||
|
||
### WebSocket
|
||
|
||
| 路径 | 说明 |
|
||
|------|------|
|
||
| `ws://host/api/ws/task/{uuid}` | 单任务实时日志 |
|
||
| `ws://host/api/ws/batch/{id}` | 批量任务实时状态与日志 |
|
||
|
||
## Docker 部署
|
||
|
||
### 环境要求
|
||
|
||
- Docker
|
||
- Docker Compose
|
||
|
||
### 快速部署
|
||
|
||
```bash
|
||
# 克隆项目
|
||
git clone https://github.com/cnlimiter/codex-register.git
|
||
cd codex-register
|
||
|
||
# 启动服务
|
||
docker-compose up -d
|
||
```
|
||
|
||
服务启动后访问 http://localhost:8000
|
||
|
||
### 配置说明
|
||
|
||
**端口映射**:默认 `8000` 端口,可在 `docker-compose.yml` 中修改。
|
||
|
||
**数据持久化**:
|
||
```yaml
|
||
volumes:
|
||
- ./data:/app/data
|
||
- ./logs:/app/logs
|
||
```
|
||
|
||
**代理配置**:
|
||
```yaml
|
||
environment:
|
||
- HTTP_PROXY=http://your-proxy:port
|
||
- HTTPS_PROXY=http://your-proxy:port
|
||
```
|
||
|
||
### 常用命令
|
||
|
||
```bash
|
||
# 查看日志
|
||
docker-compose logs -f
|
||
|
||
# 停止服务
|
||
docker-compose down
|
||
|
||
# 重新构建
|
||
docker-compose build --no-cache
|
||
```
|
||
|
||
## 注意事项
|
||
|
||
- 首次运行会自动创建 `data/` 目录和 SQLite 数据库
|
||
- 所有账号和设置数据存储在 `data/register.db`
|
||
- 日志文件写入 `logs/` 目录
|
||
- 代理设置优先级:动态代理 > 代理列表(随机) > 静态默认代理
|
||
- 注册时自动随机生成用户名和生日(年龄范围 18-45 岁)
|
||
- CPA 上传始终直连,不经过代理
|
||
- Team Manager 上传始终直连,不经过代理
|
||
- 支付链接生成使用账号 access_token 鉴权,走全局代理配置
|
||
- 无痕浏览器依次尝试 Chrome、Edge,未找到时返回失败提示
|
||
- 订阅状态自动检测调用 `chatgpt.com/backend-api/me`,走全局代理
|
||
- 批量注册并发数上限为 50,线程池大小已相应调整
|
||
|
||
## License
|
||
|
||
[MIT](LICENSE)
|