自动批量注册 Outlook 邮箱 → 用它在 ChatGPT / Grok / Claude 上注册账号 → 导出可直登 cookie
reg-factory 是一套全自动注册流水线:先自注册 Outlook 邮箱,再用同一邮箱在
ChatGPT / Grok / Claude 上批量注册账号,并导出可直登的 cookie。底层用
比特浏览器(BitBrowser) 做指纹隔离、Clash Verge 做节点切换绕区域封锁与 Cloudflare 风控、
接码/打码平台过手机号与验证码。
⚠️ 仅供学习与授权测试使用。所有密钥通过环境变量提供,仓库内不含任何明文凭据。
http://127.0.0.1:54345)。9097,mihomo 内核默认 9090)。7897)。.env 的 CLASH_SECRET(见下)。pip install -r requirements.txt
playwright install chromium
复制模板并填写:
cp .env.example .env
.env 已被 .gitignore 忽略。真实的进程环境变量优先于 .env。
| 环境变量 | 说明 | 必填 |
|---|---|---|
CLASH_SECRET |
Clash Verge External Controller 的 secret | 走节点时必填 |
CLASH_API |
Clash 控制面地址(默认 http://127.0.0.1:9097) |
否 |
CLASH_PROXY |
Clash 混合端口代理(默认 http://127.0.0.1:7897) |
否 |
CLASH_GROUP |
切换出口的代理组名(默认 GLOBAL) |
否 |
BITBROWSER_API |
比特浏览器本地 API(默认 http://127.0.0.1:54345) |
否 |
SMS_TOKEN |
接码平台 firefox.fun 的 token | 需手机号时必填 |
HERO_SMS_API_KEY |
备用接码 hero-sms.com 的 api_key | 否 |
CAPSOLVER_API_KEY |
CapSolver 打码 key | 按需 |
EZCAPTCHA_API_KEY |
EZ-Captcha 打码 key | 按需 |
OUTLOOK_CARD |
闪客云邮箱卡密(接口批量取号用) | 用接口取号时填 |
OUTLOOK_PROXIES |
Outlook 自注册住宅代理池,user:pass@host:port,换行/逗号分隔 |
否 |
MAIL_* |
备用域名邮箱(一般用不到) | 否 |
Codex 订阅授权 / 标准 token 上传(按需启用,留空自动跳过)
| 环境变量 | 说明 | 必填 |
|---|---|---|
BAXI_API |
Codex/Plus 订阅地址(默认 https://baxigpt.com/) |
开通 Plus 时 |
BAXI_CARDS |
激活码池(BX-XXXXXXXX,逗号/换行分隔,可多个) |
开通 Plus 时 |
CLAUDE_SUB_URL / GROK_SUB_URL |
Claude / SuperGrok 订阅入口(CDK 激活流程 🔜 敬请期待) | 否 |
CLAUDE_SUB_CDK / GROK_SUB_CDK |
Claude / SuperGrok 激活码 CDK 池(预留) | 否 |
CPA_URL / CPA_MGMT_KEY |
CPA 管理接口(codex 授权文件导入) | 用 CPA 时 |
SUB2API_URL / SUB2API_EMAIL / SUB2API_PASSWORD |
SUB2API 管理接口登录 | 用 SUB2API 时 |
SUB2API_GROUP |
SUB2API 目标分组名(默认 codex,需后台先建好) |
否 |
WEBCHAT2API_URL / WEBCHAT2API_KEY |
webchat2api(Grok sso 注入) | 用 Grok 时 |
SMS_PROJECT_ID_OPENAI / HERO_SMS_SERVICE_OPENAI |
ChatGPT add-phone 接码服务号 | 自动接码时 |
python run_full_flow.py # 注册 1 个 outlook 号后在 claude 上注册
python run_full_flow.py --platforms claude chatgpt grok
python run_full_flow.py --skip-email --email a@outlook.com --password xxx
python run_full_flow.py --dry-run # 只打印将执行的命令
自动注入
HTTP(S)_PROXY与CLASH_API/SECRET/GROUP给子进程。
python register_three_platforms.py --from-pool
python register_three_platforms.py --email a@outlook.com --password xxx --token <refresh>
python register_three_platforms.py --loop # 常驻消费池
并行流水线模式下建议先起共享取码服务(避免三窗口并发登录同一邮箱):
python mailbox_broker.py --port 8765
python outlook_reg_loop.py # 循环
python outlook_reg_loop.py --count 20 # 注册 20 个后退出
python export_accounts.py # 全部平台
python export_accounts.py claude chatgpt # 指定平台
BitBrowser + Playwright,复用注册同款 PX 按压验证逻辑;按结果分类输出到
unlock_results/(unlocked_* 成功 / needs_phone_* 需短信 / failed_* 失败)。
打码 key 走环境变量 EZCAPTCHA_API_KEY。
python unlock_outlook.py # 自动找最新的 locked 文件
python unlock_outlook.py --input outlook_accounts/accounts.txt # 指定账号文件
python unlock_outlook.py --input emails_locked.txt --concurrency 2
python unlock_outlook.py --input accounts.txt --proxy-file proxies.txt
输入每行
email----password(可带额外字段)。解锁后再跑下面的 token 提取。
纯 requests 模拟 OAuth2 授权码流程(免浏览器),用账号密码换取
Microsoft Graph 的 refresh_token,输出 email----password----refresh_token----client_id,
结果存到 outlook_accounts/graph_tokens_<时间戳>.txt。
python extract_graph_tokens.py # 自动扫 unlock_results/,跳过已提取
python extract_graph_tokens.py outlook_accounts/accounts.txt # 指定账号文件
python extract_graph_tokens.py --email a@outlook.com --password xxx
python extract_graph_tokens.py accounts.txt --concurrency 10 # 并发数(默认 5)
走系统代理(Clash),避免
account.live.com限流;账号文件每行email----password----...。
python -m common.proxy_switch list # 列出 GLOBAL 组节点
python _clash_verge.py ping # 控制面连通性
注册拿到的是网页 session(无 refresh_token,下游中转易 401)。这一组流程把账号升级成
带 refresh_token 的正式凭据,并灌到下游中转(SUB2API / CPA)。
前置条件
register_chatgpt.py 注册过该账号,cookies/chatgpt/full_*.json 存在(②靠它重登)。.env 配好 SUB2API_URL/EMAIL/PASSWORD(②必需),可选 CPA_URL/CPA_MGMT_KEY(推 CPA)。典型一条龙
# 1) 没 Plus 先用激活码开通(已是 Plus 可跳过)
python activate_plus.py --email a@outlook.com --code BX-XXXXXXXX
# 2) Codex OAuth 授权 → 同时建到 SUB2API + 推 CPA(带真 refresh_token)
python oauth_codex.py --manual-phone --keep # 遇 add-phone 手动填号 + 输 WhatsApp 码
# 3) 可选:批量兜底上传(没走 OAuth 的旧 session,见 ③ 说明)
python upload_tokens.py chatgpt
纯 HTTP,无需浏览器。订阅地址与激活码走环境变量 BAXI_API / BAXI_CARDS。
python activate_plus.py --email a@outlook.com # 用激活码池 + 已存 session
python activate_plus.py --email a@outlook.com --code BX-XXXXXXXX
python activate_plus.py --at eyJ... --code BX-XXXXXXXX # 直接给 access_token
用已存 cookie 重登账号,走 Codex CLI OAuth 换取带 refresh_token 的正式凭据,同时建到
SUB2API(type=oauth)并推到 CPA。授权时若遇 OpenAI 的 add-phone 手机验证:
--manual-phone:手动模式,脚本停在输号页,由你在浏览器里自己填号 + 输验证码python oauth_codex.py # 默认最新 cookie,自动接码
python oauth_codex.py --manual-phone --keep # 手动填号 + 输 WhatsApp 码(推荐先用这个试号)
python oauth_codex.py --cookie cookies/chatgpt/full_xxx.json --skip-cpa
🔜 add-phone 全自动接码版本(WhatsApp 接码)后续提供。
注册脚本只把 token 落到 tokens/;上传单独触发,幂等(成功的 email 记账跳过)。
python upload_tokens.py # all(chatgpt + grok)
python upload_tokens.py chatgpt # 只传 ChatGPT(CPA + SUB2API)
python upload_tokens.py grok # 只传 Grok(webchat2api)
⚠️ ChatGPT 这条是 Path A(兜底):从网页 session 上传,无
refresh_token(CPA 用合成
id_token),下游过期不能续期。Codex 进 SUB2API/CPA 的正路是上面 ② 的oauth_codex.py(带真
refresh_token);本路径仅供没走 OAuth 的批量兜底。
订阅入口走环境变量 CLAUDE_SUB_URL(https://6661231.xyz/#/claude)、
GROK_SUB_URL(https://6661231.xyz/#/grok)。激活码 CDK 流程 + 授权到 SUB2API / CPA
敬请期待,CDK 池预留 CLAUDE_SUB_CDK / GROK_SUB_CDK。
多人协作速查:入口脚本在根目录,可复用基建在
common/。所有密钥走环境变量(config.py统一读取)。
入口脚本(根目录)
| 脚本 | 职责 |
|---|---|
run_full_flow.py |
端到端编排:注册邮箱 → 三平台注册 |
register_three_platforms.py |
三平台(Claude/ChatGPT/Grok)注册编排 |
register.py / register_chatgpt.py / register_grok.py |
各平台注册主流程 |
outlook_reg_loop.py / register_outlook_standalone.py |
Outlook 自注册养号 |
unlock_outlook.py / extract_graph_tokens.py |
Outlook 解锁 / 提取 Graph refresh_token |
activate_plus.py |
baxigpt 激活码开通 Plus / Codex 订阅 |
oauth_codex.py |
Codex OAuth → SUB2API + CPA(带 refresh_token,支持 --manual-phone) |
upload_tokens.py |
把 tokens/ 标准 token 上传到 CPA / SUB2API / webchat2api |
export_accounts.py |
导出已注册账号 cookie |
mailbox_broker.py |
共享取码服务(避免并发登录同一邮箱) |
可复用基建(common/)
| 模块 | 职责 |
|---|---|
browser.py |
BitBrowser 连接、stealth、React 受控输入 |
mailbox.py / emails.py |
邮箱取码(Graph/浏览器)、邮箱池管理 |
cookies.py |
平台 cookie 保存 |
sms.py |
参数化接码客户端(firefox.fun + hero-sms 兜底) |
oauth_codex.py |
Codex OAuth 授权驱动、add-phone 处理、SUB2API 调用 |
plus_baxi.py |
baxigpt 激活码验卡 / 提交 / 轮询 |
session_export.py |
登录态导出成 CPA / SUB2API 标准 token(对齐 FlowPilot) |
uploaders.py |
上传到 CPA / SUB2API / webchat2api |
proxy_switch.py |
Clash 节点切换 |
协作约定
.env.example),严禁明文进库。cookies/、tokens/、recordings/、*.log、截图等)均已 .gitignore。common/,对应的命令行入口放根目录,复用 config.py 读配置。| 路径 | 内容 |
|---|---|
emails.txt |
邮箱池(email----password----token----clientid),运行时生成 |
cookies/ |
注册成功导出的 cookie(full_*.json / sk_*.txt) |
_outlook_pool/ |
outlook_reg_loop 产出的待用号 |
tri_register_logs/ |
三平台注册日志 |
screenshots*/ |
调试截图 |
以上运行期数据均被 .gitignore 忽略,发布包内为空。
run_full_flow / register.py 的 --node auto)。register_grok.py 会用 curl_cffi 指纹mailbox_broker.py 共享取码(每号只登一次)。CLASH_SECRET 正确。1048143135(使用问题、避坑、更新通知)
谢谢老板打赏,您的打赏是我更新的动力!!!