[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"project-93222":3},{"id":4,"name":5,"fullName":6,"owner":7,"repo":5,"description":8,"homepage":9,"htmlUrl":9,"language":10,"languages":9,"totalLinesOfCode":9,"stars":11,"forks":12,"watchers":13,"openIssues":14,"contributorsCount":15,"subscribersCount":15,"size":15,"stars1d":15,"stars7d":16,"stars30d":17,"stars90d":15,"forks30d":15,"starsTrendScore":15,"compositeScore":18,"rankGlobal":9,"rankLanguage":9,"license":19,"archived":20,"fork":20,"defaultBranch":21,"hasWiki":22,"hasPages":20,"topics":23,"createdAt":9,"pushedAt":9,"updatedAt":24,"readmeContent":25,"aiSummary":26,"trendingCount":15,"starSnapshotCount":15,"syncStatus":27,"lastSyncTime":28,"discoverSource":29},93222,"grokRegister-cpa","Git-creat7\u002FgrokRegister-cpa","Git-creat7","Grok 自动注册机 — 注册成功后自动入库 CLIProxyAPI (CPA)：支持本地 auth 目录与远程 Management API 上传",null,"Python",350,124,108,1,0,89,199,76.29,"MIT License",false,"main",true,[],"2026-07-22 04:02:08","\u003Cdiv align=\"center\">\n\n[![Grok Register — 注册即入库 CLIProxyAPI](assets\u002Fbanner.png)](https:\u002F\u002Fgithub.com\u002FGit-creat7\u002FgrokRegister-cpa)\n\n批量注册 Grok 账号，注册成功后自动把 OAuth 凭证写入 [CLIProxyAPI (CPA)](https:\u002F\u002Fgithub.com\u002Frouter-for-me\u002FCLIProxyAPI)：支持本地 auth 目录热加载，也支持 Management API 远程上传。\n\n\u003Cp>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FGit-creat7\u002FgrokRegister-cpa\u002Fstargazers\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fstars\u002FGit-creat7\u002FgrokRegister-cpa?style=flat&logo=github\" alt=\"GitHub stars\">\u003C\u002Fa>\n  \u003Ca href=\"https:\u002F\u002Fgithub.com\u002FGit-creat7\u002FgrokRegister-cpa\u002Fnetwork\u002Fmembers\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fgithub\u002Fforks\u002FGit-creat7\u002FgrokRegister-cpa?style=flat&logo=github\" alt=\"GitHub forks\">\u003C\u002Fa>\n  \u003Ca href=\"LICENSE\">\u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FLicense-MIT-blue.svg\" alt=\"License: MIT\">\u003C\u002Fa>\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FPython-3.9%2B-3776AB.svg\" alt=\"Python 3.9+\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FInterface-GUI%20%2B%20CLI-success.svg\" alt=\"GUI + CLI\">\n  \u003Cimg src=\"https:\u002F\u002Fimg.shields.io\u002Fbadge\u002FOutput-CLIProxyAPI-orange.svg\" alt=\"CLIProxyAPI\">\n\u003C\u002Fp>\n\n\u003C\u002Fdiv>\n\n---\n\n> 仅用于自动化流程研究、测试环境验证和个人学习。请遵守目标网站服务条款、当地法律法规与第三方服务限制。\n\n## 核心流程\n\n```text\n打开注册页 → 创建临时邮箱 → 收验证码 → 填资料 \u002F 过人机验证\n   → 拿到 SSO cookie → 授权码流程换 OAuth token（带 referrer=grok-build）\n   → 本地写入 cpa_auth_dir  和\u002F或  POST 远程 CPA Management API\n   → CPA 热加载，立即可用\n```\n\n## 功能\n\n- 注册成功后自动入库 CPA（本地目录 \u002F 远程 Management API，可同时开）\n- GUI + CLI 两种运行方式（CLI 仍会打开浏览器完成注册页）\n- Chromium\u002FChrome 自动处理 Turnstile\n- DuckMail \u002F YYDS \u002F Cloudflare 临时邮箱\n- 注册后可选开启 NSFW\n- 页面卡住重试、验证码失败换邮箱、浏览器重启与内存清理\n- CLI：一次 `Ctrl+C` 安全停止，清理阶段不刷 traceback；再按一次强制中断\n\n## 环境要求\n\n- Python 3.9+\n- Google Chrome 或 Chromium\n- 可用的 [CLIProxyAPI](https:\u002F\u002Fgithub.com\u002Frouter-for-me\u002FCLIProxyAPI)\n- 能访问注册页、临时邮箱 API、`auth.x.ai` 的网络（授权码流程换 token 需要）\n\n## 安装\n\n```bash\ngit clone https:\u002F\u002Fgithub.com\u002FGit-creat7\u002FgrokRegister-cpa.git\ncd grokRegister-cpa\npip install -r requirements.txt\ncp config.example.json config.json\n```\n\n编辑 `config.json` 后运行。\n\n### Windows 一键启动\n\n1. 按 [DEPLOYMENT.md](DEPLOYMENT.md) 用 Python 3.13 创建 `.venv` 并安装依赖\n2. 双击 `start-gui.cmd` 开图形界面，或 `start-cli.cmd` 开命令行（输入 `start` 开始）\n\n## 配置\n\n| 配置项 | 说明 |\n| --- | --- |\n| `cpa_auto_add` | 是否开启 CPA 自动入库 |\n| `cpa_auth_dir` | 本地 CPA auth 目录；写入 `xai-\u003Cemail>.json`，可留空 |\n| `cpa_remote_url` | 远程 CPA 地址，如 `http:\u002F\u002F你的CPA地址:8317` |\n| `cpa_management_key` | 远程 CPA 管理密钥（`remote-management.secret-key` 明文） |\n| `email_provider` | `duckmail` \u002F `yyds` \u002F `cloudflare` |\n| `register_count` | 目标注册数量 |\n| `proxy` | 代理；换 token 的 OAuth 请求也走此代理 |\n| `enable_nsfw` | 注册后是否尝试开启 NSFW |\n| `cloudflare_api_base` | Cloudflare 临时邮箱 API 根地址 |\n| `cloudflare_api_key` | 默认匿名模式留空；admin 模式填 `ADMIN_PASSWORD` |\n| `cloudflare_auth_mode` | `none` \u002F `bearer` \u002F `x-api-key` \u002F `x-admin-auth` \u002F `query-key` |\n| `cloudflare_custom_auth` | Worker 全局密码（`PASSWORDS`），注入 `x-custom-auth` |\n| `cloudflare_path_*` | domains \u002F accounts \u002F token \u002F messages 路径 |\n| `defaultDomains` | Cloudflare 默认收信域名 |\n\n### Cloudflare 邮箱（默认匿名）\n\n```json\n{\n  \"email_provider\": \"cloudflare\",\n  \"cloudflare_api_base\": \"https:\u002F\u002F你的-worker-api-域名\",\n  \"cloudflare_api_key\": \"\",\n  \"cloudflare_auth_mode\": \"none\",\n  \"cloudflare_path_domains\": \"\u002Fapi\u002Fdomains\",\n  \"cloudflare_path_accounts\": \"\u002Fapi\u002Fnew_address\",\n  \"cloudflare_path_token\": \"\u002Fapi\u002Ftoken\",\n  \"cloudflare_path_messages\": \"\u002Fapi\u002Fmails\",\n  \"defaultDomains\": \"你的收信域名.com\"\n}\n```\n\n匿名创建失败（例如 Turnstile）时可改 admin 创建：\n\n```json\n{\n  \"cloudflare_api_key\": \"你的 ADMIN_PASSWORD\",\n  \"cloudflare_auth_mode\": \"x-admin-auth\",\n  \"cloudflare_path_accounts\": \"\u002Fadmin\u002Fnew_address\"\n}\n```\n\n调试创建接口：\n\n```bash\npython cf_mail_debug.py \\\n  --api-base \"https:\u002F\u002F你的-worker-api-域名\" \\\n  --auth-mode x-admin-auth \\\n  --api-key \"你的 ADMIN_PASSWORD\" \\\n  --create-path \u002Fadmin\u002Fnew_address \\\n  --domain \"你的收信域名.com\"\n```\n\nWorker 若配置了全局 `PASSWORDS`，再加：\n\n```json\n{ \"cloudflare_custom_auth\": \"你的全局访问密码\" }\n```\n\n## CPA 自动入库\n\nSSO 不是 CPA 凭据。程序会：\n\n1. 用 SSO 走授权码流程（`referrer=grok-build`）向 `auth.x.ai` 换 `access_token` \u002F `refresh_token`\n2. 组装 `type=xai` 扁平 auth（`cli-chat-proxy.grok.com`）\n3. 本地：`cpa_auth_dir` → `xai-\u003Cemail>.json`（CPA 热加载）\n4. 远程：`POST {cpa_remote_url}\u002Fv0\u002Fmanagement\u002Fauth-files?name=...`（需管理密钥）\n\n### 本地目录\n\n```json\n{\n  \"cpa_auto_add\": true,\n  \"cpa_auth_dir\": \"你的CPA auth目录\"\n}\n```\n\n`cpa_auth_dir` 填 CPA 实际监听的 auth 目录路径即可。\n\n### 远程 Management API\n\n```json\n{\n  \"cpa_auto_add\": true,\n  \"cpa_auth_dir\": \"\",\n  \"cpa_remote_url\": \"http:\u002F\u002F你的CPA地址:8317\",\n  \"cpa_management_key\": \"你的管理密钥明文\"\n}\n```\n\n要求 CPA：`remote-management.allow-remote` 按访问方式配置；密钥为配置里的明文（启动后配置文件可能被写成 bcrypt，上传仍用明文）。\n\n本地与远程可同时开启。日志前缀：`[CPA]`。\n\n### 独立转换\n\n已有 SSO 时可脱离注册流程：\n\n```bash\n# 写本地目录\npython sso_to_auth_json.py --sso sso_list.txt --cpa-auth-dir \u002Fpath\u002Fto\u002Fauths\n\n# 上传远程 CPA\npython sso_to_auth_json.py --sso sso_list.txt \\\n  --cpa-remote-url http:\u002F\u002F你的CPA地址:8317 \\\n  --cpa-management-key '你的管理密钥'\n\n# 单个 cookie + 代理\npython sso_to_auth_json.py --sso-cookie 'eyJ...' \\\n  --cpa-auth-dir .\u002Fauths \\\n  --proxy http:\u002F\u002F127.0.0.1:7890\n```\n\n`sso_list.txt`：一行一个 SSO，或 `邮箱----密码----sso`。\n\n### 为什么必须用授权码流程\n\n这是本项目区别于普通 SSO→token 脚本的关键，踩过坑后固化下来：\n\n- **SSO 不能直接喂给 CPA。** CPA 走 OAuth，需要 `access_token` \u002F `refresh_token`，SSO cookie 只是换 token 的入场券。\n- **必须带 `referrer=grok-build`。** xAI 后端要求 access_token 携带 `referrer=grok-build` claim，否则 grok build 通道（`cli-chat-proxy.grok.com`）拒绝，调用 chat 时报 `permission-denied \u002F Access to the chat endpoint is denied`。早期用 device flow 换的 token **不带**这个 claim，会全部失效。\n- **解法：授权码流程（Authorization Code + PKCE）。** 在 `\u002Foauth2\u002Fauthorize` 和 consent 提交两处注入 `referrer=grok-build`，换出的 token 才带此 claim。程序换完会自动校验，日志显示 `access_token 已带 referrer=grok-build`。\n- **base_url 必须是 `cli-chat-proxy.grok.com\u002Fv1`。** 写入的 auth 记录 `base_url` 指向 grok build 免费通道；若为空，CPA 会回退到计费通道 `api.x.ai\u002Fv1`，同样触发 `permission-denied`。\n\n如果 CPA 里已有旧的失效号（`base_url=api.x.ai\u002Fv1` 或 `referrer=None`），用本节的独立转换脚本以相同邮箱重新生成一遍覆盖即可（文件名按 `xai-\u003Cemail>.json` 命名，会原地覆盖）。\n\n## 运行\n\n### CLI\n\n```bash\npython grok_register_ttk.py cli\n```\n\n提示后输入 `start`。  \n`Ctrl+C` 一次：当前账号收尾后停止；清理浏览器时不会因二次中断刷 traceback。再按一次强制退出。\n\n### GUI\n\n```bash\npython grok_register_ttk.py\n```\n\n可在界面里改：邮箱服务商、代理、Cloudflare（API Base \u002F 鉴权 \u002F 收信域名 \u002F 全局密码）、CPA 开关、auth 目录、远程地址与管理密钥。点击「开始注册」时会写回 `config.json`。\n\n## 输出文件\n\n| 文件 | 内容 |\n| --- | --- |\n| `accounts_*.txt` | 邮箱、密码、SSO |\n| `mail_credentials.txt` | 临时邮箱凭证 |\n\n均含敏感信息，已在 `.gitignore` 中忽略。`config.json` 也不提交，请用 `config.example.json` 复制。\n\n## 稳定性\n\n- 每账号结束后重启浏览器\n- 每成功 5 个账号做一次内存清理\n- 邮箱提交后确认页面前进，避免空等验证码\n- 未收到验证码时换邮箱重试\n- 最终页卡住时重试当前账号\n\n## 常见问题\n\n**CPA 没出现新账号**  \n检查 `cpa_auto_add`、`cpa_auth_dir` 或 `cpa_remote_url` + `cpa_management_key`；看 `[CPA]` 日志是否换 token \u002F 上传成功；本机\u002F服务器能否访问 `auth.x.ai`。\n\n**远程上传失败**  \n确认 CPA 管理 API 已启用、密钥明文正确；远程访问需 `allow-remote: true`。可用：\n\n```bash\ncurl -H \"Authorization: Bearer \u003C管理密钥>\" \\\n  http:\u002F\u002F你的CPA地址:8317\u002Fv0\u002Fmanagement\u002Fauth-files\n```\n\n`cpa_remote_url` 填 CPA 实例根地址，不要附带 OpenAI 兼容接口的 `\u002Fv1`。程序会自动追加 `\u002Fv0\u002Fmanagement\u002Fauth-files`。\n\n**创建 Cloudflare 邮箱时 curl 超时**\n\n如果当前网络需要代理访问 `workers.dev`，请在 GUI 的“代理”字段或 `config.json` 的 `proxy` 中显式填写代理地址。不要只依赖终端的 `HTTP_PROXY` \u002F `HTTPS_PROXY`，从桌面启动 GUI 时可能不会继承这些环境变量。\n\n**开启 NSFW 时返回 403**\n\n设置出生日期可能被 `grok.com` 的 Cloudflare 防护拦截。该步骤失败不会影响账号保存和 CPA 入库；不需要敏感内容时可关闭“注册后开启 NSFW”。\n\n**CLI 为什么还开浏览器**  \nCLI 只是不启动 Tk；注册页、Turnstile、SSO 仍依赖真实浏览器。\n\n**NSFW 失败**  \n常见为 Cloudflare 拦截。账号仍会保存并入库 CPA。\n\n**国内服务器调模型超时**  \n入库成功只说明凭证到了 CPA；调用上游 `cli-chat-proxy.grok.com` 还需服务器出网可达（或配置 CPA `proxy-url`）。\n\n**CPA 返回 `503 auth_unavailable: no auth available`**  \n不是网络超时，而是 CPA 当前没有可用的 xAI auth。检查：auth 是否写入并被热加载、token 是否带 `referrer=grok-build`、账号是否 403 权限拒绝或 429 免费额度耗尽。free 号走 `cli-chat-proxy` 的 build 通道，额度与权限由上游控制，可能抖动。\n\n**chat 报 `permission-denied` \u002F Access to the chat endpoint is denied**  \ntoken 缺 `referrer=grok-build`，或 `base_url` 误指向 `api.x.ai`。用本仓库授权码流程重转覆盖对应 `xai-\u003Cemail>.json`。\n\n## 目录结构\n\n```text\n.\n├── grok_register_ttk.py      # 主程序（GUI \u002F CLI + CPA 入库）\n├── sso_to_auth_json.py       # SSO → CPA 转换（可独立运行）\n├── cf_mail_debug.py          # Cloudflare 邮箱调试\n├── config.example.json\n├── requirements.txt\n├── start-gui.cmd             # Windows 启动 GUI\n├── start-cli.cmd             # Windows 启动 CLI\n├── DEPLOYMENT.md             # 本机 \u002F Windows 部署\n├── tests\u002F\n└── assets\u002Fbanner.png\n```\n\n## Star History\n\n\u003Ca href=\"https:\u002F\u002Fwww.star-history.com\u002F?type=date&repos=Git-creat7%2FgrokRegister-cpa\">\n \u003Cpicture>\n   \u003Csource media=\"(prefers-color-scheme: dark)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fchart?repos=Git-creat7\u002FgrokRegister-cpa&type=date&theme=dark&legend=top-left&sealed_token=nLCws8QCmosQswlx1hTjASUcz8r72ZEKXOP1C8WmTFqosF65NL66q77qlMIbBZ6Kqic0cOqA5VisinVcERXNFlwMZqx0ET8872ALY3-k8rvCyvNqa-RxzMLV_oOrrAV54D0E6Pfv4WWTmaA6WYQBr2U5dizobLbasNLXpKTnZZJI7-uRL0zomGISzIGq\" \u002F>\n   \u003Csource media=\"(prefers-color-scheme: light)\" srcset=\"https:\u002F\u002Fapi.star-history.com\u002Fchart?repos=Git-creat7\u002FgrokRegister-cpa&type=date&legend=top-left&sealed_token=nLCws8QCmosQswlx1hTjASUcz8r72ZEKXOP1C8WmTFqosF65NL66q77qlMIbBZ6Kqic0cOqA5VisinVcERXNFlwMZqx0ET8872ALY3-k8rvCyvNqa-RxzMLV_oOrrAV54D0E6Pfv4WWTmaA6WYQBr2U5dizobLbasNLXpKTnZZJI7-uRL0zomGISzIGq\" \u002F>\n   \u003Cimg alt=\"Star History Chart\" src=\"https:\u002F\u002Fapi.star-history.com\u002Fchart?repos=Git-creat7\u002FgrokRegister-cpa&type=date&legend=top-left&sealed_token=nLCws8QCmosQswlx1hTjASUcz8r72ZEKXOP1C8WmTFqosF65NL66q77qlMIbBZ6Kqic0cOqA5VisinVcERXNFlwMZqx0ET8872ALY3-k8rvCyvNqa-RxzMLV_oOrrAV54D0E6Pfv4WWTmaA6WYQBr2U5dizobLbasNLXpKTnZZJI7-uRL0zomGISzIGq\" \u002F>\n \u003C\u002Fpicture>\n\u003C\u002Fa>\n\n## License\n\n[MIT](LICENSE)\n\n## Acknowledgments\n\nThanks to [linux.do](https:\u002F\u002Flinux.do) and [CLIProxyAPI](https:\u002F\u002Fgithub.com\u002Frouter-for-me\u002FCLIProxyAPI).\n","这是一个用于自动化注册 Grok 账号并将其 OAuth 凭证自动集成至 CLIProxyAPI（CPA）的工具。它支持通过 Chromium\u002FChrome 浏览器完成注册流程（含人机验证绕过）、临时邮箱（DuckMail\u002FYYDS\u002FCloudflare）管理、验证码自动提取，并将生成的凭证写入本地 CPA auth 目录或上传至远程 CPA Management API，实现热加载即用。项目提供 GUI 与 CLI 双接口，具备异常重试、浏览器资源清理、NSFW 开关等生产级健壮性设计。适用于需批量管理 Grok 账号凭证的测试环境、代理服务搭建或个人自动化工作流场景。",2,"2026-07-13 02:30:05","CREATED_QUERY"]