AIAccountPoolX
基于 Tempmail.lol 临时邮箱和 IMAP 邮箱批量注册多平台账号(如 OpenAI Codex),集中管理账号池,并支持与 NEW API 对接同步 | IMAP-based batch signup, account pool & NEW API sync
Install / Use
/learn @asasugar/AIAccountPoolXREADME
AIAccountPoolX
OpenAI 账号注册与 Token 管理系统,提供 FastAPI 后端、Vue 3 控制台、实时日志、账号/Token 管理、NewAPI 同步、代理池和可选 AWS API Gateway IP 轮换能力。
⚠️ 免责声明:本项目仅供学习、研究和内部测试使用。请自行遵守相关平台条款和当地法律法规,不要用于违法或滥用场景。
功能特性
-
OpenAI 注册任务
- HTTP/OAuth 注册流程
- 支持单次注册和批量循环任务
- 支持并发控制、任务停止、统计重置
-
邮箱与验证码
- 支持普通 IMAP 邮箱
- 支持 Tempmail.lol 临时邮箱
- 内置 Tempmail.lol / QQ Mail / Outlook 预设
- Outlook 支持 OAuth2 IMAP 授权
- IMAP 自动生成邮箱别名并轮询验证码
- Tempmail.lol 通过 API 创建 inbox + token 拉取验证码
-
账号与 Token 管理
- Token 列表、搜索、导出、删除、批量删除
- Token 刷新、占用/释放
- 账号列表、详情、编辑、删除、统计
- 可建立账号与 Token 的邮箱关联
-
Web 控制台
- Vue 3 三栏面板
- WebSocket 实时日志
- 平台状态面板与任务控制
- 系统配置弹窗热更新
-
渠道同步
- 对接 NewAPI 渠道列表
- 一键同步 Token 到 NewAPI
- 测试、更新、删除已有渠道
-
代理与 IP 轮换
- 支持静态代理池、动态代理 API
- 轮询 / 随机 / 最少使用策略
- 可选 AWS API Gateway 多区域出口轮换
技术栈
| 层级 | 技术 | |------|------| | 后端 | FastAPI · Uvicorn · HTTPX · SQLAlchemy · WebSocket · IMAP | | 前端 | Vue 3 · TypeScript · Vite · Element Plus · Pinia · Tailwind CSS | | 工程 | pnpm workspace monorepo | | 存储 | SQLite |
项目结构
AIAccountPoolX/
├── package.json
├── pnpm-workspace.yaml
├── docs/
│ └── screenshots/ # 无头浏览器生成的界面截图
├── packages/
│ ├── backend/
│ │ ├── app/
│ │ │ ├── main.py # FastAPI 入口
│ │ │ ├── engine.py # 平台引擎注册
│ │ │ ├── api/ # REST / WebSocket 路由
│ │ │ ├── services/ # 业务服务层
│ │ │ ├── platforms/openai/ # OpenAI 注册实现
│ │ │ ├── platforms/openai/constants.py
│ │ │ ├── platforms/openai/http_helpers.py
│ │ │ ├── email_utils/ # 邮箱地址/IMAP/Tempmail
│ │ │ ├── db_models.py # SQLAlchemy 模型
│ │ │ ├── db_runtime.py # 数据库运行时与会话
│ │ │ ├── database.py # 兼容导出层
│ │ │ ├── config_utils.py # 配置归一化与路径处理
│ │ │ ├── token_manager.py # Token 管理
│ │ │ ├── token_manager_helpers.py
│ │ │ ├── proxy_pool.py # 代理池
│ │ │ ├── proxy_pool_helpers.py
│ │ │ └── aws_gateway.py # AWS API Gateway 轮换
│ │ ├── config.example.json # 安全示例配置
│ │ ├── requirements.txt
│ │ └── setup_outlook_oauth.py # Outlook OAuth 授权脚本
│ └── frontend/
│ ├── src/components/ # Sidebar / TokenPanel / ConfigDialog / LogViewer
│ ├── src/stores/ # Pinia store
│ ├── src/api/ # Axios API 封装
│ └── vite.config.ts
└── README.md # 文档
快速开始
环境要求
- Node.js 18+
- pnpm 8+
- Python 3.10+
安装依赖
pnpm install:all
如果你想分步执行:
pnpm install:frontend
pnpm install:backend
说明:
pnpm install:frontend会在仓库根目录安装整个 workspace 的 Node.js 依赖,其中已经包含前端包依赖,所以不需要单独进入packages/frontendpnpm install:backend会安装 Python 后端依赖pnpm install:all会依次完成前后端依赖安装
本地配置
仓库不再保留任何可直接使用的真实凭证。
- 示例配置:
packages/backend/config.example.json - 本地配置文件:
packages/backend/config.json config.json不再随仓库提交,缺失时后端会使用默认配置启动
推荐方式:
- 复制示例文件并填写你自己的值。
- 或直接启动项目后在 Web UI 的“系统配置”中保存,系统会自动生成本地
config.json。
cp packages/backend/config.example.json packages/backend/config.json
需要开发者自行填写、不要提交到仓库的字段包括:
imap_userimap_passproxy_poolproxy_apinewapi_base_urlnewapi_tokennewapi_user_idaws_access_key_idaws_secret_access_keyoutlook_client_idoutlook_refresh_token
启动开发环境
pnpm dev
或分别启动:
pnpm dev:backend
pnpm dev:frontend
默认地址:
- 前端:
http://localhost:3000 - 后端:
http://localhost:1455
Docker Compose 一键部署(生产)
前置要求
- Docker 24+
- Docker Compose v2(命令为
docker compose) - 建议启用 BuildKit(用于加速前端依赖层缓存)
启动
在仓库根目录执行:
docker compose up -d --build
启动后默认地址:
- 前端(Nginx):
http://localhost - 后端 API:
http://localhost:1455
停止
docker compose down
如需同时删除持久化数据卷:
docker compose down -v
生产部署说明
frontend使用多阶段构建,产物由 Nginx 提供静态服务/api与/auth由 Nginx 反向代理到backend:1455- 后端配置文件路径通过环境变量
AIACCOUNTPOOLX_CONFIG_PATH指向容器内/app/runtime/config.json - 持久化卷:
backend-runtime:保存config.jsonbackend-data:保存业务数据(如 SQLite 数据)backend-logs:保存日志
- 两个服务都配置了
restart: unless-stopped,异常退出会自动重启
健康检查
- 后端:探测
GET /api/health - 前端:探测 Nginx 首页可访问性
查看健康状态:
docker compose ps
界面截图
控制台总览

