kyx236 6d3aa84af9 feat(telegram_bot): Add simplified team registration format with output options
- Add support for simplified team_reg callback format (team_reg:1, team_reg:3, team_reg:5)
- Implement direct count parsing from callback data without intermediate steps
- Add output method selection UI with JSON file and team.json options
- Add custom count input handler for flexible registration quantities (1-50)
- Improve user experience by reducing callback navigation steps
- Set user state flag for awaiting custom count input
2026-01-30 10:15:26 +08:00
2026-01-25 05:40:08 +08:00
2026-01-15 23:02:16 +08:00
5
2026-01-26 07:17:55 +08:00
2026-01-20 21:26:44 +08:00
2026-01-27 09:08:34 +08:00
2026-01-27 09:08:34 +08:00
2026-01-15 23:02:16 +08:00
2026-01-15 23:02:16 +08:00
2026-01-18 04:02:57 +08:00
2026-01-25 05:40:08 +08:00
2026-01-15 23:02:16 +08:00
2026-01-25 05:40:08 +08:00
2026-01-21 22:05:56 +08:00
2026-01-20 21:26:44 +08:00
2026-01-21 22:24:36 +08:00
2026-01-25 05:40:08 +08:00

🚀 OpenAI Team Auto Provisioner

OpenAI Team 账号自动批量注册 & 授权入库工具

Python DrissionPage License


功能特性

  • 🔄 全自动化流程 - 从邮箱创建到授权入库一键完成
  • 📧 多邮箱系统支持 - 支持 Cloud Mail 自建邮箱和 GPTMail 临时邮箱
  • 👥 Team 批量邀请 - 一次性邀请多个账号到 Team
  • 🌐 浏览器自动化 - 基于 DrissionPage 的智能注册
  • 🔐 多授权服务支持 - 支持 CRS / CPA / S2A 三种授权入库方式
  • 💾 断点续传 - 支持中断恢复,避免重复操作
  • 📊 状态追踪 - 详细的账号状态记录与追踪
  • 🌍 代理轮换 - 支持多代理配置和自动轮换
  • 🎭 浏览器指纹 - 随机浏览器指纹防检测

📋 前置要求

  • Python 3.12+
  • uv (推荐) 或 pip
  • Chrome 浏览器
  • 邮箱服务 API
  • 授权服务 API (CRS / CPA / S2A 任选其一)

🛠️ 快速开始

1. 安装依赖

# 使用 uv (推荐)
uv sync

# 或使用 pip
pip install -r requirements.txt

2. 配置文件

# 复制配置模板
cp config.toml.example config.toml
cp team.json.example team.json

3. 编辑配置

config.toml - 主配置文件

# ==================== 服务选择 ====================
# 邮箱系统: "cloudmail" (自建邮箱) 或 "gptmail" (临时邮箱)
email_provider = "gptmail"

# 授权服务: "crs" / "cpa" / "s2a"
auth_provider = "cpa"

# 是否将 Team Owner 也添加到授权服务入库
# - true: Owner 账号也会进行授权并入库 (需要 Owner 邮箱能接收验证码)
# - false: 仅处理邀请的成员账号Owner 不入库
include_team_owners = false

# ==================== 邮箱服务配置 ====================
# Cloud Mail 邮箱服务 (email_provider = "cloudmail" 时使用)
[email]
api_base = "https://your-email-service.com/api/public"
api_auth = "your-api-auth-token"
domains = ["domain1.com", "domain2.com"]
role = "gpt-team"
web_url = "https://your-email-service.com"

# GPTMail 临时邮箱 (email_provider = "gptmail" 时使用)
[gptmail]
api_base = "https://mail.chatgpt.org.uk"
api_key = "gpt-test"
prefix = ""        # 邮箱前缀,留空自动生成
domains = []       # 可用域名列表,留空使用默认

# ==================== 授权服务配置 ====================
# CRS 服务配置 (auth_provider = "crs" 时使用)
[crs]
api_base = "https://your-crs-service.com"
admin_token = "your-admin-token"

# CPA 服务 (auth_provider = "cpa" 时使用)
[cpa]
api_base = "http://your-cpa-service:8317"
admin_password = "your-admin-password"
poll_interval = 2       # 轮询间隔 (秒)
poll_max_retries = 30   # 最大重试次数
is_webui = true

# S2A 服务 (auth_provider = "s2a" 时使用)
[s2a]
api_base = "https://your-sub2api-service.com/api/v1"
admin_key = "your-admin-api-key"   # Admin API Key (推荐)
admin_token = ""                    # JWT Token (备选)
concurrency = 10                    # 账号并发数
priority = 50                       # 账号优先级
group_ids = []                      # 分组 ID 列表
group_names = ["codex"]             # 分组名称列表 (自动解析为 ID)

# ==================== 账号配置 ====================
[account]
default_password = "YourSecurePassword@2025"
accounts_per_team = 4

# ==================== 浏览器配置 ====================
[browser]
wait_timeout = 60
short_wait = 10
headless = false  # 无头模式

# ==================== 代理配置 (可选) ====================
proxy_enabled = false

