reg-factory 是一套全自动注册流水线:先自注册 Outlook 邮箱,再用同一邮箱在
ChatGPT / Grok / Claude 上批量注册账号,并导出可直登的 cookie。底层用
比特浏览器(BitBrowser) / AdsPower 做指纹隔离、Clash Verge 做节点切换绕区域封锁与 Cloudflare 风控、
接码/打码平台过手机号与验证码。
🔜 即将上新:Gmail 注册机 → Google One 授权 → SUB2API / CPA 导入完整链路。
⚠️ 仅供学习与授权测试使用。所有密钥通过环境变量提供,仓库内不含任何明文凭据。
1. 前置条件
① 指纹浏览器(二选一)
选项 A:BitBrowser(默认)
- 安装并启动比特浏览器客户端,确保本地 API 在线(默认
http://127.0.0.1:54345)。
.env 保持 FINGERPRINT_BROWSER=bitbrowser,或不填该项。
选项 B:AdsPower
- 安装并启动 AdsPower 客户端,开启 Local API(默认
http://127.0.0.1:50325)。
- 在
.env 设置 FINGERPRINT_BROWSER=adspower,并按本机 AdsPower 配置填写 ADSPOWER_API_KEY(启用鉴权时必填)。
客户端要保持运行——脚本通过本地 API 创建/打开/关闭浏览器窗口。
② Clash Verge(开启 API 权限)
- 安装 Clash Verge 并导入你的机场订阅,选一个节点并开启「系统代理 / Tun 模式」。
- 注册 Grok 需要能过 Cloudflare 的干净节点;脚本会在订阅节点里自动逐个试探可用节点。
- 设置 → External Controller:开启外部控制器 API,并设置一个 secret。
- 记下控制面端口(Clash Verge 默认
9097,mihomo 内核默认 9090)。
- 记下混合代理端口(mixed-port,默认
7897)。
- 把 secret 填进
.env 的 CLASH_SECRET(见下)。
③ Python
④ 注册 Gmail / 谷歌邮箱时的 Android 环境(按需)
- BlueStacks:用于运行 Gmail Android App,建议使用固定版本;Release 包可选择附带安装器。
- Android Studio 或 Android SDK Platform Tools:至少需要
adb 可用。只安装 platform-tools 也可以,不强制完整安装 Android Studio。
- Node.js 20+、Appium 2.x、Appium UiAutomator2 driver:用于驱动 Android UI 自动化。
- 模拟器内需要安装 Gmail App,并开启 BlueStacks ADB,默认连接地址为
127.0.0.1:5675。
- 相关脚本在
gmail_android/scripts/ 下;小体积 zip 只包含代码和安装脚本,不包含 BlueStacks / Android SDK / Node / Appium 等大二进制。
0. 图形界面 / 一键安装(推荐新手)
不想敲命令行?用自带的 Web 控制面板 + 一键安装脚本:
Windows
1. 双击 install.bat —— 自动建虚拟环境、装依赖、装 Playwright Chromium、生成 .env
2. 打开 BitBrowser/AdsPower 和 Clash Verge 客户端
3. 双击 start.bat —— 自动启动面板并打开浏览器(http://127.0.0.1:8799)
macOS / Linux
./install.sh # 同上:venv + 依赖 + 浏览器内核 + .env
./start.sh # 启动面板并打开浏览器
面板能做什么
- 顶部状态灯:指纹浏览器 / Clash 是否在线 + 当前节点(实时刷新)。
- 左侧按分类列出全部脚本(主流程 / 单平台注册 / 养号·邮箱 / 导出·上传),还有「外部工具」入口(如 Gmail 注册)。
- 点脚本 → 自动生成参数表单(勾选框 / 下拉 / 多选 / 输入框)→ 点「运行」→ 实时日志,可随时「停止」。
- ⚙️ 配置(.env) 页:分组填写所有密钥(密码框遮挡),每类带连通测试按钮——
Clash(验证控制器 + secret)、指纹浏览器、sms-man / firefox.fun 接码平台,一键看通不通。
指纹浏览器 provider 可在页面里用下拉框切换
bitbrowser / adspower。
- 仅监听
127.0.0.1,含密钥不暴露公网。
面板只是给现有命令行脚本套了个壳:拼好命令 → 起子进程 → 收实时输出,行为与下面的 CLI 完全一致。
想用命令行 / 进阶用法看下面各节。
2. 安装(命令行)
pip install -r requirements.txt
playwright install chromium
或直接用上面的一键安装脚本(install.bat / install.sh),等价于这两条 + 建 venv + 生成 .env。
3. 配置(密钥走环境变量)
复制模板并填写:
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) |
否 |
FINGERPRINT_BROWSER |
指纹浏览器 provider:bitbrowser / adspower(默认 bitbrowser) |
否 |
BITBROWSER_API |
比特浏览器本地 API(默认 http://127.0.0.1:54345) |
否 |
ADSPOWER_API |
AdsPower 本地 API(默认 http://127.0.0.1:50325) |
使用 AdsPower 时 |
ADSPOWER_API_KEY |
AdsPower Local API 鉴权 key(未启用鉴权可留空) |
否 |
ADSPOWER_GROUP_ID |
AdsPower 新建 profile 的分组 ID(默认 0) |
否 |
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 上传(按需启用,留空自动跳过)
| 环境变量 |
说明 |
必填 |
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 时 |
CHATGPT2API_URL / CHATGPT2API_KEY |
chatgpt2api 普通网页号导入(POST /api/accounts,Bearer admin key) |
用 --import-c2a 时 |
SMSMAN_TOKEN / SMSMAN_APP_ID_OPENAI |
sms-man.com 接码(Codex add-phone 主用,OpenAI 服务 id=2754) |
用 --codex 自动接码时 |
SMS_PROJECT_ID_OPENAI / HERO_SMS_SERVICE_OPENAI |
add-phone 回退接码服务号(firefox.fun / hero-sms) |
回退接码时 |
4. 运行
端到端(注册邮箱 → 三平台注册)
python run_full_flow.py # 注册 1 个 outlook 号后在 claude 上注册
python run_full_flow.py --platforms claude chatgpt grok
python run_full_flow.py --platforms chatgpt --import-c2a # chatgpt 注册成功后即时导入 chatgpt2api
python run_full_flow.py --platforms chatgpt --email-confirm-before-register # Outlook 注册页自动点确认后再填写
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 给子进程。
--import-c2a 逐层透传到 register_chatgpt.py,只对 chatgpt 平台生效,需先配 CHATGPT2API_URL/KEY。
--email-confirm-before-register 会在 Outlook 注册页打开后自动点击确认/同意类按钮,再开始填写。
仅三平台注册(已有邮箱池 emails.txt)
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
仅养号(持续自注册 Outlook,写入 _outlook_pool/ 与 emails.txt)
python outlook_reg_loop.py # 循环
python outlook_reg_loop.py --count 20 # 注册 20 个后退出
python outlook_reg_loop.py --confirm-before-register --max-press 10 --timeout 300
python register_outlook_standalone.py --count 5 --mode browser --confirm-before-register
Outlook 自注册成功后会立即提取 Microsoft Graph refresh_token;只有拿到 RT 的账号才写入 _outlook_pool/ 与 emails.txt。
emails.txt / outlook_accounts/accounts_*.txt 格式为 email----password----refresh_token----client_id。
GitHub 注册(含 Arkose 验证视觉求解)
python register_github.py --auto # 从 _outlook_pool 取邮箱,跑完整流程
python register_github.py --auto --email a@x.com --password xxx # 指定邮箱
python register_github.py # 探索模式:填到验证就停、保留窗口
GitHub 注册页是单页表单(邮箱/密码/用户名/国家),提交后是 Arkose FunCaptcha(octocaptcha 包裹)。
本项目用 agent-captcha 视觉投票求解器(common/agent_captcha.py)过验证,而非传统打码平台:
- 进拼图后按题目文本自动判变体:
sequence(4图标逐环序列)/ rotate(3D朝向匹配)/ character(小人踩格,最难,默认跳过换窗口)。
- 每轮把候选拼成一张大图、本地秒级增强(PIL,控体积避免传输超时),交 多个多模态模型并发投票(gemini-3.5-flash / gpt-5.5 / gemini-3.1-pro / claude-opus,多数表决),driver 据答案点箭头 + Submit。
- 复盘图落
screenshots_github/REVIEW_rN.png(红框=最终选择,彩框=各模型投票)。
- 网关/key 全走
.env(VISION_* / VOTE_* / IMAGE_EDIT_*,见 .env.example)。
说明:验证关已实测可过;GitHub 对批量 Outlook 邮箱有风控(提示 "This email can't be used"),建议配可用邮源。
验证出现时的页面(Create account 后跳 "Verify your account" + octocaptcha):
三种拼图变体(脚本按题目文本自动分派对应解法):
| sequence(逐环序列) |
rotate(3D 朝向) |
 |
 |
| character(小人踩格,最难) |
wires(连线对图标) |
 |
 |
复盘图(每轮落 screenshots_github/REVIEW_rN.png):候选拼成带编号网格,粗红框 = 最终投票选择,彩色细框 = 各模型各自的投票,底部黄字列出「模型:答案」,方便人工核对是谁选对/选错:
通用验证码求解库 vision_solver/(过 hCaptcha 等)
把上面 GitHub Arkose 的投票内核复制+泛化成独立库:用 CaptchaSpec(frame / 选择器 / prompt / 交互模式)描述任意一类验证码,不写死平台,多模型视觉投票求解,通用 driver 据答案驱动浏览器。
新增解新版 hCaptcha —— 实测发现现代 hCaptcha 把整个挑战渲染进单个 <canvas>(没有任何可点的 DOM tile),传统「枚举 tile 点击」无效。本库提供两种画布 driver:
canvas_grid(点击型):稳定截画布 → 按行列叠加编号网格(四边内缩对齐真实图块)→ 多模型投票 → 按像素坐标点 canvas → 提交。题干自动判单选(the item/thing)/ 卡片(card/different)/ 多选(select all)。
canvas_drag(拖拽型):多模型投票 FROM/TO 归一化坐标(取中位数抗离群)→ 鼠标分步带抖动拖放(模拟人手)→ 提交。
from vision_solver import solve, CaptchaSpec
# 验证码已在页面触发后:
spec = CaptchaSpec.from_json("vision_solver/presets/hcaptcha.json") # 点击型
ok = await solve(page, spec) # True=通过
# 对 hCaptcha 官方 demo 跑端到端 / 三 sitekey 鲁棒性跑分(复盘图落 screenshots_vision/)
python vision_solver/tests/test_hcaptcha_live.py
python vision_solver/tests/test_hcaptcha_robust.py 3
实测:点击型对 hCaptcha demo 三个测试 sitekey 各 3 轮 8/9 通过(修复空选卡死后全过);拖拽机制经本地合成 canvas 谜题验证 3/3(该 demo 不下发拖拽题)。投票网关/key 复用现有 VISION_* / VOTE_*(.env)。详见 vision_solver/README.md。
导出已注册账号 cookie(供直登扩展使用)
python export_accounts.py # 全部平台
python export_accounts.py claude chatgpt # 指定平台
批量解锁被锁的 Outlook 账号
指纹浏览器 + 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