Files
autoreg-skills-max/skills/github-autoreg/SKILL.md

34 KiB
Raw Blame History

name, description, category
name description category
github-autoreg Mass GitHub account registration without captcha. Persistent Chrome profile bypasses Arkose FunCaptcha. Two backends — mail.tm (no email list) and .de emails (IMAP). 2captcha/AntiCaptcha/CapSolver ALL fail on GitHub Arkose. automation

GitHub AutoReg — No Captcha

Создание GitHub аккаунтов без капчи. Прогретый Chrome-профиль обходит Arkose Labs FunCaptcha полностью.

Почему это работает

GitHub использует Arkose Labs FunCaptcha (public key: 0651BCE4-8F66-4F8B-9C6D-5F5411DD9158). Ни один captcha-сервис её не решает:

Сервис Результат Пруф
2captcha (old API) ERROR_CAPTCHA_UNSOLVABLE 2026-07-09
AntiCaptcha Таймаут 3+ мин → таск истекает 2026-07-27 (taskId: 464294112)
CapSolver ERROR_INVALID_TASK_DATA 2026-07-09
YesCaptcha ERROR_ZERO_BALANCE (мин. $10) 2026-07-27

Решение: прогретый Chrome-профиль (с куками/историей GitHub) → GitHub видит «своего» и не показывает капчу.

Быстрый старт

Основной способ (с 2026-08-11): дашборд ENI AUTOREG v3.0 — см. раздел ниже.

Standalone (legacy):

git clone https://github.com/nikita4a/gh-autoreg
cd gh-autoreg
pip install -r requirements.txt
playwright install chromium
python reg.py --count 10

Полный флоу

1. Загружаем .de почты из файла (email:password)
2. Открываем прогретый Chrome-профиль
3. JS form fill (НЕ Playwright fill — палится)
4. Жмём Create account → редирект на /account_verifications
5. Читаем код подтверждения через IMAP
6. Вводим код → аккаунт создан
7. Ждём 2-5 мин (secondary rate limit)
8. Повторяем

Три критических правила

1. JS form fill, НЕ page.fill()

# ❌ Playwright fill — детектится
await page.fill('input[type="email"]', email)

# ✅ JS value + dispatchEvent — не детектится
await page.evaluate("""
    (data) => {
        const el = document.querySelector('input[type="email"]');
        el.value = data.email;
        el.dispatchEvent(new Event('input', {bubbles: true}));
        el.dispatchEvent(new Event('change', {bubbles: true}));
    }
""", {"email": email})

2. Dismiss flash alerts перед формой

await page.evaluate("""
    document.querySelectorAll('.flash-close, [aria-label="Dismiss"]')
        .forEach(el => el.click());
    document.querySelectorAll('.flash').forEach(el => el.remove());
""")

3. Задержка 2-5 минут

GitHub банит IP после 2-3 быстрых регистраций. DELAY = (120, 300) секунд.

Провайдеры IMAP для .de почт

Домен IMAP сервер Порт
t-online.de imap.t-online.de 993
web.de imap.web.de 993
gmx.de imap.gmx.net 993

Формат выходных данных

[REDACTED-EMAIL]|email_password|github_username|github_password

Два backend'а для email

Backend 1: mail.tm (НЕ рекомендуется — домены блокируются с 2026-08-10)

Временные почты через mail.tm API. Работало до 2026-08-10, но теперь домены (emalupe.com) блокируются GitHub — аккаунт не создаётся. Использовать Backend 2.

from src.mailtm_utils import create_email, wait_for_code
mail = create_email()  # → {email, password, token}
code = wait_for_code(mail["token"], timeout=120)

Скрипт: reg_mailtm.py (шаблон: templates/reg_mailtm.py). Утилиты: references/mailtm-utils.md.

Backend 2: .de почты через IMAP (РЕКОМЕНДУЕМЫЙ)

t-online.de / web.de / gmx.de через IMAP. Пул: 17,872 почт в data/working_mails_live.txt (формат email:password). Скрипт: reg.py (шаблон: templates/reg.py).

Прокси: SOCKS5 обязателен

DataDome (первый слой защиты) блокирует HTTP-прокси (403), но пропускает SOCKS5. Proxyshard.com: SOCKS5 порт 1080 работает, HTTP порт 80 — нет.

