醒刻 Logo
← 返回文章列表

Grok 批量注册与 API 代理对接实战:grok-register + grok2api 部署笔记

整理 grok-register 与 grok2api 的组合部署流程,包括本地启动、参数配置、号池对接、云端部署时的数据持久化注意事项,以及发布前更适合阅读的结构化说明。

2026年3月19日 · 2713 · 更新于 2026年3月19日

最近折腾 Grok 可用性方案时,我把“账号自动注册”和“OpenAI 兼容 API 转换”这两部分串了起来。实际跑通之后会发现,这条链路并不复杂,但如果只看零散说明,很容易在配置细节上卡住。

这篇文章整理一下我目前的部署思路,核心目标是打通这样一条流程:

  1. grok-register 自动注册 Grok 账号
  2. 自动提取可用凭证或 SSO Token
  3. 把 Token 推送到 grok2api 的号池
  4. 最终对外提供 OpenAI 兼容接口

如果你只是想快速判断这套方案值不值得折腾,可以先记住一句话:grok-register 负责“生产账号和凭证”,grok2api 负责“把这些账号包装成标准 API 服务”。

这两个项目分别做什么

grok2api

项目地址:

https://github.com/chenyme/grok2api

它的作用可以理解为一个协议转换层。你不直接面向 Grok 网页去做请求,而是把它包装成更通用的 OpenAI 兼容调用格式,方便接入你已有的客户端、脚本、IDE 或中转服务。

从使用场景上看,grok2api 适合解决这些问题:

  • 统一接口格式,方便兼容现有 OpenAI 客户端
  • 管理多个账号或 Token,做基础号池调度
  • 给上层应用提供一个稳定入口,而不是每次都手动登录网页

grok-register

项目地址:

https://github.com/ReinerBRO/grok-register

它更像一个自动化注册器,负责把“人肉注册账号”的过程尽量脚本化。根据项目设计,它能够配合 DuckMail 这类临时邮箱服务,自动完成注册流程,并在跑通后把结果直接推送到 grok2api

所以这两个项目最自然的组合方式就是:

  • grok-register 负责新增可用账号
  • grok2api 负责集中管理和转发请求

整体部署思路

建议不要一上来就把所有组件扔上云端。更稳妥的顺序是:

  1. 先在本地把 grok2api 跑起来
  2. 确认管理后台可访问
  3. 再配置 grok-register
  4. 验证新注册的账号是否真的进了号池
  5. 最后再考虑迁移到 Vercel、Render 或其他长期运行环境

这样做的好处是,出了问题比较容易定位。否则你很难判断是注册流程挂了、网络环境不对,还是号池存储丢了。

第一步:部署 grok2api

grok2api 是整个方案的核心服务。你可以把它理解成控制中心:它负责收纳 Token、提供接口、统一对外输出。

方式一:本地直接运行

如果你只是先验证流程,本地运行通常是最省事的方式。

git clone https://github.com/chenyme/grok2api
cd grok2api
uv sync
uv run granian --interface asgi main:app

这套方式更适合:

  • 本机调试
  • 先确认项目能否正常启动
  • 后续再决定是否容器化

方式二:使用 Docker Compose

如果你更习惯容器化管理,也可以直接使用 Docker Compose。

git clone https://github.com/chenyme/grok2api
cd grok2api
docker compose up -d

这种方式更适合:

  • 想减少本机环境污染
  • 需要后续迁移到服务器
  • 想更方便地做服务重启和日志隔离

启动后先做的第一件事

服务起来之后,先访问管理后台:

http://localhost:8000/admin

如果页面能打开,说明服务本身大概率已经正常启动。你接下来至少要确认两件事:

  • 管理后台能正常登录
  • 你知道当前使用的后台密码或 app_key

这是后面让 grok-register 自动推送 Token 时必须用到的参数。

第二步:理解 grok-register 的角色

很多人会把 grok-register 当成一个单纯的注册脚本,但它真正有价值的地方是“自动化闭环”。

也就是说,它不只是帮你注册账号,而是试图把这条链路尽量自动打通:

  • 获取邮箱
  • 完成注册流程
  • 提取登录态或 SSO Token
  • 推送到 grok2api

如果你只是注册成功,但没有把结果接进 grok2api,那么这套组合的价值其实就打了折扣。

第三步:配置 grok-register

grok-register 目录下,重点是配置好 config.json。这一步往往是最容易因为字段理解不清而失败的地方。

DuckMail 相关参数

你至少需要准备好 DuckMail 的 Bearer Token,用于脚本获取临时邮箱和处理注册流程。

常见字段说明可以理解为:

  • duckmail_bearer 填你从 DuckMail 获取到的 Bearer Token

浏览器代理参数

如果你的运行环境直连网络受限,或者你在无头服务器上跑自动化浏览器,这里通常还要配置浏览器代理。

  • browser_proxy 填浏览器实际可用的代理地址,例如:
http://127.0.0.1:7890

这一项非常关键。很多“脚本跑不通”的根本原因,不是代码问题,而是自动化浏览器压根没有走通外网。

第四步:把 grok-register 对接到 grok2api

如果你想实现“注册完自动入池”,就必须把 API 对接参数配对。

