6.2 KiB
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.bJSONPath-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 мин)
- Открыть signup в DevTools → Network, выписать API-шаги (или селекторы для browser-режима).
- Найти sitekey капчи (Turnstile:
0x4A...в JS/iframe; в minified JS искатьsitekey). - Скопировать
configs/rsiai.json→ заполнить flow. --dry-run(валидирует конфиг + загрузку ключа капчи), затем--count 1.- Смотреть 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-подход рабочие.