通用注册机框架(Python)。x.ai / Grok 只是第一个 Provider,后续其它站点通过插件接入,不改核心。
本目录为新项目骨架 + 设计文档,与上级 E:\LinuxDo\Cracker 中从 puritan3116/groklite8 解包的旧代码分离。
| 文档 | 说明 |
|---|---|
| docs/DESIGN.md | 完整设计方案(架构、SPI、Captcha 三模式、数据模型、性能、部署、分期) |
| docs/CAPTCHA.md | Captcha 子系统专项(inline / fleet / vendor) |
| docs/CODING_STANDARDS.md | 代码编写规范(边界、类型、错误、中文完整注释、测试、Git) |
- 设计方案
- 代码编写规范
- Phase 0 框架骨架(demo 任务可 succeeded)
- Phase 1 Captcha(Router + HTTP/Vendor + fake/inline/fleet/failover)
- Phase 1 余量:Mail(legacy/moemail)+ Proxy(static 池)适配
- Phase 2a xAI Provider(dry_run 全链路 + live 部分协议/重登桥接)
- Phase 2b xAI 完整 create_account + SSO→OAuth(
flow.py+sso_to_auth_json) - Phase 3a 鉴权 + secrets 加密入库
n- [x] Phase 3b Admin UI(/admin)n- [ ] 第二站点模板脚手架
register-machine/
packages/rmf_core|rmf_store|rmf_api
providers/demo
tests/
docs/
cd E:\LinuxDo\Cracker\register-machine
python -m pip install -e packages/rmf_core -e packages/rmf_store -e providers/demo -e packages/rmf_api
python -m pip install "pytest>=8" pytest-asyncio httpx asgi-lifespan
# 测试
python -m pytest -q
# 启动 API(默认 127.0.0.1:8788,数据目录 ./data)
$env:RMF_DATA_DIR = ".\data"
python -m rmf_api# 健康检查
Invoke-RestMethod http://127.0.0.1:8788/api/v1/system/health
# 创建演示注册任务
Invoke-RestMethod -Method Post http://127.0.0.1:8788/api/v1/jobs `
-ContentType application/json `
-Body '{"provider":"demo","type":"register","input":{"email_prefix":"u","delay_ms":20}}'Phase 0/1 无管理员鉴权,仅本机开发使用。
| 变量 | 说明 |
|---|---|
RMF_CAPTCHA_MODE |
fake(默认)/ inline / fleet / vendor / failover |
RMF_CAPTCHA_URL |
inline 地址,默认 http://127.0.0.1:5072 |
RMF_CAPTCHA_FLEET_URLS |
逗号分隔多节点 |
RMF_CAPTCHA_VENDOR_KEY |
远程 YesCaptcha key |
RMF_CAPTCHA_VENDOR_ENDPOINT |
厂商 API 根 |
# 查看 captcha 后端状态
Invoke-RestMethod http://127.0.0.1:8788/api/v1/system/captcha安装含 captcha 包:
python -m pip install -e packages/rmf_core -e packages/rmf_store -e packages/rmf_captcha -e packages/rmf_mail -e packages/rmf_proxy -e packages/rmf_remote -e providers/demo -e providers/xai -e packages/rmf_api# 演练注册(默认 dry_run=true,不访问外网)
Invoke-RestMethod -Method Post http://127.0.0.1:8788/api/v1/jobs `
-ContentType application/json `
-Body '{"provider":"xai","type":"register","input":{"dry_run":true}}'
# 真实注册(需:可用 captcha 后端 + 可收信邮箱 + 可选代理)
# 协议依赖上级: grok-build-auth/ 与 sso_to_auth_json.py
# $env:RMF_CAPTCHA_MODE = "inline" # 或 vendor/failover
Invoke-RestMethod -Method Post http://127.0.0.1:8788/api/v1/jobs `
-ContentType application/json `
-Body '{"provider":"xai","type":"register","input":{"dry_run":false,"proxy":""}}'Live 流水线:过盾 → 发信 → 收码 → create_account → 取 SSO → device flow OAuth(见 providers/xai/rmf_provider_xai/flow.py)。
| 变量 | 说明 |
|---|---|
RMF_MAIL_MODE |
fake(默认)或 legacy(上级 moemail 多厂商) |
RMF_MAIL_PROVIDER |
moemail / yyds / gptmail / cfmail / duckmail |
RMF_MAIL_API_KEY |
服务密钥 |
RMF_MAIL_BASE_URL |
服务根 URL |
RMF_MAIL_DOMAIN |
域名(可选) |
RMF_PROXY_MODE |
fake 或 static |
RMF_PROXY_URLS |
逗号分隔代理列表 |
RMF_PROXY_STRATEGY |
round_robin / random |
Invoke-RestMethod http://127.0.0.1:8788/api/v1/system/mail
Invoke-RestMethod http://127.0.0.1:8788/api/v1/system/proxyLive 注册示例(需真实邮箱 + captcha):
$env:RMF_MAIL_MODE = "legacy"
$env:RMF_MAIL_PROVIDER = "moemail"
$env:RMF_MAIL_API_KEY = "..."
$env:RMF_MAIL_BASE_URL = "https://your-moemail"
$env:RMF_CAPTCHA_MODE = "inline" # 或 vendor
# python -m rmf_api| 变量 | 说明 |
|---|---|
RMF_AUTH_DISABLED |
true 关闭鉴权(仅本地/测试) |
RMF_ADMIN_BOOTSTRAP_PASSWORD |
首次启动写入管理员密码 |
RMF_ADMIN_FORCE_RESET |
true 强制重置管理员密码 |
RMF_SESSION_SECRET |
Session 签名密钥(可选) |
RMF_SECRETS_KEY |
账号 secrets 加密密钥(强烈建议生产配置) |
$env:RMF_ADMIN_BOOTSTRAP_PASSWORD = "change-me"
$env:RMF_SECRETS_KEY = "your-long-random-secret"
python -m rmf_api
# 登录
Invoke-RestMethod -Method Post http://127.0.0.1:8788/api/v1/auth/login `
-ContentType application/json -Body '{"password":"change-me"}' -SessionVariable s
# 之后带 $s 访问受保护接口
Invoke-RestMethod http://127.0.0.1:8788/api/v1/accounts -WebSession $s公开接口:/api/v1/system/health、/api/v1/system/auth、/api/v1/auth/login。
其余 API 需登录 Cookie(或 Authorization: Bearer <token>)。
启动 API 后打开:
http://127.0.0.1:8788/admin/
功能:登录、任务列表/新建/详情事件/取消、账号列表与 secrets 查看、系统(Captcha/Mail/Proxy/Providers)状态。
静态资源:web/admin/(DESIGN.md + index.html + assets/)。
管理台 对接 页可配置并测试:
| 平台 | 配置 | 上传 |
|---|---|---|
| CPA | base_url + management_key | POST /v0/management/auth-files |
| Grok2API | base_url + username/password | POST /api/admin/v1/accounts/import |
流程:账号页勾选 →「上传 CPA / Grok2API」→ 从加密 secrets 组装 auth.json multipart 上传。
API:
GET/PUT /api/v1/integrations/cpa
POST /api/v1/integrations/cpa/test
POST /api/v1/integrations/cpa/upload body: {emails?, limit?, provider?}
GET/PUT /api/v1/integrations/grok2api
POST /api/v1/integrations/grok2api/test
POST /api/v1/integrations/grok2api/upload
GET/PUT /api/v1/integrations/remote-backend
| 功能 | 用法 |
|---|---|
| 同步远端状态 | 对接页「同步状态」或账号页「同步远端状态」→ 写回账号 remote_status |
| 注册后自动上传 | 对接页勾选「注册成功后自动上传」,并设置 remote_backend 为 cpa 或 grok2api |
| 导出 ZIP | 账号多选 →「导出 ZIP」→ auth_files/*.json + sso_list.txt + manifest.json |
POST /api/v1/integrations/remote-status {backend: auto|cpa|grok2api, mode: problems|full}
POST /api/v1/exports/zip {emails?, provider?, include_auth?, include_sso?}
| 文档 | 内容 |
|---|---|
| docs/DESIGN.md | 架构设计 |
| docs/CAPTCHA.md | Captcha 三模式 |
| docs/CODING_STANDARDS.md | 代码规范 |
| docs/COMPLETENESS.md | 完整度评估 |
| docs/DEPLOY.md | 部署与多架构 |
| docs/PROJECT_MAP.md | 目录图 |
| deploy/ | Dockerfile / compose / buildx |
在 Cracker 根目录:
docker compose -f register-machine/deploy/docker-compose.yml --env-file register-machine/.env up -d --build浏览器是否进镜像:进 captcha 镜像,不进 api 镜像(详见 DEPLOY.md)。
见 docs/COMPLETENESS.md:产品代码目标 100%。
| docs/GITHUB_ACTIONS.md | GitHub 自动构建镜像 |