Skip to content

Repository files navigation

Register Machine Framework (RMF)

通用注册机框架(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/

Phase 0 本地运行

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 无管理员鉴权,仅本机开发使用。

Captcha 模式(环境变量)

变量 说明
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

xAI Provider(Phase 2b)

# 演练注册(默认 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)。

邮箱 / 代理(Mail · Proxy)

变量 说明
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/proxy

Live 注册示例(需真实邮箱 + 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

鉴权与 secrets(Phase 3)

变量 说明
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>)。

管理台 UI

启动 API 后打开:

http://127.0.0.1:8788/admin/

功能:登录、任务列表/新建/详情事件/取消、账号列表与 secrets 查看、系统(Captcha/Mail/Proxy/Providers)状态。

静态资源:web/admin/(DESIGN.md + index.html + assets/)。

对接 CPA / Grok2API

管理台 对接 页可配置并测试:

平台 配置 上传
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

远端状态 / 自动上传 / 导出 ZIP

功能 用法
同步远端状态 对接页「同步状态」或账号页「同步远端状态」→ 写回账号 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

Docker 快速起

在 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 自动构建镜像 |

About

No description, website, or topics provided.

Resources

Stars

4 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages