自动批量注册 Outlook 邮箱 → 用它在 ChatGPT / Grok / Claude 上注册账号 → 导出可直登 cookie
reg-factory 是一套全自动注册流水线:先自注册 Outlook 邮箱,再用同一邮箱在 ChatGPT / Grok / Claude 上批量注册账号,并导出可直登的 cookie。底层用 比特浏览器(BitBrowser) 做指纹隔离、Clash Verge 做节点切换绕区域封锁与 Cloudflare 风控、 接码/打码平台过手机号与验证码。
⚠️ 仅供学习与授权测试使用。所有密钥通过环境变量提供,仓库内不含任何明文凭据。
- 安装并启动比特浏览器客户端,确保本地 API 在线(默认
http://127.0.0.1:54345)。 - 客户端要保持运行——脚本通过该 API 创建/打开/关闭浏览器窗口。
- 安装 Clash Verge 并导入你的机场订阅,选一个节点并开启「系统代理 / Tun 模式」。
- 注册 Grok 需要能过 Cloudflare 的干净节点;脚本会在订阅节点里自动逐个试探可用节点。
- 设置 → External Controller:开启外部控制器 API,并设置一个 secret。
- 记下控制面端口(Clash Verge 默认
9097,mihomo 内核默认9090)。 - 记下混合代理端口(mixed-port,默认
7897)。
- 记下控制面端口(Clash Verge 默认
- 把 secret 填进
.env的CLASH_SECRET(见下)。
- Python 3.10+。
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_* |
备用域名邮箱(一般用不到) | 否 |
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 8765python 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 # 控制面连通性| 路径 | 内容 |
|---|---|
emails.txt |
邮箱池(email----password----token----clientid),运行时生成 |
cookies/ |
注册成功导出的 cookie(full_*.json / sk_*.txt) |
_outlook_pool/ |
outlook_reg_loop 产出的待用号 |
tri_register_logs/ |
三平台注册日志 |
screenshots*/ |
调试截图 |
以上运行期数据均被 .gitignore 忽略,发布包内为空。
- claude 报 app-unavailable-in-region:claude.com 对本机 IP 区域封锁,需开 Clash 走干净
节点(
run_full_flow/register.py的--node auto)。 - grok 全页 Cloudflare 拦截:必须切 Clash 节点;
register_grok.py会用 curl_cffi 指纹 逐个试节点找能过的。 - 三窗口登录同一 outlook 报并发登录:用
mailbox_broker.py共享取码(每号只登一次)。 - 缺 secret 连不上 Clash 控制面:确认 External Controller 已开 API 且
CLASH_SECRET正确。
- 💬 QQ 交流群:
1048143135(使用问题、避坑、更新通知)
- 🐧 LinuxDO — A community for tech enthusiasts