chaos c5aeac6873 Update .env.example for Gmail IMAP setup
Reflect current GMAIL_USER/GMAIL_PASSWORD usage and keep optional CloudMail/grok2api vars.
2026-07-11 17:34:54 +08:00

grok_reg-protocol_cpa

基于 Chromium + DrissionPage + turnstilePatch 的免费 Grok 账号注册机。

本分支在原版注册机基础上新增了两点:

  1. Hotmail / Outlook 邮箱凭证池
    支持 邮箱----密码----ClientID----Token 四段格式读取与 XOAUTH2 IMAP 收验证码。
  2. 协议优先的 导出
    注册拿到 SSO 后,优先用 纯 HTTP Device Flow(curl_cffi + sso cookie)铸造 CPA 用的 xai-*.json;协议失败再回退原浏览器 consent 逻辑。

一条成功链路会产出两类凭证:

产物 用途 路径
SSO grok.com / grok2api Web 池 账本第三段 + 可选推远端池
OIDC(CPA xAI) 免费 Grok 4.5(Grok Build / cli-chat-proxy) cpa_auths/xai-<email>.json

硬约束:SSO ≠ OIDC。
免费 Grok 4.5 不能用账本里的 sso JWT 直接打 API;必须再走
accounts.x.ai device-auth 铸 OIDC,写成 CPA 的 type=xai 认证文件。
本仓库的协议路径正是用 SSO cookie 自动完成 这一步(无需再弹浏览器时优先走协议)。

本仓库自包含 OIDC/CPA 铸造代码(cpa_xai/):

路径 说明
cpa_xai/protocol_mint.py 新增:SSO → 纯 HTTP Device Flow(verify / approve / token)
cpa_xai/mint.py 协议优先,失败回退 mint_with_browser
cpa_xai/browser_confirm.py 原逻辑:有头 Chromium 完成 consent
cpa_export.py 注册成功 hook
scripts/backfill_cpa_xai_from_accounts.py 存量账号批量补 CPA
scripts/export_cpa_xai_from_grok_auth.py 从 ~/.grok/auth.json 导出

本版主要改动

1. Hotmail / Outlook:邮箱----密码----ClientID----Token

设置:

{
  "email_provider": "hotmail",
  "hotmail_accounts_file": "mail_credentials.txt",
  "hotmail_max_aliases_per_account": 5
}

凭证文件(可从模板复制):

cp mail_credentials.example.txt mail_credentials.txt

每行格式(四段,---- 分隔):

邮箱----密码----ClientID----Token
段 含义
邮箱 Hotmail / Outlook 主邮箱
密码 邮箱登录密码(注册机侧保留;IMAP 走 OAuth)
ClientID 微软应用(Azure AD 应用)Client ID
Token Microsoft OAuth2 refresh_token(XOAUTH2 IMAP 用)

示例:

your@hotmail.com----mailPassword----xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx----0.AXcA...refresh_token...

运行时行为摘要:

  • 默认先用原邮箱,后续用随机 plus alias(如 name+k8s2p9qa@domain)
  • 经 outlook.office365.com(可回退 imap-mail.outlook.com)XOAUTH2 IMAP 拉验证码
  • refresh_token 若轮换会自动回写 mail_credentials.txt
  • 成功 / 失败 / 占用中的 alias 会参与去重与 hotmail_max_aliases_per_account 计数

相关配置见 config.example.json 中 hotmail_* 注释键。

2. 协议 OIDC → CPA(失败回退浏览器)

注册成功拿到 sso cookie
        ↓
【优先】protocol_mint:curl_cffi + sso
   device/code → verify → approve → token 轮询
        ↓ 成功
  cpa_auths/xai-<email>.json   mint_method=protocol
        ↓ 失败
【回退】browser_confirm:有头 Chromium + turnstilePatch
   同一套 device-auth,页面点「允许」
        ↓
  cpa_auths/xai-<email>.json   mint_method=browser

实测协议路径约数秒级即可完成(含 probe);浏览器路径约 40–60s/号。

关键配置:

字段 默认 含义
cpa_prefer_protocol true 有 SSO 时先走纯 HTTP 协议 mint
cpa_protocol_only false true=协议失败也不回退浏览器(调试用)
cpa_protocol_poll_timeout_sec 90 协议路径 token 轮询超时
cpa_export_enabled true 注册成功后是否 mint OIDC
cpa_auth_dir ./cpa_auths 主导出目录
cpa_base_url https://cli-chat-proxy.grok.com/v1 免费 Build 必须此上游
cpa_headless false 回退浏览器时建议有头
cpa_force_standalone true 回退时独立 Chromium,不复用注册 tab
cpa_mint_cookie_inject true 回退时注入注册 cookie,尽量跳过二次登录

