# reg-factory **Repository Path**: azhw/reg-factory ## Basic Information - **Project Name**: reg-factory - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-06-11 - **Last Updated**: 2026-06-11 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README
**三种拼图变体**(脚本按题目文本自动分派对应解法):
| sequence(逐环序列) | rotate(3D 朝向) |
|---|---|
|
|
|
| **character(小人踩格,最难)** | **wires(连线对图标)** |
|
|
|
**复盘图**(每轮落 `screenshots_github/REVIEW_rN.png`):候选拼成带编号网格,**粗红框 = 最终投票选择**,**彩色细框 = 各模型各自的投票**,底部黄字列出「模型:答案」,方便人工核对是谁选对/选错:
### 导出已注册账号 cookie(供直登扩展使用)
```bash
python export_accounts.py # 全部平台
python export_accounts.py claude chatgpt # 指定平台
```
### 批量解锁被锁的 Outlook 账号
BitBrowser + Playwright,复用注册同款 PX 按压验证逻辑;按结果分类输出到
`unlock_results/`(`unlocked_*` 成功 / `needs_phone_*` 需短信 / `failed_*` 失败)。
打码 key 走环境变量 `EZCAPTCHA_API_KEY`。
```bash
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 提取。
### 提取 Outlook 的 Graph OAuth refresh_token
纯 `requests` 模拟 OAuth2 授权码流程(免浏览器),用账号密码换取
Microsoft Graph 的 `refresh_token`,输出 `email----password----refresh_token----client_id`,
结果存到 `outlook_accounts/graph_tokens_<时间戳>.txt`。
```bash
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----...`。
### Clash 节点自检
```bash
python -m common.proxy_switch list # 列出 GLOBAL 组节点
python _clash_verge.py ping # 控制面连通性
```
---
---
## Gmail Android / Appium 本地注册包
Gmail Android 模块位于 `gmail_android/`。它用于在本机 BlueStacks + Appium 环境里驱动 Gmail Android 注册流程,并把 Android 环境安装脚本一起打包,方便后续作为 GitHub Release 附件分发。
安全边界:
- 默认停在手机/SMS/CAPTCHA 或 Google 额外安全验证页,由人工完成。
- `--resume-after-phone` 用于人工验证完成后续跑。
- `--accept-terms` 只在操作者明确同意 Google Privacy and Terms 后使用。
- `sms_provider.py` 只提供环境变量驱动的 provider 骨架,后续合并内部合规接码流程时复用;当前不默认接入 Gmail 安全验证自动化。
### GitHub Release 安装包
Release 上传建议:
```text
gmail-android-local-with-bluestacks.zip
```
包内结构:
```text
gmail_android/
gmail_register_local.py
appium_api.py
config.py
sms_provider.py
.env.example
requirements.txt
scripts/
install_all_windows.ps1
install_bluestacks.ps1
install_windows.ps1
start_appium.ps1
check_env.ps1
run_gmail_register.ps1
offline/
bluestacks/
BlueStacksInstaller_*.exe # 可选;推荐固定版本安装器
```
当前脚本支持 BlueStacks 直接安装版:把固定版本 BlueStacks 安装器放入 `gmail_android/offline/bluestacks/`,用户解压后运行:
```powershell
Set-ExecutionPolicy -Scope Process Bypass
cd gmail_android
.\scripts\install_all_windows.ps1
.\scripts\start_appium.ps1
.\scripts\check_env.ps1
```
注意:如果包内 BlueStacks 安装器是 web/micro installer,目标电脑仍需要联网下载 BlueStacks 组件。完全离线发布时,请替换为官方 full/offline installer 后再打包。
构建 GitHub Release zip:
```powershell
cd gmail_android
.\scripts\build_release.ps1
# 带固定版本 BlueStacks 安装器
.\scripts\build_release.ps1 -BlueStacksInstaller C:\path\to\BlueStacksInstaller.exe
```
上传到 GitHub Release:
1. 先运行上面的 `build_release.ps1`,生成 `gmail_android/dist/gmail-android-local.zip`。
2. 打开 GitHub 仓库页面,进入 `Releases` -> `Draft a new release`。
3. 新建 tag,例如 `gmail-android-v2026.06.06`。
4. 把 `gmail_android/dist/gmail-android-local.zip` 拖到 release 附件区域,然后发布。
也可以用 GitHub CLI 上传:
```powershell
cd E:\reg-factory
gh auth login
gh release create gmail-android-v2026.06.06 `
.\gmail_android\dist\gmail-android-local.zip `
--title "Gmail Android Local Package" `
--notes "Gmail Android/Appium local installer package."
# 如果 release 已经存在,改用 upload
gh release upload gmail-android-v2026.06.06 `
.\gmail_android\dist\gmail-android-local.zip `
--clobber
```
### Gmail Android 使用
复制环境模板:
```powershell
cd gmail_android
copy .env.example .env
```
关键变量也可写入仓库根目录 `.env`:
```env
APPIUM_SERVER=http://127.0.0.1:4723
ANDROID_DEVICE=127.0.0.1:5675
GMAIL_USERNAME_PREFIX=
ACCEPT_TERMS=0
SMS_PROJECT_ID_GMAIL=
HERO_SMS_SERVICE_GMAIL=
```
运行:
```powershell
# 默认跑到手机/安全验证处停住
python .\gmail_register_local.py
# 人工完成手机验证后续跑
python .\gmail_register_local.py --resume-after-phone
# 明确同意条款后,让脚本继续点击 I agree / ACCEPT 并进入 Gmail
python .\gmail_register_local.py --resume-after-phone --accept-terms
# 也可以让脚本等待人工手机验证完成后自动继续
python .\gmail_register_local.py --wait-phone-verification --accept-terms
```
## 5. Codex 订阅授权 & 标准 token 上传
注册拿到的是**网页 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)。
- 账号最好已是 **Plus**(否则 OAuth 能成,但无 Codex 额度)——没 Plus 先走 ①。
**典型一条龙**
```bash
# 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
```
### ① 用激活码开通 Plus / Codex 订阅(baxigpt.com)
纯 HTTP,无需浏览器。订阅地址与激活码走环境变量 `BAXI_API` / `BAXI_CARDS`。
```bash
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
```
### ② Codex OAuth 授权 → SUB2API + CPA(带 refresh_token)
用已存 cookie 重登账号,走 Codex CLI OAuth 换取**带 `refresh_token` 的正式凭据**,同时建到
SUB2API(type=oauth)并推到 CPA。授权时若遇 OpenAI 的 **add-phone** 手机验证:
- 默认走接码平台自动过号;
- `--manual-phone`:**手动模式**,脚本停在输号页,由你在浏览器里自己填号 + 输验证码
(**建议用 WhatsApp 可接码的号段**,OpenAI 对普通虚拟号风控严)。
```bash
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
注册脚本只把 token 落到 `tokens/`;上传单独触发,幂等(成功的 email 记账跳过)。
```bash
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 的批量兜底。
### ③.5 普通 ChatGPT 网页号 → chatgpt2api
普通网页号(非 codex/OAuth 三件套)单独走 chatgpt2api(basketikun/chatgpt2api)。注册成功时
顺手落 `tokens/chatgpt/c2a-*.json`;上传两种方式:
```bash
# 方式 A:注册时即时导入(推荐,需先配 CHATGPT2API_URL/KEY)
python register_chatgpt.py --count 5 --import-c2a
python run_full_flow.py --platforms chatgpt --import-c2a
# 方式 B:事后批量聚合上传 / 导出
python export_chatgpt2api.py --post https://
**谢谢老板打赏,您的打赏是我更新的动力!!!**