autoreg-skills-max: initial public release (restored, redacted, hardened)

This commit is contained in:
baradok60915d52e8425
2026-10-20 02:16:32 +03:00
commit f58eafeb48
565 changed files with 60064 additions and 0 deletions

View File

@@ -0,0 +1,71 @@
# 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
```jsonc
{
"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-подход рабочие.