完整自动化流程:接收账号 → Codex登录 → 浏览器自动化 → 提取Token → 提交CRS系统
- API接口 - 接收邮箱密码并保存到数据库
- 自动登录 - 监听数据库,自动执行codex登录流程
- 浏览器自动化 - Playwright自动填写表单并完成OAuth认证
- Token提取 - 自动提取refresh_token并清理文件
- CRS集成 - 自动提交到CRS系统(带重试机制)
- 定时清理 - 每天凌晨0点自动清理已处理记录
pip install -r requirements.txt
playwright install chromium# 复制配置模板
copy .env.example .env
# 编辑.env文件,修改CRS系统地址和账号
notepad .env必须修改的配置:
WEB_AUTH_BASE_URL=http://your-server:port
WEB_AUTH_USERNAME=your-username
WEB_AUTH_PASSWORD=your-password详细配置说明见 INSTALL.md
python main.py普通页面:
http://localhost:8000/
- 📝 添加账号
- 📊 查看统计
管理后台:
http://localhost:8000/admin
需登录访问(默认账号:admin / admin123)
- 📊 查看统计
- 🔄 刷新CRS Token
- 🗑️ 清理已处理记录
POST http://localhost:8000/add_account
Content-Type: application/json
{
"email": "test@example.com",
"password": "yourpassword"
}说明:
- 邮箱不存在:新增账号
- 邮箱已存在:更新密码并重置为待处理状态
GET http://localhost:8000/stats
# 返回示例
{
"total": 10,
"pending": 3,
"success": 5,
"failed": 2,
"error": 0
}DELETE http://localhost:8000/cleanupGET http://localhost:8000/token/infoGET http://localhost:8000/health1. API接收账号 → 数据库(pending)
2. 处理器检测待处理账号
3. codex login → 获取OAuth URL
4. Playwright自动登录
├─ 填写邮箱 → 继续
├─ 填写密码 → 继续
└─ 确认授权 → 继续
5. 等待OAuth回调
6. 提取 ~/.codex/auth.json 中的 tokens.refresh_token
7. 清理文件(auth.json、log/、version.json)
8. 提交到CRS系统
├─ 获取CRS Token(自动登录/刷新)
├─ POST /admin/openai-accounts
└─ 失败重试3次,每次间隔3分钟
9. 更新数据库(success)
10. 关闭浏览器
- 邮箱存在自动更新密码并重置状态
- 状态跟踪:pending/success/failed/error
- 定时清理已处理记录(每天凌晨0点)
- Token自动登录和刷新
- 有效期管理(-1小时安全边界)
- 提交失败自动重试(3次,每次3分钟)
- 请求头自动添加Cookie认证
- Playwright无痕模式
- 多步骤登录流程
- 自动关闭残留进程
- 元素智能定位
- Ctrl+C第一次:等待当前任务完成
- Ctrl+C第二次:强制退出
- 空闲时立即退出
- 无账号时10秒检查一次
- 统计显示节流(60秒一次)
- 可中断的等待机制
CREATE TABLE accounts (
id INTEGER PRIMARY KEY AUTOINCREMENT,
email TEXT NOT NULL,
password TEXT NOT NULL,
status TEXT DEFAULT 'pending',
refresh_token TEXT,
created_at TEXT DEFAULT CURRENT_TIMESTAMP,
processed_at TEXT
);所有配置在 .env 文件中:
| 配置项 | 说明 | 默认值 |
|---|---|---|
CODEX_COMMAND |
codex命令路径 | codex |
API_PORT |
API端口 | 8000 |
WEB_AUTH_BASE_URL |
CRS系统地址 | - |
WEB_AUTH_USERNAME |
CRS用户名 | admin |
WEB_AUTH_PASSWORD |
CRS密码 | admin |
SUBMIT_MAX_RETRIES |
最大重试次数 | 3 |
SUBMIT_RETRY_DELAY |
重试间隔(秒) | 180 |
AUTO_CLEANUP_TIME |
清理时间 | 00:00 |
DEBUG_MODE |
调试模式 | False |
完整配置说明见 INSTALL.md
监听数据库中...
📊 待处理: 3 个账号
[1] test@example.com
处理账号: test@example.com
✓ 成功: rt_2BwmyhWM1y1djjNXqkZlp...
✓ 处理成功
[尝试 1/3] 提交到CRS系统...
[CRS] ✓ 提交成功: test@example.com
✓ 已提交到CRS系统
显示所有详细执行步骤、元素定位、URL变化等。
Q: 浏览器未自动填写?
A: 开启DEBUG_MODE查看详细日志,检查元素定位
Q: 提交CRS失败?
A: 检查.env中的CRS系统地址和账号,运行python test_token.py测试
Q: 如何禁用自动清理?
A: 修改.env中的ENABLE_AUTO_CLEANUP=False
Q: 修改配置后不生效?
A: 需要重启程序,.env只在启动时加载
Q: 如何查看处理进度?
A: 访问http://localhost:8000/stats
✅ 完全自动化,无需人工干预
✅ 智能Token管理,自动刷新
✅ 优雅退出机制,保证数据完整
✅ 配置与代码分离,便于部署
✅ 详细日志,便于排查问题
✅ 生产就绪,可直接使用
安装配置详见: INSTALL.md