# [[proxies]]
# type = "socks5"
# host = "127.0.0.1"
# port = 1080

# 更多配置项请参考 config.toml.example

team.json - Team 凭证配置

💡 通过访问 https://chatgpt.com/api/auth/session 获取(需先登录 ChatGPT

格式 1: 旧格式 (完整 Session)

[
  {
    "user": { "email": "team-admin@example.com" },
    "account": {
      "id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx",
      "organizationId": "org-xxxxxxxxxxxxxxxxxxxxxxxx"
    },
    "accessToken": "eyJhbGciOiJSUzI1NiIs..."
  }
]

⚠️ 注意: 格式 1 的 Team Owner 邮箱必须是自己可控的域名邮箱,才能接收验证码完成授权入库。如果是第三方邮箱(如 GmailOwner 账号无法入库,只能邀请成员账号。

格式 2: 新格式 (邮箱密码 + Token)

[
  {
    "account": "team-admin@example.com",
    "password": "your-password",
    "token": "eyJhbGciOiJSUzI1NiIs..."
  }
]

格式 3: 新格式 (仅邮箱密码,自动登录获取 Token)

[
  {
    "account": "team-admin@example.com",
    "password": "your-password"
  }
]

💡 格式 3 无需提供 Token程序会自动登录获取并保存到配置文件

三种格式的处理策略

格式 Owner 授权入库 成员邀请 Token 获取 适用场景
格式 1 ⚠️ 需自有域名邮箱 支持 手动提供 已有 SessionOwner 用第三方邮箱
格式 2 支持 支持 手动提供 已有 TokenOwner 可接收验证码
格式 3 支持 支持 自动登录 最简配置Owner 可接收验证码

详细说明:

  • 格式 1 (旧格式): 直接使用 ChatGPT SessionOwner 使用 OTP 验证码登录授权。如果 Owner 邮箱是 Gmail 等第三方邮箱,无法接收验证码,则 Owner 账号不会入库,仅邀请成员账号。

  • 格式 2 (新格式 + Token): 提供邮箱密码和 TokenOwner 使用密码登录进行授权。适合已经有 Token 且 Owner 邮箱可接收验证码的场景。

  • 格式 3 (新格式 无 Token): 仅提供邮箱密码,程序会先自动登录获取 Token 并保存,然后进行后续流程。最简单的配置方式,推荐使用。

4. 运行

# 运行所有 Team
uv run python run.py

# 单个 Team 模式
uv run python run.py single 0

# 测试模式 (仅创建邮箱和邀请)
uv run python run.py test

# 查看状态
uv run python run.py status

🔐 授权服务说明

本项目支持三种授权入库服务,通过 auth_provider 配置选择:

服务 说明 特点
CRS Claude Relay Service 需手动添加账号,支持 Token 管理
CPA Codex/Copilot Authorization 后台自动处理,轮询授权状态
S2A Sub2API 支持 OAuth 授权,自动入库,支持分组

CRS 配置

auth_provider = "crs"

[crs]
api_base = "https://your-crs-service.com"
admin_token = "your-admin-token"

CPA 配置

auth_provider = "cpa"

[cpa]
api_base = "http://your-cpa-service:8317"
admin_password = "your-admin-password"
poll_interval = 2
poll_max_retries = 30
is_webui = true

S2A 配置

auth_provider = "s2a"

[s2a]
api_base = "https://your-sub2api-service.com/api/v1"
# 认证方式二选一 (优先使用 admin_key)
admin_key = "your-admin-api-key"
admin_token = ""
# 账号配置
concurrency = 10
priority = 50
# 分组配置 (二选一)
group_ids = []
group_names = ["codex"]

📁 项目结构

oai-team-auto-provisioner/
│
├── 🚀 run.py                 # 主入口脚本
├── ⚙️  config.py              # 配置加载模块
│
├── 📧 email_service.py       # 邮箱服务 (创建用户、获取验证码)
├── 👥 team_service.py        # Team 服务 (邀请管理)
├── 🌐 browser_automation.py  # 浏览器自动化 (注册流程)
│
├── 🔐 授权服务模块
│   ├── crs_service.py        # CRS 服务
│   ├── cpa_service.py        # CPA 服务
│   └── s2a_service.py        # S2A (Sub2API) 服务
│
├── 🛠️  utils.py               # 工具函数 (CSV、状态追踪)
├── 📊 logger.py              # 日志模块
│
├── 📝 config.toml.example    # 配置模板
├── 🔑 team.json.example      # Team 凭证模板
│
├── 📂 logs/                  # 日志目录
│   └── app.log               # 运行日志 (自动轮转)
│
└── 📂 自动生成文件
    ├── accounts.csv          # 账号记录
    ├── team_tracker.json     # 状态追踪
    └── domain_blacklist.json # 域名黑名单

🔄 工作流程

整体流程图

                        ┌──────────────────────┐
                        │   🚀 python run.py   │
                        └──────────┬───────────┘
                                   │
                        ┌──────────▼───────────┐
                        │  📋 加载配置文件      │
                        │  config.toml         │
                        │  team.json           │
                        └──────────┬───────────┘
                                   │
                        ┌──────────▼───────────┐
                        │  🔐 验证授权服务连接  │
                        │  CRS / CPA / S2A     │
                        └──────────┬───────────┘
                                   │
     ┌─────────────────────────────┼─────────────────────────────┐
     │                             │                             │
     ▼                             ▼                             ▼
┌─────────────┐             ┌─────────────┐             ┌─────────────┐
│   格式 3    │             │   格式 2    │             │   格式 1    │
│ 仅邮箱密码  │             │邮箱密码+Token│            │ 完整Session │
└──────┬──────┘             └──────┬──────┘             └──────┬──────┘
       │                           │                           │
       ▼                           │                           │
┌─────────────┐                    │                           │
│ 🔑 浏览器   │                    │                           │
│ 自动登录    │                    │                           │
│ 获取Token   │                    │                           │
│ 同时授权    │                    │                           │
└──────┬──────┘                    │                           │
       │                           │                           │
       └───────────────────────────┼───────────────────────────┘
                                   │
                                   ▼
                    ┌───────────────────────────────┐
                    │      🔁 遍历每个 Team         │
                    └───────────────┬───────────────┘
                                    │
        ┌───────────────────────────▼───────────────────────────┐
        │                                       │
        │  📧 Step 1: 批量创建邮箱              │
        │     └─ Cloud Mail / GPTMail API      │
        │                                       │
        │  👥 Step 2: 批量邀请到 Team           │
        │     └─ ChatGPT API 邀请成员          │
        │                                       │
        │  ┌─────────────────────────────────┐  │
        │  │  🔁 遍历每个邮箱账号             │  │
        │  │                                 │  │
        │  │  🌐 Step 3: 浏览器自动注册      │  │
        │  │     └─ DrissionPage 自动化      │  │
        │  │     └─ 填写信息 + 邮箱验证码    │  │
        │  │                                 │  │
        │  │  🔐 Step 4: Codex 授权          │  │
        │  │     └─ 生成授权链接             │  │
        │  │     └─ 自动登录完成授权         │  │
        │  │                                 │  │
        │  │  💾 Step 5: 授权服务入库        │  │
        │  │     └─ CRS: 手动添加账号        │  │
        │  │     └─ CPA: 后台自动处理        │  │
        │  │     └─ S2A: OAuth 自动入库      │  │
        │  │                                 │  │
        │  └─────────────────────────────────┘  │
        │                                       │
        └───────────────────┬───────────────────┘
                            │
        ┌───────────────────▼───────────────────┐
        │  👑 处理 Team Owner (可选)            │
        │     └─ include_team_owners = true    │
        └───────────────────┬───────────────────┘
                            │
                ┌───────────▼───────────┐
                │   ✅ 完成 & 打印摘要   │
                │   📊 保存 CSV 记录     │
                └───────────────────────┘

状态流转

账号在处理过程中会经历以下状态:

invited → registered → authorized → completed
   │          │            │
   │          │            └─→ partial (入库失败)
   │          │
   │          └─→ auth_failed (授权失败)
   │
   └─→ register_failed (注册失败)
状态 说明 下一步操作
invited 已邀请到 Team 等待注册
registered 已完成注册 等待授权
authorized 已完成授权 等待入库
completed 全部完成
partial 授权成功但入库失败 重试入库
auth_failed 授权失败 重试授权
register_failed 注册失败 重试注册
team_owner Team Owner (格式1) OTP 验证码登录授权

💡 程序支持断点续传,中断后重新运行会自动从未完成的状态继续处理

三种格式的处理差异

阶段 格式 1 (完整Session) 格式 2 (邮箱密码+Token) 格式 3 (仅邮箱密码)
Token 获取 手动提供 accessToken 手动提供 token 自动登录获取
Owner 登录方式 OTP 验证码 密码登录 密码登录 (登录时同时授权)
Owner 授权 需自有域名邮箱收验证码 密码登录后授权 登录时已完成
成员处理 正常流程 正常流程 正常流程

📊 输出文件

文件 说明
accounts.csv 所有账号记录 (邮箱、密码、Team、状态、授权 ID)
team_tracker.json 每个 Team 的账号处理状态追踪
domain_blacklist.json 不可用的邮箱域名黑名单

🤝 相关项目

📧 邮箱服务

服务 说明 配置
Cloud Mail 自建邮箱系统 email_provider = "cloudmail"
GPTMail 临时邮箱服务 (API 文档) email_provider = "gptmail"

🔐 授权服务

服务 说明 配置
Claude Relay Service Token 管理服务 auth_provider = "crs"
CLIProxyAPI Codex 授权服务 auth_provider = "cpa"
Sub2API OAuth 授权入库 auth_provider = "s2a"

⚠️ 免责声明

本项目仅供学习和研究使用。使用者需自行承担使用风险,请遵守相关服务条款。


📄 License

MIT

Description
No description provided
Readme 417 KiB
Languages
Python 99.3%
Shell 0.7%