日志里可看到:

[cpa] mint try protocol (SSO HTTP device flow)
[cpa] protocol token ok ...
[cpa] mint protocol SUCCESS
[cpa] mint_method=protocol

协议失败时类似:

[cpa] mint protocol failed: ...
[cpa] mint fallback → browser
[cpa] mint_method=browser

整链示意

[邮箱 Hotmail/Outlook 或 CloudMail 等]
       ↓  注册 accounts.x.ai
 accounts_*.txt / accounts_cli.txt    email----password----sso
       ↓
 grok2api 池 (可选)                   SSO → Web 非 4.5 模型
       ↓
 OIDC mint(协议优先 → 浏览器回退)
       ↓
 cpa_auths/xai-email.json             【注册机主导出】
       ↓ (cpa_copy_to_hotload=true 时)
 CPA auth-dir 热加载                  【可选】
       ↓
 CLIProxyAPI :8317                    model=grok-4.5

环境

依赖 说明
macOS / Linux + 桌面 协议 mint 不需要浏览器;回退浏览器时需要 DISPLAY / 本机 GUI
uv + Python 3.13 本目录 pyproject.toml / uv.lock;可选 mise
chromium 仅注册 + 协议失败回退时需要
代理 xAI / accounts.x.ai 通常需要,如 http://127.0.0.1:7890
可选 本机 grok2api :8000、CLIProxyAPI(CPA) :8317
cd /path/to/grok_reg-protocol_cpa
uv sync
uv run python -c "from DrissionPage import Chromium; from curl_cffi import requests; print('OK')"

或用 mise:

mise install
mise run deps

配置

  1. 复制模板并编辑(模板内 "//…" 键是注释,加载时忽略):
cp config.example.json config.json
# 编辑:email_provider、proxy、hotmail_*、cpa_*
  1. 字段详解见 config.example.json 内注释键。

代理优先级

字段 作用
proxy 注册 Chromium + 邮箱等 HTTP
cpa_proxy OIDC mint(协议 HTTP + 回退浏览器 + probe)
cpa_proxy  >  proxy  >  环境变量 https_proxy/http_proxy

配置优先于 shell 里的 https_proxy,避免「config 写了 7890 却被环境变量盖掉」。

与 CPA 相关的关键项(摘要)

字段 含义 建议
cpa_export_enabled 注册成功后是否 mint OIDC true
cpa_prefer_protocol SSO 协议优先 true
cpa_protocol_only 仅协议、不回退浏览器 调试时 true,日常 false
cpa_auth_dir 主导出目录 ./cpa_auths
cpa_copy_to_hotload 是否复制到 CPA 热加载目录 可选,默认 false
cpa_hotload_dir CPA auth-dir 仅 copy 时需要
cpa_base_url 上游 API 根 必须 https://cli-chat-proxy.grok.com/v1
cpa_headless 回退浏览器是否无头 false
cpa_force_standalone 回退时独立浏览器 true
cpa_proxy mint 专用代理 如 http://127.0.0.1:7890
cpa_mint_required mint 失败是否整号失败 通常 false

CLI 与 GUI 都会在注册成功后读这些配置。GUI 下 CPA 导出会串行,避免多窗口抢焦点。

落盘约定

路径 是否必须 说明
mail_credentials.txt hotmail 模式必须 邮箱----密码----ClientID----Token
accounts_cli.txt / accounts_*.txt 是 主账本 email----password----sso
cpa_auths/xai-*.json 是(开 export 时) CPA 格式 OIDC 归档
CPA …/auths/xai-*.json 可选 热加载;由 cpa_copy_to_hotload 控制

命令:批量注册 + 认证

前置:

cd /path/to/grok_reg-protocol_cpa
# 代理建议写在 config.json 的 proxy / cpa_proxy
# 回退浏览器时需要桌面会话
export DISPLAY=${DISPLAY:-:0}

A. 新注册 N 个号(含 SSO + OIDC 导出)

# 再注册 1 个(推荐)
uv run python -u register_cli.py --extra 1 --threads 1

# 再注册 5 个
uv run python -u register_cli.py --extra 5 --threads 2

# GUI
uv run python grok_register_ttk.py
# 或 mise run gui / mise run register

成功时:

  1. 追加账本 email----password----sso
  2. 可选:推 grok2api
  3. 若 cpa_export_enabled:协议 mint(失败则浏览器)→ cpa_auths/xai-<email>.json
  4. 若 cpa_copy_to_hotload:再拷到 cpa_hotload_dir

