Grok 免费号 注册 → OAuth → CPA / Grok2API 产物,主入口为 本机 WebUI(Go 单二进制 + 嵌入 SPA)。
本仓库与上游
本仓库 keh4l/Grok-Register-WebUI(WebUI 优先) 原上游 Charles-0509/Grok-Register(协议注册 / 清障 / Turnstile 等核心) 本 fork 在上游能力之上,将控制面改为 WebUI,并增加 Grok2API 三池上传、无限注册、登录页、tempmail 动态代理、进程重启等。
部署教程: docs/DEPLOY.md
grok # 启动 WebUI(默认 http://127.0.0.1:8787)
# 浏览器:登录(若配置 WEB_TOKEN)→ 目标/无限注册 → 开始/停止 → 日志/产物配置在 ~/.grok/config.env(也可在 WebUI「配置中心」编辑)。
| 特性 | 说明 |
|---|---|
| WebUI 主入口 | 无参运行即起控制台;登录页、仪表盘、日志、运行记录、配置、系统 |
| 无限注册 | 目标 0 / UI 开关,直到点停止 |
| Grok2API 三池上传 | Web + Console(SSO)+ Build(CPA JSON);自动上传与 401 重登 |
| CPA Management 上传 | 自动/手动上传 CPA JSON |
| Tempmail 动态代理 | off / on_429 / always,支持 HTTP 与 SOCKS5 |
| 协议优先 + TLS 指纹 | Go tls-client(默认 chrome_131);CLEARANCE_MODE=auto |
| Turnstile 屏外有头 | 默认 TURNSTILE_MODE=offscreen |
| 一键安装 | Linux/macOS;WARP 清障可选 |
| 进程重启 | 系统页可重启 Worker / WebUI |
协议腿 gRPC 发/验码 → Server Action → SSO hop → OAuth → 探活/CPA
边缘腿 chrome_131 TLS 优先 → CF 拦再 clearance(auto)
挑战腿 Turnstile 仅 Chromium(offscreen 池 / one-shot)
控制面 WebUI (SPA) ↔ /api/* ↔ 后台注册任务
冒烟(不注册账号):
go run scripts/smoke_protocol.go
REGISTER_PROXY=http://127.0.0.1:7890 go run scripts/smoke_protocol.goscripts/install.sh 自动识别平台:
| 平台 | 前提 | 默认安装位置 |
|---|---|---|
| Linux(Debian/Ubuntu) | root / sudo | 源码 /opt/Grok-Register;数据优先 SUDO_USER 的 ~/.grok(非 /root) |
| macOS | 已装 Homebrew + Docker Desktop(缺则提示安装命令后退出) | ~/Grok-Register,数据 ~/.grok,二进制 ~/.local/bin |
会拉源码、编译嵌入 SPA 的二进制、装 Playwright/CloakBrowser、起 clearance,并写入分区中文注释的 config.env(与 config.env.example 同模板)。
有真实 TTY 时会依次提示:
- 命令名 / 源码目录 / 数据目录 / 二进制 / venv
- 是否启用 WARP 清障栈?
[Y]- Y(默认):起 Docker 清障,
REGISTER_PROXY=http://127.0.0.1:40080 - N:不装清障;再问 本机 HTTP 代理端口
- 输入如
7890→REGISTER_PROXY=http://127.0.0.1:7890,CLEARANCE_ENABLED=0 - 直接回车 → 直连(无代理,适合能访问 x.ai 的境外 VPS)
- 输入如
- Y(默认):起 Docker 清障,
- (WARP 时)运行结束后是否自动关闭清障容器?
[Y]- Y(默认):
CLEARANCE_AUTO_STOP=1,任务结束/中断后docker compose stop - N:容器常开;启动任务时仍会检测并自动拉起未运行的栈
- Y(默认):
无 TTY 的 curl|sudo bash 可能无法提问,此时:
# WARP 清障(默认)
curl -fsSL .../install.sh | sudo bash -s -- --with-warp
# 本机 Clash 等代理
curl -fsSL .../install.sh | sudo bash -s -- --no-warp --proxy-port 7890
# 境外 VPS 直连
curl -fsSL .../install.sh | sudo bash -s -- --no-warp
# 强制全默认(WARP)
curl -fsSL .../install.sh | sudo NONINTERACTIVE=1 bashcurl -fsSL https://raw.githubusercontent.com/keh4l/Grok-Register-WebUI/main/scripts/install.sh | sudo bash| 项 | 默认 |
|---|---|
| 二进制 | /usr/local/bin/grok |
| 源码 | /opt/Grok-Register(软链 /opt/Grok-Reg) |
| 数据 | sudo 时为 /home/<SUDO_USER>/.grok,纯 root 为 /root/.grok |
| Python | /opt/cloakbrowser-venv/bin/python |
| mint | `/usr/local/share/grok-reg/turnstile_{mintGrok-Register/main/scripts/install.sh |
| 项 | 默认 |
|----|------|
| 二进制 | `/usr/local/bin/grok` |
| 源码 | `/opt/Grok-Register`(软链 `/opt/Grok-Reg`) |
| 数据 | `sudo` 时为 **`/home/<SUDO_USER>/.grok`**,纯 root 为 `/root/.grok` |
| Python | `/opt/cloakbrowser-venv/bin/python` |
| mint | `/usr/local/share/grok-reg/turnstile_{mint,pool}.py` |
| WebUI | `http://127.0.0.1:8787` |
### macOS 一行
**先**确认:
```bash
# 1) Homebrew — 若无:
# /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
# 2) Docker Desktop — 若无:
# brew install --cask docker
# 打开 Docker 应用,等引擎就绪: docker info
然后(不要 sudo):
curl -fsSL https://raw.githubusercontent.com/keh4l/Grok-Register-WebUI/main/scripts/install.sh | bash| 项 | 默认 |
|---|---|
| 二进制 | ~/.local/bin/grok |
| 源码 | ~/Grok-Register |
| 数据 | ~/.grok |
| Python | ~/.local/share/cloakbrowser-venv/bin/python |
| mint | ~/.local/share/grok-reg/turnstile_{mint,pool}.py |
| 环境 | 写入 ~/.zprofile / ~/.zshrc |
| WebUI | http://127.0.0.1:8787 |
缺 brew 或 Docker 时脚本会打印安装命令并退出,装好后重跑同一行即可。
# Linux:改命令名
curl -fsSL .../install.sh | sudo bash -s -- --command grok-reg
# Linux:自定义目录
curl -fsSL .../install.sh | sudo bash -s -- \
--install-dir /data/Grok-Register --home /data/grok-data
# macOS:改命令名 / 把二进制装到 brew 前缀
curl -fsSL .../install.sh | bash -s -- --command grok-reg
curl -fsSL .../install.sh | bash -s -- --bin-dir "$(brew --prefix)/bin"| 选项 / 环境变量 | Linux 默认 | macOS 默认 | 说明 |
|---|---|---|---|
--command |
grok |
同左 | 二进制命令名 |
--install-dir |
/opt/Grok-Register |
~/Grok-Register |
源码 |
--home |
/root/.grok |
~/.grok |
数据 |
--bin-dir |
/usr/local/bin |
~/.local/bin |
二进制 |
--share-dir |
/usr/local/share/grok-reg |
~/.local/share/grok-reg |
mint 脚本 |
--venv-dir |
/opt/cloakbrowser-venv |
~/.local/share/cloakbrowser-venv |
Python venv |
--skip-docker |
off | off | 不检查/不装 Docker |
--skip-clearance |
off | off | 不起清障 |
--skip-browser |
off | off | 不装 Playwright |
--skip-go |
off | off | 不自动装 Go |
--no-start-clearance |
off | off | 不 compose up |
本地已 clone:
# Linux
sudo bash scripts/install.sh --command grok-reg
# macOS
bash scripts/install.sh --command grok-reg
# 或仅装二进制(需已有 web/dist,或本机有 npm)
make build && sudo make install # Linux
make build && make install PREFIX="$HOME/.local" APP=grok# Linux
export GROK_HOME=/home/<你>/.grok # 或 /root/.grok
export GROK_PYTHON=/opt/cloakbrowser-venv/bin/python
# macOS(或新开终端,已写进 zprofile)
export PATH="$PATH:$HOME/.local/bin"
export GROK_HOME="$HOME/.grok"
export GROK_PYTHON="$HOME/.local/share/cloakbrowser-venv/bin/python"
grok
# → Grok WebUI: http://127.0.0.1:8787clearance:
# Linux
cd /opt/Grok-Register/clearance && docker compose up -d && docker compose ps
# macOS
cd ~/Grok-Register/clearance && docker compose up -d && docker compose ps可选 systemd(前台进程,由 systemd 托管):
# 安装脚本结束会打印完整 unit 示例;核心是 ExecStart=/usr/local/bin/grok(无额外参数)
sudo systemctl enable --now grok| 组件 | 用途 | 不装会怎样 |
|---|---|---|
| Go 1.21+ | 编译二进制 | 无法 build |
| Node.js + npm | 构建 web/dist(仓库若已带 dist 可跳过) |
make build 缺 SPA |
| Python 3.10+ + venv | Turnstile Playwright mint | 拿不到 token |
| Playwright + CloakBrowser | 无头过 CF Turnstile | timeout / iframes=0 |
| Docker | 清障栈(强烈推荐) | 注册/邮箱/CF 更容易挂 |
| CPA Management(可选) | 自动/页面上传 | 本地仍有 CPA/*.json |
| 场景 | 内存 | CPU | 说明 |
|---|---|---|---|
| 最低能跑 | 2 GiB + 2 GiB swap | 1–2 vCPU | WebUI 并发 1;清障 + 1 个 Chromium |
| 舒适 | 4 GiB | 2–4 vCPU | 并发 1~2 |
| 冲量 | 8 GiB+ | 4+ vCPU | 并发 3~4(再高收益有限) |
粗算占用(目标 1、并发 1):
| 组件 | 约占用 |
|---|---|
| WARP + Privoxy + FlareSolverr | 400–900 MiB |
| CloakBrowser / Chromium(1 个) | 300–800 MiB |
| grok + Python mint | 50–150 MiB |
| 系统 / Docker 开销 | 200–400 MiB |
| 合计 | 约 1.2–2.5 GiB 峰值 |
≤1 GiB 内存的机器会非常卡。优化:WebUI 并发始终 1、≥2 GiB swap、先让 clearance healthy 再开任务。
一键脚本失败或需精细控制时使用。
sudo apt update
sudo apt install -y \
git curl ca-certificates gnupg lsb-release \
build-essential make \
python3 python3-pip python3-venv \
libnss3 libnspr4 libatk1.0-0 libatk-bridge2.0-0 libcups2 \
libdrm2 libxkbcommon0 libxcomposite1 libxdamage1 libxfixes3 \
libxrandr2 libgbm1 libasound2t64 libpango-1.0-0 libcairo2 \
fonts-liberation fonts-noto-cjk若
libasound2t64不存在,改成libasound2。构建前端另需 Node.js 18+。
cd /tmp
curl -fsSL -o go.tgz https://go.dev/dl/go1.24.4.linux-amd64.tar.gz
sudo rm -rf /usr/local/go
sudo tar -C /usr/local -xzf go.tgz
echo 'export PATH=$PATH:/usr/local/go/bin' | sudo tee /etc/profile.d/go.sh
export PATH=$PATH:/usr/local/go/bin
go versioncurl -fsSL https://get.docker.com | sudo sh
sudo systemctl enable --now docker
docker compose version || sudo apt install -y docker-compose-pluginsudo mkdir -p /opt
cd /opt
sudo git clone https://github.com/keh4l/Grok-Register-WebUI.git
cd /opt/Grok-Register
export PATH=$PATH:/usr/local/go/bin
# 若无 web/dist:make web(需 npm)
make build
sudo make install
# 自定义命令名:
# make build APP=grok-reg && sudo make install APP=grok-reg
grok -hsudo make install 在已有 bin/grok 时不会再调 go(避免 root PATH 里没有 go)。
sudo python3 -m venv /opt/cloakbrowser-venv
sudo /opt/cloakbrowser-venv/bin/pip install -U pip
sudo /opt/cloakbrowser-venv/bin/pip install -r /opt/Grok-Register/scripts/requirements-turnstile.txt
sudo /opt/cloakbrowser-venv/bin/python -m cloakbrowser install
echo 'export GROK_PYTHON=/opt/cloakbrowser-venv/bin/python' | sudo tee -a /root/.bashrc
echo 'export CLOAKBROWSER_SUPPRESS_FONT_WARNING=1' | sudo tee -a /root/.bashrc
export GROK_PYTHON=/opt/cloakbrowser-venv/bin/python
export CLOAKBROWSER_SUPPRESS_FONT_WARNING=1冒烟测试(清障栈起来后):
export GROK_PYTHON=/opt/cloakbrowser-venv/bin/python
$GROK_PYTHON /usr/local/share/grok-reg/turnstile_mint.py \
--site-key 0x4AAAAAAAhr9JGVDZbrZOo0 \
--url https://accounts.x.ai/sign-up \
--proxy http://127.0.0.1:40080 \
--timeout 70
echo exit:$?cd /opt/Grok-Register/clearance
sudo docker compose up -d
sudo docker compose ps| 端口 | 服务 |
|---|---|
127.0.0.1:40000 |
WARP SOCKS5 |
127.0.0.1:40080 |
Privoxy HTTP |
127.0.0.1:8191 |
FlareSolverr |
首次运行 grok 会从模板种子化;也可直接编辑:
mkdir -p ~/.grok
cp /opt/Grok-Register/config.env.example ~/.grok/config.env
# 按需改 EMAIL_MODE / WEB_* / CPA_* / 代理等WebUI 相关:
WEB_BIND=127.0.0.1
WEB_PORT=8787
# WEB_TOKEN= # 非本机监听必须设置
WEB_OPEN_BROWSER=1
WEB_STOP_JOB_ON_EXIT=0邮箱模式:
# 1) 公共临时邮箱(默认,无需 token)
EMAIL_MODE=tempmail
# 2) testmail.app
# EMAIL_MODE=testmail
# TESTMAIL_API_KEY=你的_apikey
# TESTMAIL_NAMESPACE=你的_namespace
# TESTMAIL_DOMAIN=inbox.testmail.app
# 3) 自建域名
# EMAIL_MODE=custom
# EMAIL_DOMAIN=example.com
# EMAIL_API=http://127.0.0.1:8080export GROK_PYTHON=/opt/cloakbrowser-venv/bin/python
export CLOAKBROWSER_SUPPRESS_FONT_WARNING=1
grok
# 浏览器: http://127.0.0.1:8787在页面中:
- 仪表盘:目标数量、并发、开始/停止、进度
- 日志:实时流
- 运行记录:下载 CPA / SSO / zip、上传 Management
- 配置:编辑
config.env字段 - 系统:健康检查、清障状态
数据目录(GROK_HOME,默认 ~/.grok):
~/.grok/
├── config.env / config.env.example
├── run.pid / run.lock / state.json
├── logs/run-yyyymmdd-HHMMSS.log
└── outputs/<run_id>/
├── SSO/ # email:password:sso
├── CPA/ # 探活成功 JSON(cliproxy/CPA)
├── grok2api/tokens.txt # 仅 SSO token,一行一个
└── discarded/
# 推荐:重跑一键(保留 config.env,自动补齐新键)
curl -fsSL https://raw.githubusercontent.com/keh4l/Grok-Register-WebUI/main/scripts/install.sh | sudo bash
# 或手动
cd /opt/Grok-Register # mac: ~/Grok-Register
sudo git pull
export PATH=$PATH:/usr/local/go/bin
make build && sudo make install # mac: make install PREFIX=$HOME/.local
# Linux 无头服务器 Turnstile:
sudo apt-get install -y xvfb- 推荐一键:先装 Homebrew + Docker Desktop,再
curl .../install.sh | bash - 手动:
brew install go python node,venv + CloakBrowser,make web && make build && make install PREFIX=$HOME/.local - 清障:打开 Docker Desktop 后
cd ~/Grok-Register/clearance && docker compose up -d
| 操作 | 说明 |
|---|---|
grok |
前台启动 WebUI(默认 http://127.0.0.1:8787) |
grok -h / --help |
帮助 |
grok -v / --version |
版本 |
| WebUI 仪表盘 | 设目标 N、并发 M(1–8)、开始/停止;计数 = CPA 探活成功数 |
| WebUI 日志 | 实时日志 |
| WebUI 运行记录 | 列表 / 下载 / zip / 上传 CPA |
| WebUI 配置 | 编辑 config.env |
| WebUI 系统 | 健康与 clearance |
旧版 CLI 子命令(start / status / logs 等)已移除;请用 WebUI。
| 变量 | 说明 |
|---|---|
GROK_HOME |
数据根,默认 ~/.grok |
GROK_PYTHON |
mint/pool 用的 Python |
GROK_TURNSTILE_SCRIPT |
one-shot mint 路径 |
GROK_TURNSTILE_POOL_SCRIPT |
常驻池路径 |
CHROME_PATH |
强制 Chromium |
CLOAKBROWSER_SUPPRESS_FONT_WARNING |
抑制 Linux 字体提示 |
WEB_BIND / WEB_PORT |
WebUI 监听 |
WEB_TOKEN |
可选鉴权;非 loopback 必填 |
WEB_OPEN_BROWSER |
启动后尝试打开浏览器 |
WEB_STOP_JOB_ON_EXIT |
Ctrl+C 时是否停注册任务 |
完整模板:config.env.example / ~/.grok/config.env.example。
清障预热 → S:Turnstile → P:邮箱+验证码 → C:注册拿 SSO
→ OAuth → 整备 CPA JSON → 探活 → 写 CPA/
→ (可选) 异步上传 Management API
- TARGET:仅
CPA/探活成功数 - 座位:
done + reserved ≤ target(全局,非每线程) - 自动上传失败不影响记成功
CF_IMPERSONATE=chrome_131
CF_IMPERSONATE_FALLBACK=chrome_124,chrome_120
CLEARANCE_MODE=auto # auto | always | never
CLEARANCE_ENABLED=1
CLEARANCE_AUTO_STOP=1| CLEARANCE_MODE | 行为 |
|---|---|
| auto(默认) | 先 TLS 指纹 warm;403/拦再 docker compose up + 预热 |
| always | 启动即清障 |
| never | 不碰 Docker 清障(靠直连/自有代理) |
默认 browser + TURNSTILE_MODE=offscreen:
- 常驻池
turnstile_pool.py(屏外有头) - 回退 one-shot
turnstile_mint.py - 再回退 chromedp 真 headless(不推荐,易 600010)
TURNSTILE_PROVIDER=browser
TURNSTILE_MODE=offscreen # offscreen | headless | auto默认不注入 FlareSolverr cookie/UA(除非 GROK_TURNSTILE_INJECT_CLEARANCE=1)。
可选 lite farm:
TURNSTILE_PROVIDER=lite
LITE_SOLVER_URL=http://127.0.0.1:5072| WARP + Privoxy(默认) | HTTP 代理池 | |
|---|---|---|
| 成本 | 低 | 按量 |
| 适合 | 个人小批量 | 冲量 / 多 IP |
| 配置 | 本机 compose | 池 + 轮换 |
CPA_UPLOAD_ENABLED=1
CPA_MANAGEMENT_BASE=http://127.0.0.1:8317/v0/management
CPA_MANAGEMENT_KEY=...- 宿主机跑
grok必须用127.0.0.1,不要写cli-proxy-api - 新版本会自动改写 docker 主机名并补
/v0/management - 也可在 WebUI「运行记录」里手动上传
Grok-Register/
├── cmd/grok/ # 无参 → WebUI
├── internal/
│ ├── api/ # HTTP API + 静态 SPA
│ ├── app/ # 任务控制面
│ └── config/
├── web/ # Vue 3 SPA(嵌入 dist)
├── scripts/
│ ├── install.sh # 一键部署
│ ├── turnstile_mint.py
│ ├── turnstile_pool.py
│ └── requirements-turnstile.txt
├── clearance/ # docker compose 清障
├── cloudflare/email-worker.js
├── Makefile # web / build / install
└── README.md
一键装完命令找不到
export PATH=$PATH:/usr/local/bin
# 或重新登录 shell;见 /etc/profile.d/grok-register.shmake build go not found / missing web/dist
export PATH=$PATH:/usr/local/go/bin
make web # 需要 npm;或保证仓库已有 web/dist
make build && sudo make installturnstile timeout / iframes=0
GROK_PYTHON指向已装 playwright 的 venvpython -m cloakbrowser install已完成- clearance healthy,
REGISTER_PROXY可用
lookup cli-proxy-api: no such host
CPA_MANAGEMENT_BASE=http://127.0.0.1:8317/v0/management非本机访问 WebUI
WEB_BIND=0.0.0.0
WEB_PORT=8787
WEB_TOKEN=请设一个长随机串请求带 Authorization: Bearer <token> 或 ?token=。
邮箱建得特别多
请更新到含全局 reserved 座位上限的版本。
- 主入口:无参
grok启动 WebUI;移除start/status/logs/config/uploadCLI - SPA:仪表盘 / 日志 SSE / 运行记录 / 配置 / 系统
- 构建:
make web+make build校验web/dist;install 结束打印 WebUI URL 与可选 systemd
- OAuth:全局启动间隔、OIDC discovery 缓存、
rate_limited重试 - 探活:
PROBE_WARMUP_SEC默认 5s - 安装安全:非默认
INSTALL_DIR且无.git时不再rm -rf整目录 - grok2api:
outputs/<run>/grok2api/tokens.txt - TLS
chrome_131+CLEARANCE_MODE=auto;Turnstileoffscreen
Linux(Debian/Ubuntu)
sudo apt-get update -y && sudo apt-get install -y xvfb
curl -fsSL https://raw.githubusercontent.com/keh4l/Grok-Register-WebUI/main/scripts/install.sh | sudo bash
# 或: cd /opt/Grok-Register && sudo git pull && make build && sudo make install
CFG="${GROK_HOME:-$HOME/.grok}/config.env"
grep -q '^WEB_BIND=' "$CFG" 2>/dev/null || echo 'WEB_BIND=127.0.0.1' >>"$CFG"
grep -q '^WEB_PORT=' "$CFG" 2>/dev/null || echo 'WEB_PORT=8787' >>"$CFG"
grep -q '^CLEARANCE_MODE=' "$CFG" 2>/dev/null || echo 'CLEARANCE_MODE=auto' >>"$CFG"
grep -q '^TURNSTILE_MODE=' "$CFG" 2>/dev/null || echo 'TURNSTILE_MODE=offscreen' >>"$CFG"
which grok; grok -hmacOS
curl -fsSL https://raw.githubusercontent.com/keh4l/Grok-Register-WebUI/main/scripts/install.sh | bash
# 或: cd ~/Grok-Register && git pull && make build && make install PREFIX=$HOME/.localmake web # cd web && npm ci && npm run build
make test
make build # 校验 web/dist 后 go build
bash -n scripts/install.sh
# 前端热更: cd web && npm run dev(需自行代理 /api)MIT。
协议注册与清障等核心能力源自上游 Charles-0509/Grok-Register;WebUI 控制面与本仓库新增功能见上文。