通用 Web 批量注册框架:
- Camoufox 反检测浏览器引擎(官方 Python Async API)
- Site Pack 可分享 / 可导入的站点注册流程包(浏览器 YAML 或 协议
http.request) - Web 逆向:抓包、依赖图、强签名(crypto hooks / 浏览器预言机)、一键写协议 pack
- 用户 Chrome:扩展一键完整逆向 / 整机 CDP 附着(已登录态即时分析)
- AI Agent 接口:CLI / Python / MCP(
easy-reg ai call) - 邮箱 / 短信 / 验证码 / 代理 可插拔 Provider
仅用于自有系统压测、授权测试与合法自动化场景。
安装
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
cp .env.example .env # 按需填写
# 真机浏览器(Camoufox)
pip install -e ".[camoufox]"
python -m camoufox fetch
# 可选:协议 TLS 指纹(curl_cffi)
pip install -e ".[tls]"
# 可选:MCP
pip install -e ".[mcp]"
功能清单
| 能力 | 状态 |
|---|---|
| Site Pack(YAML flow + hooks) | ✅ |
| 本地 / zip / URL / GitHub 安装与导出 | ✅ |
| 跑任务引擎:Camoufox / mock / http(纯协议) | ✅ |
| 逆向附着:CDP(用户 Chrome)/ Chrome 扩展 bridge | ✅ |
协议动作:http.request / http.from_browser / http.sign_via_browser |
✅ |
Web 逆向:re.explore · capture · auto_sign · 依赖图 · HAR 1.2 |
✅ |
| Chrome 扩展完整逆向(hooks+crypto+签名,免改启动参数) | ✅ |
| 拟人输入、cookie/session 落盘 | ✅ |
| 代理池 + geoip | ✅ |
| 邮箱 stub / IMAP / mail.tm / ms_oauth(gr/o2 双令牌 IMAP+Graph) | ✅ |
| 短信 stub / 通用 HTTP API / 5sim 等 | ✅ |
| 验证码 stub / manual / 2captcha(说明) | ✅ |
| 重试、限速、并发 | ✅ |
| 批量农场:Job 状态 / 后台 / cancel / retry failed / 付费预算 | ✅ |
| Browser pool 热回收 · 分层限速 · sticky 代理 · job metrics | ✅ |
| Checkpoint resume · 成本账本 · 拟人点击/滚动 | ✅ |
| 代理健康(mark_bad + 冷却)· SMS release · mail.tm 并发安全 | ✅ |
| SQLite + CSV/JSON 导出(排除 dry-run) | ✅ |
| AI tools / schema / playbook / MCP | ✅ |
快速开始
easy-reg doctor
easy-reg config
easy-reg pack install ./packs/demo-local
easy-reg run demo-local -n 2 --dry-run # → skipped(非真实 success)
easy-reg run demo-local -n 1 --engine mock
# 大批量后台(农场模式)
easy-reg run demo-local -n 20 -c 3 --background \
--max-paid-retries 0 --browser-pool --checkpoint-resume
easy-reg run-status <job_id>
浏览器 / 逆向入口怎么选
| 场景 | 用法 |
|---|---|
| 干净环境、自动填表/点向导、批量 run | Camoufox |
| SPA / 多 XHR / 要协议化 | re.explore 或 site.capture → pack.from_capture |
| 已登录的 Chrome 即时分析 | Easy-Rev 扩展 + bridge;capture 再交给 Easy-Reg 写包 |
| 多 tab 深度控制同一 Chrome | CDP(--remote-debugging-port=9222) |
| 纯 API 批量(弱签名或已合成 HMAC) | engine=http(可选 [tls]) |
详细规范:docs/reverse-engineering.md
Camoufox 一键逆向写包
easy-reg ai call re.explore -i '{
"url":"https://授权站/signup",
"auto_fill":true,
"submit":true,
"write_pack":true,
"scaffold_hooks":true,
"pack_id":"my-site"
}'
Chrome 扩展完整逆向(已登录页)
# 1) 在和 Easy-Reg 相同的 venv 安装 Easy-Rev Web RE(扩展和 bridge 只在该仓库维护)
pip install -e "/path/to/easy-rev[web]"
# 2) 本机接收端(前台兼容启动器,底层实现来自 Easy-Rev)
easy-reg re bridge
# → http://127.0.0.1:18766
# 3) Chrome → chrome://extensions → 开发者模式
# 加载已解压:easy-rev/extensions/easy-rev-chrome
# 4) 打开已登录页 → 扩展开始录制
# 在页面完成注册/提交操作后停止录制
# 5) 从扩展结果或 bridge status 取 capture 路径
easy-reg ai call re.bridge.status -i '{}'
# 6) 用 Easy-Reg 消费 capture 并写注册包
easy-reg ai call pack.from_capture -i '{"capture_path":"<last_capture_path>","pack_id":"my-site"}'
扩展能力对齐 Camoufox site.capture:Network + page hooks(fetch/XHR/crypto)+ auto_sign + 依赖图。扩展和 bridge 的唯一维护位置是 easy-rev,其中的 capture JSON 可直接交给 Easy-Reg 的 pack.from_capture。
整机 CDP(可选)
# Chrome 需带 --remote-debugging-port=9222
easy-reg re browser-list --cdp http://127.0.0.1:9222
easy-reg ai call re.explore -i '{
"url":"https://…",
"cdp_url":"http://127.0.0.1:9222",
"tab_url":"signup",
"navigate":false,
"write_pack":true,
"pack_id":"from-chrome"
}'
如何让 AI 快速使用
目标:给 AI 配一次规则,之后 一句话 就能写注册包 / 探站 / 逆向 / 跑任务。
AI 只调 CLI(easy-reg ai call),站点逻辑写进 Site Pack,不改框架源码。
三步接入
① 安装并自检(人做一次)
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev,camoufox]"
python -m camoufox fetch
cp .env.example .env
easy-reg doctor
② 把系统提示词交给 AI(人做一次)
| 方式 | 做法 |
|---|---|
| 推荐 | docs/AGENT_PROMPT.md 的 「完整系统提示词」 贴到 Cursor / Claude Code / Agent System 规则 |
| 省上下文 | 同文件 「精简系统提示词」 |
| 本仓库 Agent | 直接遵循 AGENTS.md(含逆向三入口) |
| MCP | pip install -e ".[mcp]" → easy-reg ai mcp |
接口总览:docs/ai-interface.md
③ 一句话(日常)
Easy-Reg 写包:https://你的授权站/signup id=my-app
| 你说 | AI 做什么 |
|---|---|
Easy-Reg 写包:https://… id=xxx |
完整写包 + 试跑 + export |
Easy-Reg 探站 https://… |
仅 site.inspect |
Easy-Reg 逆向 https://… |
re.explore / capture → 协议 pack |
Easy-Reg 分析我已登录的 Chrome |
启 bridge + 扩展,或 CDP 附着 |
Easy-Reg 跑 xxx 数量10 |
已装 pack 的 run.start |
Easy-Reg 修包 xxx … |
改 flow → validate → 试跑 |
Easy-Reg 诊断 job_id=… |
run.diagnose / re.diagnose |
AI 常用命令示例
source .venv/bin/activate
easy-reg ai schema
easy-reg ai playbook
easy-reg ai call doctor -i '{}'
# 浏览器写包
easy-reg ai call site.inspect -i '{"url":"https://…","engine":"camoufox","multi_step":true}'
easy-reg ai call run.start -i '{"pack_id":"my-app","count":1,"engine":"camoufox","trust":true}'
# 逆向 → 协议 / hybrid pack
easy-reg ai call re.explore -i '{"url":"https://…","write_pack":true,"pack_id":"my-app"}'
easy-reg re bridge
easy-reg ai call pack.from_capture -i '{"capture_path":"…","pack_id":"my-app"}'
easy-reg ai call run.start -i '{"pack_id":"my-app","count":1,"engine":"http"}' # 弱签名纯协议
# hybrid(from_browser / sign_via_browser)请用 camoufox
配置
环境变量前缀 EASY_REG_,见 .env.example。
EASY_REG_ENGINE=camoufox
EASY_REG_EMAIL_PROVIDER=mailtm # 或 imap
EASY_REG_CAPTCHA_PROVIDER=2captcha
EASY_REG_CAPTCHA_API_KEY=...
EASY_REG_SMS_PROVIDER=http # 强制 SMS 站需真接码,stub 不可用
EASY_REG_PROXY_FILE=./proxies/proxies.txt
EASY_REG_RETRY_MAX=2
EASY_REG_MIN_INTERVAL_S=1.5
CLI
| 命令 | 说明 |
|---|---|
easy-reg doctor / config |
自检 / 配置 |
easy-reg run <pack> |
批量农场(--background / --max-paid-retries / --retry-job) |
easy-reg run-status / run-cancel |
进度轮询 / 取消 |
easy-reg pack … |
init / validate / install / export / list |
easy-reg site inspect|capture |
探站 / 抓包 |
easy-reg re bridge |
Chrome 扩展本机接收端(默认 :18766,实现来自 easy-rev) |
easy-reg re bridge-status |
扩展 bridge 最近一次 capture |
easy-reg re browser-list --cdp … |
整机 CDP 列标签 |
easy-reg re start --cdp … |
RE 会话附着用户 Chrome |
easy-reg re list|snapshot|stop |
持久 RE 会话管理 |
easy-reg account … |
generate / export / list |
easy-reg ai tools|call|schema|playbook|mcp |
AI 主接口 |
Pack 来源
easy-reg pack install ./packs/demo-local
easy-reg pack install ./my.zip
easy-reg pack install https://example.com/pack.zip
easy-reg pack install github:org/repo//packs/acme@v1.0.0
easy-reg pack export acme -o acme.zip
Site Pack
浏览器声明式:
steps:
- action: goto
url: "{{ vars.signup_url }}"
- action: fill_form
fields:
- { selector: 'input[name=email]', value: '{{ account.email }}' }
- { selector: 'input[name=password]', value: '{{ account.password }}' }
- action: click_when_enabled
selector: 'button[type=submit]'
协议 / Hybrid(逆向产物):
steps:
- action: http.from_browser # hybrid:从浏览器灌 cookie
- action: http.request
method: POST
url: "https://api.example.com/v1/register"
sign_via_browser: true # 强签名:页面 JS 预言机
signer_path: "signRequest"
json:
email: "{{ account.email }}"
password: "{{ account.password }}"
assert_status: [200, 201]
文���
| 文档 | 内容 |
|---|---|
| AGENTS.md | AI 主规则(写包 + 逆向三入口) |
| docs/ai-interface.md | AI 工具与 Playbook |
| docs/AGENT_PROMPT.md | 可复制系统提示词 |
| docs/reverse-engineering.md | Web 逆向 / 扩展 / CDP / 强签名 |
| docs/pack-spec.md | Site Pack 规范 |
| docs/captcha-2captcha.md | 2captcha / CaptchaFox 等 |
| easy-rev | Chrome 扩展、bridge 与 Web RE 安装使用 |
开发
source .venv/bin/activate
pip install -e ".[dev,camoufox]"
pytest -q
许可证
MIT
Comments