通常要关注这几个字段:

  • api.endpoint
  • api.token
  • api.append

参数该怎么理解

api.endpoint

这是 grok2api 的管理接口地址。
如果你本地部署,可能类似这样:

http://127.0.0.1:8000

如果你部署在远程服务器,那就填服务器地址或你反代后的域名。

api.token

这是 grok2api 侧用于鉴权的密钥,通常就是后台配置的 app_key 或项目说明里要求的访问令牌。

这一步一定要核对清楚。很多人看到“接口连不上”就以为是 URL 写错,实际上更常见的是 Token 不一致。

api.append

这一项我建议保持为:

true

原因很简单:

  • true:把新注册的账号追加到现有号池
  • false:可能会覆盖已有数据

如果你已经跑出一批可用 Token,结果因为这个字段配置不当把原号池覆盖了,会很伤。

一个更稳妥的检查顺序

在正式批量跑之前,我建议先做一次最小闭环验证:

  1. 先手动启动 grok2api
  2. 确认后台能登录
  3. grok-register 中配置好 api.endpointapi.token
  4. 只先跑少量账号测试
  5. 回到 grok2api 后台检查号池是否新增

只要这条链路通了,再去扩大规模会安全很多。

第五步:如果你要部署到 Vercel 或 Render

这一步是很多人后期才意识到的大坑:grok2api 不只是一个 Web 服务,它背后还有账号数据和号池状态。如果你把它直接扔到“临时文件系统”或“免费休眠实例”上,很可能部署看起来成功了,但数据根本留不住。

为什么会丢数据

像 Vercel、Render 这类平台,尤其是无状态或会休眠的免费实例,通常都有这些限制:

  • 临时目录重启后会清空
  • 本地文件不适合长期持久化
  • 实例休眠或重新部署后,运行时状态会丢失

这意味着即使 grok-register 成功推送了 Token,只要存储层没有做好持久化,下次实例重启时这些数据就可能没了。

在 Vercel 上部署时要注意什么

如果你确实要部署在 Vercel,至少要关注两个方向:

  • 数据目录不要写到不可持久化的默认路径
  • 尽量关闭不必要的本地文件日志

常见做法是设置类似下面的环境变量:

DATA_DIR=/tmp/data
LOG_FILE_ENABLED=false

但要注意,这样做更多只是为了“让服务先跑起来”,并不等于真正解决了长期存储问题。

Render 免费实例为什么也要谨慎

Render 免费实例如果长时间没有访问,通常会进入休眠。实例重启后,如果你依赖的是本地文件存储,号池数据就可能无法保留。

所以如果你准备长期使用,而不是临时演示,最好从一开始就把数据持久化方案想清楚。

第六步:持久化才是云端部署的关键

这部分我认为是整套方案里最值得强调的细节。

如果你要把 grok2api 放在云端长期使用,强烈建议准备一个外部存储,而不是依赖应用实例本地磁盘。常见思路包括:

  • MySQL
  • PostgreSQL
  • Redis

具体配置时,通常要关注这类环境变量:

  • SERVER_STORAGE_TYPE
  • SERVER_STORAGE_URL

例如:

SERVER_STORAGE_TYPE=pgsql
SERVER_STORAGE_URL=postgresql+asyncpg://user:password@host:5432/dbname

或者:

SERVER_STORAGE_TYPE=mysql
SERVER_STORAGE_URL=mysql+aiomysql://user:password@host:3306/dbname

这样做的核心价值是:

  • 实例重启后号池不会清空
  • 重新部署不会把现有 Token 丢掉
  • grok-register 推送的数据能真正沉淀下来

第七步:发布前最值得做的几项检查

如果你准备把这套服务真正投入使用,而不是只做实验,我建议至少检查下面这些点。

1. 后台密码和 API Token 不要继续用默认值

很多人调通之后就懒得改默认配置,但这类服务一旦暴露到公网,默认密码和默认密钥风险非常高。

2. 不要一上来就全量注册

先跑小规模验证:

  • 注册是否成功
  • Token 是否有效
  • 是否成功写入 grok2api
  • API 调用是否真的可用

小规模跑通后,再考虑扩大规模。

3. 日志和异常要能看得到

无论你是本地运行、Docker 部署,还是放到云平台,最好都提前确认:

  • 服务日志在哪里看
  • 推送失败时有没有明确报错
  • 号池新增失败能不能被发现

否则一旦链路中间断了,你可能会误以为“注册成功了”,实际上只是最后一步写入失败。

小结

从工程角度看,grok-register + grok2api 这套方案最有价值的地方,不在于“自动注册”本身,而在于它把账号获取、凭证接入和统一 API 输出连成了一条流水线。

如果你只想快速跑通,推荐顺序是:

  1. 本地启动 grok2api
  2. 登录后台确认服务可用
  3. 配好 grok-register 的邮箱、代理和 API 参数
  4. 小规模验证自动推送
  5. 最后再考虑云端部署和数据持久化

真正决定这套方案能不能长期稳定用下去的,不是“能不能启动”,而是下面这三点:

  • 注册链路是否稳定
  • 号池写入是否可靠
  • 云端存储是否可持久化

把这三件事想清楚之后,这套方案才算真正具备可用性。

评论区