B. 存量号补 CPA(只 mint,不重新注册)

账本需含 SSO(第三段)。协议优先,有 SSO 时通常无需弹浏览器:

uv run python -u scripts/backfill_cpa_xai_from_accounts.py \
  --accounts accounts_cli.txt \
  --limit 1 --probe --timeout 300

# 全量缺失号
uv run python -u scripts/backfill_cpa_xai_from_accounts.py \
  --limit 0 --probe --timeout 300 --sleep 3
参数 含义
--limit N 本次最多 N 个缺失号;0=全部
--email x@y 只处理指定邮箱
--out-dir 主导出目录
--cpa-dir 成功后复制到 CPA 热加载目录
--probe 检查是否列出 grok-4.5
--headless 回退浏览器时无头(不推荐)

C. 从 ~/.grok/auth.json 导出 CPA 文件

uv run python scripts/export_cpa_xai_from_grok_auth.py --out-dir ./cpa_auths

D. 手动导入 CPA 热加载

cp -a ./cpa_auths/xai-USER@domain.json "$CPA_AUTH_DIR"/
chmod 600 "$CPA_AUTH_DIR"/xai-USER@domain.json

E. 调用验证(免费 Grok 4.5)

KEY="<你的 CPA API KEY>"

curl -sS http://127.0.0.1:8317/v1/models -H "Authorization: Bearer $KEY" | head

curl -sS http://127.0.0.1:8317/v1/chat/completions \
  -H "Authorization: Bearer $KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "grok-4.5",
    "messages": [{"role":"user","content":"Reply with exactly OK"}],
    "stream": false
  }'

CLI 参数速查(register_cli.py)

参数 含义
--extra N 再新注册 N 个(推荐)
--count N 账号总数目标(含已有);已达标则退出
--threads N 并发 1–10
--accounts-file 账本路径

故障排查

现象 原因 / 处理
协议 sso invalid SSO 过期或无效;会回退浏览器;检查账本第三段
协议 verify/approve 失败 会话态变化 / 风控;看日志后自动回退浏览器
一直 authorization_pending 浏览器路径未完成 consent;需到「设备已授权」且 token 200
Cloudflare / Turnstile 回退浏览器时关 headless、开 turnstilePatch、检查代理
Hotmail 收不到码 检查四段凭证、ClientID/Token、IMAP 主机与 alias 计数
有 token 但无 grok-4.5 cpa_base_url 是否为 cli-chat-proxy
注册成功但无 cpa_auths cpa_export_enabled?看 cpa_auth_failed.txt

调试原则:以 token 端点返回 access_token + refresh_token 为准;probe 看 /v1/models 是否含 grok-4.5。


目录结构

grok_reg-protocol_cpa/
  register_cli.py              # CLI 批量注册
  grok_register_ttk.py         # 浏览器注册核心 + Hotmail 等
  cpa_export.py                # 成功 hook
  cpa_xai/
    protocol_mint.py           # SSO 纯 HTTP Device Flow(协议优先)
    mint.py                    # 协议 → 浏览器回退编排
    browser_confirm.py         # 原浏览器 consent
    oauth_device.py / schema.py / writer.py / probe.py ...
  scripts/
    backfill_cpa_xai_from_accounts.py
    export_cpa_xai_from_grok_auth.py
  config.example.json
  config.json                  # 本地实配(勿外泄)
  mail_credentials.example.txt # 邮箱----密码----ClientID----Token 模板
  mail_credentials.txt         # 本地邮箱池(勿提交)
  accounts_cli.txt             # 主账本
  cpa_auths/                   # xai-<email>.json(分享包勿带)
  turnstilePatch/
  pyproject.toml / uv.lock / mise.toml

cd grok_reg-protocol_cpa
uv sync
cp config.example.json config.json
cp mail_credentials.example.txt mail_credentials.txt
# 填 hotmail 四段凭证 + proxy,再运行
uv run python -u register_cli.py --extra 1

安全

  • config.json、mail_credentials.txt、账本、cpa_auths/*.json 含密码与 refresh_token,权限 600 / 勿提交 git / 勿塞进分享包
  • 免费 Build 有额度与风控;批量 mint 请控速(--sleep)

相关

  • CLIProxyAPI / CPA:自备;将 cpa_auths/xai-*.json 拷到 CPA auth-dir 即可
  • 免费 Grok 4.5 只走 Build OIDC + cli-chat-proxy,不是网页 SSO
S
Description
No description provided
Readme
1.3 MiB
0 Stars 1 Watchers 0 Forks
Languages
Python 90.4%
Shell 5.8%
JavaScript 2.3%
Batchfile 1.5%