Files
autoreg-skills-max/skills/ai-provider-autoreg/references/universal-autoreg-engine-v2.md

6.2 KiB
Raw Blame History

Universal Autoreg Engine v2 (config-driven, 2026-09-19)

Расположение: C:/Users/User/Desktop/universal-autoreg/

  • engine.py (~24KB) — движок, python3, только stdlib (+ playwright для browser-режима)
  • configs/rsiai.json — пример конфига (New-Api панель)
  • configs/state.json, configs/accounts.json — создаются автоматически рядом с конфигом

Запуск: cd Desktop/universal-autoreg && PYTHONPATH="" python3 engine.py configs/<site>.json --count N [--dry-run]

Это развитие старого шаблона Desktop/_SCRIPTS/autoreg_template/ (см. universal-autoreg-template.md). V2 добавляет: state-file с resume, retry caps на 3 уровнях, fail-fast на JSON-отказах, 3 email-стратегии, 2 режима исполнения.

Config schema

{
  "site":   {"name": "...", "base": "https://...", "mode": "http|browser"},
  "captcha":{"type": "TurnstileTaskProxyless|HCaptchaTaskProxyless|...",
             "sitekey": "0x...", "page_url": "...",
             "key_env": "YESCAPTCHA_KEY", "key_env_file": "C:/.../авторег проект/.env"},
  "email":  {"strategy": "alias|dot|pool",
             "base_email": "...", "base_password": "...",   // alias/dot
             "pool_file": "mails.txt",                        // pool: email:pass или email;pass
             "domain": "gmail.com", "imap_host": null, "imap_port": 993},
  "flow":   [ /* шаги, см. ниже */ ],
  "success_requires": ["api_key"],   // evidence-based: без этих полей аккаунт = провал
  "limits": {"max_per_email": 5, "max_retries_per_step": 3,
             "max_total_accounts": 100, "cooldown_between_s": 20,
             "captcha_max_solves_per_account": 3},
  "output": {"accounts_file": "accounts.json", "state_file": "state.json"}
}

HTTP-шаги flow

  • {"id","method","path","query":{...},"json":{...},"headers":{...},"expect_status":[200],"extract":{"name":"$.data.key"},"on_fail":"retry_with_new_captcha"}
  • Плейсхолдеры в строках: {email} {password} {otp} {captcha_token} {captcha_token_2} {ts} + всё из extract предыдущих шагов.
  • {"type":"imap_otp","subject_regex":...,"code_regex":"(\\d{4,8})","timeout":120} — ожидание кода.
  • extract поддерживает $.a.b JSONPath-lite и re:<pattern> fallback по сырому body.

Browser-шаги flow (mode=browser, Playwright sync)

actions: goto / fill / click / wait / solve_captcha (+inject_selector) / imap_otp / type_otp / evaluate (+extract) / wait_response (+url_pattern +extract).

КЛЮЧЕВОЙ PITFALL: HTTP 200 ≠ успех (fail-fast на success:false)

Проверено live на rsiai.net 2026-09-19: сервер вернул HTTP 200 с телом {"message":"管理员已启用邮箱地址别名限制...","success":false} — админ включил запрет gmail +alias. Без проверки JSON-тела движок ждал OTP 4+ минуты впустую (письмо никогда не придёт).

Правило для ЛЮБОГО авторег-flow: после каждого HTTP-шага парсить JSON и при success:false / code!=0 / аналоге — немедленный raise, не переход к следующему шагу. В engine v2 это встроено (fail_on_json, отключается на шаг "fail_on_json": false).

Вывод по rsiai: стратегия alias/dot мертва, только pool с чистыми почтами (whitelist gmail/outlook/hotmail/qq без + и точек — совпадает с rsiai-net-autoreg.md).

Встроенные механизмы (уроки graph/loop engineering)

  • State-файл (state.json): accounts, emails_used, failed[], stats; save после каждого аккаунта → resume после крэша без повторной работы.
  • Retry caps на 3 уровнях: per-step (max_retries_per_step), per-account (captcha_max_solves_per_account), per-run (max_total_accounts). Bound покрывает ВЕСЬ feedback path, а не только внутренний вызов — иначе бесконечный цикл.
  • Evidence-based success: success_requires — аккаунт записывается только если извлечены требуемые поля (api_key и т.п.). «Прогон завершился без ошибки» ≠ успех.
  • Email-стратегии: alias (base+tag@), dot (dot-trick), pool (файл email:pass/email;pass, shuffle, учёт max_per_email через state).
  • IMAP авто-детект: gmail/outlook/hotmail/live/yahoo/mail.ru/t-online.de/qq → встроенная таблица хостов; для алиасов логин всегда по base_email (часть до +).
  • Captcha-ключ: из config → env-файл (key_env_file+key_env) → os.environ. Да, ключ YesCaptcha лежит в Desktop/_PROJECTS/авторег проект/.env → YESCAPTCHA_KEY.

Адаптация под новый сайт (~10 мин)

  1. Открыть signup в DevTools → Network, выписать API-шаги (или селекторы для browser-режима).
  2. Найти sitekey капчи (Turnstile: 0x4A... в JS/iframe; в minified JS искать sitekey).
  3. Скопировать configs/rsiai.json → заполнить flow.
  4. --dry-run (валидирует конфиг + загрузку ключа капчи), затем --count 1.
  5. Смотреть state.json/failed при ошибках; проверять что каждый шаг читает JSON-тело, а не только статус.

Статус на 2026-09-19

  • dry-run: PASS (конфиг rsiai, ключ 46 chars)
  • live-тест: captcha решается (YesCaptcha Turnstile ~6с, иногда 120с+ — закладывать таймаут 300с), flow rsiai упирается в alias-бан → нужен pool чистых почт для полного прогона. Движок и config-подход рабочие.