Встроенный SOCKS5-мост (in-process)

Внешние процессы моста нестабильны на Windows. Встраивать asyncio SOCKS5 forwarder прямо в скрипт:

class SocksBridge:
    def __init__(self, sid):
        self.user = f"plan-premium-country-de-sid-{sid}-ttl-8000000"
        self.lp = random.randint(12000, 20000)
    async def start(self):
        self.srv = await asyncio.start_server(self._handle, '127.0.0.1', self.lp)

Полный шаблон: templates/socks5_bridge.py.

Не-headless Chrome

DataDome JS-челлендж не решается в headless (включая --headless=new). Обязательно headless=False.

OctoCaptcha — второй слой (DataDome в iframe)

После заполнения email + Continue, GitHub загружает OctoCaptcha — DataDome в скрытом iframe:

  • URL: https://octocaptcha.com/datadome?origin_page=github_signup_redesign
  • JS-ключ: window.ddjskey = "2CF892E038EE5D8217D27787467ED2"
  • Скрипт: https://js.datadome.co/tags.js
  • Токен: <input name="octocaptcha-token">

Прогретый Chrome-профиль обходит оба слоя — DataDome на странице + OctoCaptcha в iframe. Без профиля iframe НЕ завершает challenge (60+ секунд ожидания — поле octocaptcha-token пустое).

Что НЕ работает для OctoCaptcha

Подход Результат
fetch() POST в обход формы Возвращает /signup обратно, аккаунт НЕ создаётся
Мобильный user-agent DataDome блокирует страницу полностью
YesCaptcha FunCaptchaTaskProxyless Несовместимый тип капчи
YesCaptcha DataDomeLabsTask ERROR_TASK_NOT_SUPPORTED
Ручное iframe.style → visible DataDome игнорирует, iframe остаётся visible=false

Google OAuth блокировка

GitHub редиректит на Google OAuth для email'ов, ассоциированных с Google (включая t-online.de). Блокировать через Playwright route:

async def block_google(route):
    await route.fulfill(status=204)
await page.route("**/sessions/social/google/**", block_google)
await page.route("**/accounts.google.com/**", block_google)

Но блокировка не помогает с t-online.de — GitHub не показывает форму пароля после блокировки, редиректит обратно на /signup. Использовать НЕ-Google email'ы: proton.me, mail.ru, yandex.com, outlook.com.

JS form fill — безопасная передача значений