任务控制区域

系统配置弹窗

配置说明
邮箱配置
系统通过 email_presets 管理多套邮箱配置,active_email_preset 决定当前生效预设。
预设类型说明:
Tempmail.lol:使用tempmail_base_url(默认https://api.tempmail.lol/v2)QQ Mail/Outlook:使用 IMAP 参数domain、imap_host、imap_port、imap_user、imap_pass
说明:
tempmail_base_url仅存在于Tempmail.lol预设内- 顶层不维护
email_type/tempmail_base_url email_prefix仅在 IMAP 邮箱别名生成时使用
参考指南:
- QQ 邮箱 + Cloudflare 邮件路由配置指南:https://blog.cinb1314.online/other/qq-imap-cloudflare.html
NewAPI 配置
如需启用 Token 同步到 NewAPI,需要填写:
newapi_base_urlnewapi_tokennewapi_user_id
同步状态字段如 newapi_sync_last_at、newapi_sync_status 由系统自动维护,不需要手工填写。
代理配置
支持两类入口(统一走代理池):
proxy_pool:静态代理列表proxy_api:动态代理 APIproxy:历史字段,已废弃(即使在旧config.json中存在也会被忽略)
配合以下字段控制策略:
proxy_selection_strategyproxy_refresh_intervalproxy_max_usesproxy_auto_switch
配置生效说明:
- 通过 Web UI「系统配置」保存,或调用
PUT /api/config更新时,后端会立即刷新proxy_pool,无需重启服务。 - 如果你是直接手动修改
packages/backend/config.json,运行中的进程不会自动重载;需要重启后端服务(Docker 场景下重启 backend 容器)后才会生效。
AWS API Gateway 轮换
如需使用 AWS 出口轮换,需要填写:
aws_access_key_idaws_secret_access_keyaws_regions
未配置时该能力自动关闭。
参考指南:
- AWS IP 轮换配置参考:https://blog.cinb1314.online/other/aws-ip-rotation.html
Outlook OAuth
Outlook IMAP OAuth2 需要先填写 outlook_client_id,然后执行:
cd packages/backend
python setup_outlook_oauth.py
脚本会引导获取并写入本地 outlook_refresh_token。
参考指南:
- Outlook OAuth2 IMAP 配置指南:https://blog.cinb1314.online/other/outlook-oauth2-imap.html
常用命令
pnpm install:frontend
pnpm install:backend
pnpm install:all
pnpm dev
pnpm dev:backend
pnpm dev:frontend
pnpm build
pnpm kill:all
根目录脚本说明:
pnpm dev:并行启动前后端pnpm dev:frontend:仅启动前端开发服务器pnpm dev:backend:仅启动后端开发服务器pnpm build:构建前端产物pnpm kill:backend:清理 1455 端口pnpm kill:frontend:清理 3000 端口pnpm kill:all:同时清理前后端端口
API 概览
平台与任务
| 方法 | 路径 | 说明 |
|------|------|------|
| GET | /api/platforms | 平台列表 |
| GET | /api/platforms/{platform_id} | 平台状态 |
| GET | /api/platforms/{platform_id}/config-fields | 平台配置字段 |
| POST | /api/task/start?platform=openai | 启动任务 |
| POST | /api/task/stop?platform=openai | 停止任务 |
| GET | /api/task/status?platform=openai | 任务状态 |
| POST | /api/task/reset?platform=openai | 重置统计 |
| POST | /api/task/register-once | 单次注册 |
| GET | /api/task/proxy-pool/stats | 代理池统计 |
Token
| 方法 | 路径 | 说明 |
|------|------|------|
| GET | /api/tokens | Token 列表 |
| POST | /api/tokens/batch-delete | 批量删除 Token |
| DELETE | /api/tokens/{token_id} | 删除 Token |
| GET | /api/tokens/export | 导出 Token |
| POST | /api/tokens/acquire | 获取可用 Token |
| POST | /api/tokens/release | 释放 Token |
| GET | /api/tokens/stats | Token 使用统计 |
| POST | /api/tokens/{token_id}/refresh | 刷新 Token |
账号与日志
| 方法 | 路径 | 说明 |
|------|------|------|
| GET | /api/accounts | 账号列表 |
| GET | /api/accounts/{id} | 账号详情 |
| GET | /api/accounts/{id}/token | 获取关联 Token |
| POST | /api/accounts | 创建账号 |
| PUT | /api/accounts/{id} | 更新账号 |
| DELETE | /api/accounts/{id} | 删除账号 |
| GET | /api/accounts/stats/summary | 账号统计 |
| GET | /api/logs | 任务日志 |
| GET | /api/logs/stats | 日志统计 |
| GET | /api/logs/today | 今日统计 |
| WS | /api/ws/logs | 实时日志流 |
配置与 NewAPI
| 方法 | 路径 | 说明 |
|------|------|------|
| GET | /api/config | 获取当前配置 |
| PUT | /api/config | 更新配置 |
| GET | /api/newapi/channels | 获取渠道列表 |
| GET | /api/newapi/channel/test/{channel_id} | 测试渠道 |
| DELETE | /api/newapi/channel/{channel_id} | 删除渠道 |
| POST | /api/newapi/channel/batch | 批量删除渠道 |
| PUT | /api/newapi/channel | 更新渠道 |
| GET | /api/newapi/sync-status | 获取同步状态 |
| POST | /api/newapi/sync | 一键同步到 NewAPI |
安全建议
- 不要提交
packages/backend/config.json - 不要提交
packages/backend/data/、packages/backend/logs/ - 不要在 README、脚本或截图中保留真实邮箱、授权码、Access Key、refresh token、服务地址或内网代理
- 如果仓库历史里已经提交过敏感值,请尽快轮换对应凭证
扩展平台
后端采用平台注册表模式。新增平台时:
- 在
packages/backend/app/platforms/下新增目录。 - 实现继承
BaseEngine的引擎类。 - 在
packages/backend/app/engine.py注册到registry。
License
本项目采用 MIT License。