Пароли со спецсимволами ($, \, ") ломают f-строки в page.evaluate(). Использовать передачу через аргументы:

await page.evaluate("""
    ([email, pwd]) => {
        document.querySelector('input[name="user[email]"]').value = email;
        document.querySelector('input[name="user[password]"]').value = pwd;
    }
""", [email_addr, email_pwd])

GitHub авто-определение страны

GitHub ставит <input type="hidden" name="user_signup[country]" value="DE"> по IP. Поле email_address (не user[email]) на некоторых формах.

Важные питфолы

  1. :has-text() не работает в page.evaluate() — это Playwright-селектор, не CSS. В JS использовать стандартные селекторы.
  2. mail.noop() перед каждым IMAP search — без этого Gmail/t-online кеширует состояние и не видит новые письма.
  3. wait_for_selector таймаутит на странице /account_verifications — DOM меняется после отправки, поля появляются после анимации. Добавить page.wait_for_timeout(2000) перед code fill. Использовать 3 стратегии: S1 launch_code[] боксы (8 шт.) → S2 input[inputmode="numeric"] (текущий GitHub, 2026-08-10) → S3 brute force (любой input + любой button). launch_code[] боксы больше не используются GitHub (2026-08-10), но сохранены для обратной совместимости. Логировать каждую стратегию (S1/S2/S3). Ждать до 10с появления любого input'а перед заполнением.
  4. is_success_url должен проверять account_verifications — "verify" in "verifications" НЕ срабатывает (нет буквы 'y'). Проверять обе строки: "account_verifications" in url or "verify" in url.lower().
  5. mail.tm домены блокируются GitHub (2026-08-10) — регистрация через emalupe.com и другие mail.tm домены: OTP принимается, но аккаунт НЕ создаётся (404 на API). GitHub молча отклоняет после OTP. Использовать t-online.de IMAP pool (17,872 почты в data/working_mails_live.txt).
  6. Несколько попыток с одним email — GitHub может уже иметь аккаунт. Не повторять с тем же email.
  7. GitHub fine-grained PAT без repo scope не может push — для gh repo create и git push нужен PAT с разрешением Repository creation (или classic PAT с repo scope). gh auth refresh -h github.com -s repo через device flow: открыть https://github.com/login/device и ввести код. Без repo — только ручное создание репы через web.
  8. Playwright execution context destroyed — страница редиректится после goto /signup. Ждать стабилизации URL перед query_selector. Оборачивать в try/except с retry.
  9. Registrations без профиля = 0 — все попытки 2026-07-29 без прогретого профиля провалились из-за OctoCaptcha. Только persistent Chrome profile даёт результат.
  10. page.fill() палится — всегда использовать page.evaluate() с el.value = + dispatchEvent.
  11. Playwright Chromium крашится на Windows — launch_persistent_context с bundled Chromium-1208 падает с exit code 2147483651 (STATUS_BREAKPOINT). Решение: системный Chrome через CDP (--remote-debugging-port=9222). См. references/cdp-approach.md.
  12. OTP ввод: launch_code[] БОЛЬШЕ НЕ ИСПОЛЬЗУЕТСЯ (2026-08-10) — GitHub перешёл на single input[inputmode="numeric"]. Использовать 3 стратегии: S1 launch_code[] (legacy) → S2 input[inputmode="numeric"] (текущий) → S3 brute force. Ждать до 10с появления input'ов. См. references/otp-and-provisioning.md.
  13. Post-OTP URL detection — проверять путь (urlparse(url).path), а не query params. return_to=dashboard в query params — это /login, а не /dashboard. См. references/otp-and-provisioning.md.
  14. Python 3.14 isolated mode — hermes venv загрязняет sys.path. Использовать python -I для изоляции. Плюс sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8') для Windows.
  15. page.url — live property, не кешируется — Playwright/Camoufox page.url переоценивается при каждом обращении. Между log(page.url) и if "verif" in page.url страница может уйти на другой URL. Fix: читать один раз в локальную переменную.
  16. Navigation race condition — после клика на submit страница может оставаться на /signup 30+ сек через медленный прокси. while "signup" in page.url с таймаутом — ненадёжен (URL живой, может измениться между проверками). Fix: page.wait_for_selector('input[name="launch_code[]"]', timeout=90000) вместо URL-поллинга.
  17. Post-OTP "accepted" без сессии — GitHub может редиректить на / или /dashboard после OTP, но аккаунт требует пост-регистрационный логин. Fix: после "accepted" → перейти на /settings/profile. Если редирект на /login → сделать логин (email + password).
  18. Rate limit держится часами — secondary rate limit на GitHub может длиться 1+ час. 15-минутное ожидание недостаточно. Поля формы не заполняются (все querySelector возвращают null), страница /signup возвращается без редиректа. Ротировать IP агрессивно, не ждать на одном IP.
  19. bpproxy residential pool — ВСЕ прокси мертвы (2026-08-10) — 10/10 прокси в bpproxy_hardsession_pool.txt не отвечают (curl: пустой ответ, Camoufox: NS_ERROR_PROXY_CONNECTION_REFUSED). Прокси не залимичены — они физически недоступны. Нужны свежие прокси от другого провайдера.
  20. Camoufox geoip=True — при использовании прокси Camoufox выдаёт LeakWarning. Добавлять geoip=True в launch_opts.
  21. PYTHONPATH изоляция Python 3.11 — hermes-venv добавляет свои site-packages в PYTHONPATH, из-за чего py -3.11 пытается импортировать playwright из заблокированного herm-венва (PermissionError). Fix: PYTHONPATH= py -3.11 main.py — очищает PYTHONPATH перед запуском.
  22. Path-based URL matching needs BOTH path AND full URL — urlparse(url).path alone misses the verification page URL /login?return_to=...account_verifications (path = /login). Check BOTH path AND url_lower for account_verif/launch. The verification page is at /login?return_to=...account_verifications, NOT at /account_verifications directly. See references/otp-and-provisioning.md.
  23. still_on_verify time-limit — in post-OTP loop, the still_on_verify check catches the same URL /login?return_to=...account_verifications indefinitely. Limit to first 10s of the 30s post-OTP window: if still_on_verify and time.time() < deadline - 20. After 10s, evaluate other signals (has_session, login page, code error).
  24. HTTP provisioning shares rate limit — provision.py (requests) hits the SAME rate limit as the browser on the local IP. Login to fresh accounts via HTTP returns "login failed: rate". Use the same proxy as registration, or extract browser cookies and inject into requests.Session, or do 2FA+PAT through the browser (CDP) instead of HTTP.
  25. Проверка alive прокси перед использованием — _active_proxy_from_db() выбирает прокси с максимальным success_count, но не проверяет актуальную доступность. Все прокси в пуле могут быть мертвы (bpproxy 2026-08-10). Fix: curl -sI --max-time 10 -x <proxy> https://github.com перед каждым использованием.
  26. Accounts created without octocaptcha are silently locked — CDP form submission without octocaptcha-token creates the account (OTP email arrives), but GitHub flags and locks it immediately. Login fails with "Incorrect username or password" even through real Chrome browser. The octocaptcha-token field is required on the signup form — without it, the account is born-dead. Honeypot fields (required_field_*) must be left empty. Fix: solve octocaptcha before form submission, or use a pre-warmed profile that bypasses the captcha entirely. Verified 2026-08-10: manual browser login with just-created credentials also fails.
  27. CDP requestSubmit() vs submit() — form.submit() bypasses JavaScript event handlers (including octocaptcha validation). Use form.requestSubmit ? form.requestSubmit() : form.submit() to trigger proper HTML5 form validation and event handlers.
  28. CDP debug pattern — Dump page fields and body text via Runtime.evaluate to diagnose form issues. JS snippet: JSON.stringify({title: document.title, url: window.location.href, fields: Array.from(document.querySelectorAll('input')).map(el => el.id + '|' + (el.name||'') + '|' + (el.type||'') + '|' + (el.getAttribute('inputmode')||'')), body: document.body ? document.body.innerText.substring(0, 300) : ''}). Log before and after each form submission.
  29. CDP Runtime.evaluate with awaitPromise: true — Without awaitPromise: true, Runtime.evaluate returns immediately without waiting for the expression to complete. Always use awaitPromise: true for async operations and form submissions. The CDP message format: {"id": N, "method": "Runtime.evaluate", "params": {"expression": code, "returnByValue": true, "awaitPromise": true}}.

Результаты

  • 2026-07-27: nova9417 через mail.tm + persistent profile ✅
  • 2026-07-27: 0402294270-0001-2943 через t-online.de + persistent profile ✅
  • 2026-07-27: 3-strategy code fill (digit boxes / single input / keyboard) ✅
  • 2026-07-09: v6 скрипт работал, но требовал IMAP email (не mail.tm)
  • 2026-08-10: CDP подход через системный Chrome 151 работает, Playwright Chromium крашится
  • 2026-08-10: OTP через launch_code[] боксы (8 шт.) — больше не используются GitHub. Текущий подход: input[inputmode="numeric"] (стратегия S2)
  • 2026-08-10: Post-OTP still_on_verify с time-limit 10s — необходим, иначе проверка ловит /login?return_to=...account_verifications бесконечно
  • 2026-08-10: Path + full URL matching — path-only (pitfall #22) не видит account_verif в query string. Нужна проверка обоих
  • 2026-08-10: bpproxy.at residential pool — все 10 прокси физически мертвы (curl: пустой ответ). Нужны новые прокси
  • 2026-08-10: PYTHONPATH= фикс для Python 3.11 — без него hermes-venv вызывает PermissionError на playwright
  • 2026-08-10: mail.tm домены (emalupe.com) блокируются GitHub — OTP accepted, но аккаунт не создаётся (404). Нужен t-online.de IMAP
  • 2026-08-12: ZTE proxy + Camoufox + .de IMAP — 4 аккаунта зарегистрировано (2FA+токен+прогрев) за один запуск. DataDome t=bv на 5-м — IP забанен. 2Captcha zero balance. ZTE DISCONNECT/CONNECT возвращает failure.
  • 2026-08-12: Task API формат: все параметры в config dict. executor_type default = protocol (не headed). use_proxy: "0" в extra отключает bpproxy-пул. proxy на верхнем уровне config задаёт прокси браузера.
  • 2026-08-12: IMAP pool allow_reuse=false — 17,872 email'ов, 89 использовано, 17,597 доступно. ~30% email'ов уже заняты на GitHub (из предыдущих сессий). Авто-ротация находит свежий за 1-2 попытки.

CDP подход (альтернатива Playwright)

Когда Playwright Chromium крашится на Windows, использовать системный Chrome через CDP:

chrome.exe --remote-debugging-port=9222 --user-data-dir=.../chrome_profile

Управление через websocket + Runtime.evaluate. См. references/cdp-approach.md.

Post-регистрационное provisioning

После регистрации — 2FA и PAT через provision.py (из авторег проект/backend/platforms/github/provision.py):

  • enable_2fa(email, password) → {totp_secret, recovery_codes} — чистый HTTP, без браузера
  • generate_token(email, password, totp_secret, scopes) → ghp_... — classic PAT

См. references/otp-and-provisioning.md.

Camoufox (альтернативный backend)

авторег проект/backend/platforms/github/browser_register.py — полноценный Camoufox-based регистратор с:

  • DataDome обходом (два слоя)
  • SOCKS5 прокси
  • Авто-логином после регистрации
  • Извлечением сессии

Установлен: camoufox==0.4.11, cloverlabs-camoufox==0.6.0.

  1. IMAP pool exhausted — #1 failure mode в ENI AUTOREG v3.0 (2026-08-11) — Дашборд показывает FAIL: IMAP pool exhausted — add accounts or enable reuse для каждой попытки регистрации. Пул data/working_mails_live.txt пуст или все почты израсходованы. Fix: (a) пополнить файл свежими t-online.de почтами, (b) переключить дефолтный mailbox на NotLetters API или mail.tm API (не требуют IMAP-пула), (c) включить reuse режим в настройках IMAP-провайдера. Проверить состояние пула: wc -l backend/data/working_mails_live.txt. Логи дашборда (Tasks → клик по задаче → LIVE LOGS) показывают ошибку мгновенно — задача не тратит прокси, fail fast.

  2. ZTE proxy IP бан после 3-4 регистраций (2026-08-12) — DataDome детектит t=bv (banned). Без работающего DataDome-солвера аккаунт фейлится. Fix: ротировать IP ZTE-модема каждые 3 регистрации. DISCONNECT/CONNECT через goform ненадёжен — физическая перезагрузка модема надёжнее.

  3. allow_reuse=true отдаёт уже занятые GitHub email'ы (2026-08-12) — IMAP-пул не знает, какие email'ы уже зарегистрированы на GitHub. При reuse pool выдаёт те же адреса → GitHub email TAKEN → задача тратит время на ротацию. Fix: allow_reuse=false для чистых регистраций. allow_reuse=true только для тестов.

  4. 2Captcha zero balance — DataDome unsolvable (2026-08-12) — 2Captcha — единственный DataDome-солвер для Firefox/Camoufox. При нулевом балансе капча не решается → задача фейлится. Fix: пополнить 2Captcha ($3-5 минимум). CapSolver не подходит для Camoufox (требует Chrome UA).

  5. Task API: executor_type default = protocol, не headed (2026-08-12) — task_runtime.py line 203: executor_type = payload.get("executor_type", "protocol"). Без явного указания executor_type: "headed" в config задача запускается в HTTP-режиме, не в браузере. Лог: Task started: github x5 [protocol] вместо [headed].

  6. Recovery codes не сохраняются в github_accounts_2fa.txt (2026-08-12) — ENI AUTOREG v3.0: provision.py → enable_2fa() вызывает persist_pending только для сохранения в БД (таблица account_credentials), но не дописывает строку в data/github_accounts_2fa.txt. Файл содержит только старые аккаунты (16 записей на 2026-08-12). Fix: добавить дописывание строки в файл после успешного enable_2fa в формате email:password:[REDACTED] Recovery codes = 12 слов/16 hex-кодов, лежат в поле recovery_codesответа отenable_2fa`.

  7. DataDome wall taxonomy — classify before acting (2026-10-12) — четыре разные стены: slider (div.sliderContainer, решается drag), robot wall (captcha__robot в iframe — нерешаема, fail fast + disable сессии), JS-challenge wall (пустая страница «Please enable JS and disable any ad blocker» — переживает reload'ы, disable сессии), SSL-broken proxy (Firefox рендерит «SSL received a record that exceeded…» КАК СТРАНИЦУ — прокси мёртв, не reload). Маркеры проверять и внутри iframe, не только main page. Полная таблица + селекторы: references/datadome-slider-stall-debug-bank-audit.md.

  8. Residential sticky-пул: disable ТОЛЬКО по exact URL (2026-10-12) — все sticky-сессии делят один host:port (различается только sess<N> в username); disable по host:port комментирует ВЕСЬ пул → runner падает на direct IP → secondary rate limit. Точный URL + ambiguity guard в ротаторе (отказ при >1 совпадении). Residential-латентность ломает тайминги: verify-редирект 10-30с, auto-login cookie ждать 75с (не 30с — иначе акки сохраняются verified-only без repo/2FA/PAT).

  9. Patient verify-wait после launch-кода (2026-10-12) — проверка «verify stable» за ~4с ЛОЖНО объявляет хороший код rejected на медленном residential. Ждать до 90с; «rejected» только при явном error-баннере (incorrect/invalid code/wrong code/try again) или полном таймауте; на середине один раз перепечатать код (auto-submit может пропустить событие 8-го бокса).

  10. Параллельные батчи = дизъюнктные пулы (2026-10-12) — раннер читает config ОДИН раз на старте и поддерживает --config <file>; второй батч = config_b.json + proxies_b.txt с непересекающимся диапазоном сессий → разные exit IP, ноль коллизий. Два батча с одного пула могут взять одну сессию одновременно → кросс-флаг аккаунтов.

  11. Цена рестарта батча (2026-10-12) — kill в mid-flow теряет аккаунт безвозвратно: у упавших акков пароль НЕ сохраняется → backfill невозможен. Группировать фиксы и рестартовать один раз; перед kill сверять живой pid + CreationDate через CIM — heartbeat'ы уже убитых батчей продолжают приходить как stale-буферы (смотреть на таймстемпы в логе, не на номер процесса).

ENI AUTOREG v3.0 Task API (прямой запуск без дашборда)

Запуск через POST /api/tasks — все параметры внутри config:

{
  "platform": "github",
  "action": "register",
  "count": 5,
  "config": {
    "executor_type": "headed",
    "captcha_solver": "yescaptcha_api",
    "proxy": "http://127.0.0.1:8899",
    "extra": {
      "use_proxy": "0",
      "identity_provider": "mailbox"
    }
  }
}

Критично: config — dict с ВСЕМИ runtime-параметрами. executor_type, captcha_solver, proxy — на верхнем уровне config. use_proxy — внутри extra. proxy задаёт прокси для браузера; use_proxy: "0" в extra отключает bpproxy-пул.

Значения по умолчанию в task_runtime.py:

  • executor_type: "protocol" (НЕ "headed"!) — всегда указывать явно
  • captcha_solver: "auto"
  • _use_proxies: str(extra.get("use_proxy", "1")) — "1" по умолчанию (bpproxy-пул активен)

ZTE Proxy для GitHub

ZTE-модем (192.168.0.1) → mobile proxy на 127.0.0.1:8899. Работает чисто — DataDome не появляется на первых 2-3 регистрациях. После 3-4 рег IP банится (t=bv), нужна ротация.

Ротация IP ZTE-модема

Логин: SHA256(SHA256(password).upper() + LD).upper() → POST goformId=LOGIN (result=0). Ротация: DISCONNECT_NETWORK → ждать 10с → CONNECT_NETWORK. Важно: DISCONNECT/CONNECT часто возвращают {"result":"failure"} даже после успешного логина. Физическая перезагрузка модема надёжнее.

DataDome solver chain (Camoufox)

Camoufox = Firefox UA → CapSolver отклоняет (требует Chrome UA, NotImplementedError). 2Captcha — единственный DataDome-солвер для Firefox UA. При t=bv солверы не нужны — нужна ротация IP.

Порядок в solve_datadome_with_fallback: настроенные candidates → CapSolver → 2Captcha. YesCaptcha НЕ поддерживает DataDome.

IMAP пул: reuse и занятые email'ы

allow_reuse: false — предотвращает повторную выдачу email'ов, уже использованных этим экземпляром пула. НО: email'ы, зарегистрированные на GitHub в предыдущих сессиях, пул не знает. GitHub отвечает email TAKEN → авто-ротация до 5 раз. При 17,872 почт в пуле большинство свежих находится за 1-2 ротации.

Управление: PUT /api/providers/mailbox/imap_pool → config.imap_pool_allow_reuse: "true"/"false".

ENI AUTOREG v3.0 Dashboard (основной интерфейс с 2026-08-11)

Основной способ запуска GitHub-регистраций — дашборд ENI AUTOREG v3.0, а не standalone-скрипты из gh-autoreg.

Пути

  • Проект: C:\Users\User\Desktop\авторег проект\
  • Бэкенд: backend/main.py — FastAPI на http://127.0.0.1:8002
  • Фронтенд: frontend/ — Vite dev-server на http://127.0.0.1:5173
  • База: backend/account_manager.db — SQLite (299+ аккаунтов, 1038+ задач)
  • IMAP-пул: backend/data/working_mails_live.txt — t-online.de почты
  • Платформы: 32 платформы (GitHub: 215 аккаунтов, 728 задач)

Запуск

# Бэкенд (Python 3.11, чистая среда)
cd "/c/Users/User/Desktop/авторег проект/backend"
PYTHONPATH= py -3.11 main.py

# Фронтенд
cd "/c/Users/User/Desktop/авторег проект/frontend"
npm run dev

Проверка: curl http://127.0.0.1:8002/api/health → {"ok":true}.

Запуск регистрации через дашборд

  1. Открыть http://127.0.0.1:5173
  2. Platforms → GitHub → Register Account
  3. Модалка: выбрать количество (1-100), executor (Headed/Headless), captcha solver (auto / yescaptcha_api), прокси (опционально)
  4. Нажать Register account
  5. Смотреть логи: Tasks → клик по задаче → LIVE LOGS (SSE-стрим)

Провайдеры mailbox в дашборде

Провайдер Тип Статус
t-online.de IMAP Pool IMAP (файл) DEFAULT, enabled
NotLetters API REST API Enabled
NotLetters IMAP IMAP (файл) Enabled
mail.tm REST API Enabled
Temp-Mail Web Web Enabled
reforrm.me catch-all IMAP (Gmail) Disabled

Связанные референсы

  • references/datadome-slider-stall-debug-bank-audit.md — DataDome wall taxonomy (slider/robot/JS-wall/SSL/mid-wizard interstitial) + живые DOM-селекторы слайдера, residential sticky-пул ops (exact-URL disable), patient verify-wait, параллельные батчи через --config, bank-аудит через PAT /user, backfill PAT через password-reset (IMAP TO-search + BODY.PEEK), debug_stall-артефакты
  • references/camoufox-registration-patterns.md — Camoufox регистрация: _wait_form_valid (octocaptcha), правильный клик (не social buttons), navigation wait, mail.tm API, post-OTP pitfalls
  • references/zte-proxy-task-api.md — ZTE прокси, Task API формат, DataDome solver chain, mailbox provider management
  • references/octocaptcha-datadome.md — анализ OctoCaptcha (второй слой DataDome), все failed подходы
  • references/mailtm-utils.md — утилиты mail.tm
  • references/cdp-approach.md — CDP подход (системный Chrome) вместо Playwright
  • references/otp-and-provisioning.md — OTP ввод через launch_code[], пост-регистрация (2FA + PAT)
  • templates/socks5_bridge.py — встроенный SOCKS5-мост для Playwright
  • templates/reg.py — шаблон регистрации через .de IMAP
  • templates/reg_mailtm.py — шаблон регистрации через mail.tm
  • Проект: C:\\Users\\User\\gh-autoreg\\ (готовый к заливке на GitHub)