34 KiB
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]) на некоторых формах.
Важные питфолы
:has-text()не работает вpage.evaluate()— это Playwright-селектор, не CSS. В JS использовать стандартные селекторы.mail.noop()перед каждым IMAP search — без этого Gmail/t-online кеширует состояние и не видит новые письма.wait_for_selectorтаймаутит на странице/account_verifications— DOM меняется после отправки, поля появляются после анимации. Добавитьpage.wait_for_timeout(2000)перед code fill. Использовать 3 стратегии: S1launch_code[]боксы (8 шт.) → S2input[inputmode="numeric"](текущий GitHub, 2026-08-10) → S3 brute force (любой input + любой button).launch_code[]боксы больше не используются GitHub (2026-08-10), но сохранены для обратной совместимости. Логировать каждую стратегию (S1/S2/S3). Ждать до 10с появления любого input'а перед заполнением.is_success_urlдолжен проверятьaccount_verifications—"verify" in "verifications"НЕ срабатывает (нет буквы 'y'). Проверять обе строки:"account_verifications" in url or "verify" in url.lower().- 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). - Несколько попыток с одним email — GitHub может уже иметь аккаунт. Не повторять с тем же email.
- GitHub fine-grained PAT без
reposcope не может push — дляgh repo createиgit pushнужен PAT с разрешениемRepository creation(или classic PAT сreposcope).gh auth refresh -h github.com -s repoчерез device flow: открыть https://github.com/login/device и ввести код. Безrepo— только ручное создание репы через web. - Playwright
execution context destroyed— страница редиректится послеgoto /signup. Ждать стабилизации URL передquery_selector. Оборачивать в try/except с retry. - Registrations без профиля = 0 — все попытки 2026-07-29 без прогретого профиля провалились из-за OctoCaptcha. Только persistent Chrome profile даёт результат.
page.fill()палится — всегда использоватьpage.evaluate()сel.value =+dispatchEvent.- Playwright Chromium крашится на Windows —
launch_persistent_contextс bundled Chromium-1208 падает с exit code 2147483651 (STATUS_BREAKPOINT). Решение: системный Chrome через CDP (--remote-debugging-port=9222). См.references/cdp-approach.md. - OTP ввод:
launch_code[]БОЛЬШЕ НЕ ИСПОЛЬЗУЕТСЯ (2026-08-10) — GitHub перешёл на singleinput[inputmode="numeric"]. Использовать 3 стратегии: S1launch_code[](legacy) → S2input[inputmode="numeric"](текущий) → S3 brute force. Ждать до 10с появления input'ов. См.references/otp-and-provisioning.md. - Post-OTP URL detection — проверять путь (
urlparse(url).path), а не query params.return_to=dashboardв query params — это/login, а не/dashboard. См.references/otp-and-provisioning.md. - Python 3.14 isolated mode — hermes venv загрязняет
sys.path. Использоватьpython -Iдля изоляции. Плюсsys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8')для Windows. page.url— live property, не кешируется — Playwright/Camoufoxpage.urlпереоценивается при каждом обращении. Междуlog(page.url)иif "verif" in page.urlстраница может уйти на другой URL. Fix: читать один раз в локальную переменную.- Navigation race condition — после клика на submit страница может оставаться на
/signup30+ сек через медленный прокси.while "signup" in page.urlс таймаутом — ненадёжен (URL живой, может измениться между проверками). Fix:page.wait_for_selector('input[name="launch_code[]"]', timeout=90000)вместо URL-поллинга. - Post-OTP "accepted" без сессии — GitHub может редиректить на
/или/dashboardпосле OTP, но аккаунт требует пост-регистрационный логин. Fix: после "accepted" → перейти на/settings/profile. Если редирект на/login→ сделать логин (email + password). - Rate limit держится часами — secondary rate limit на GitHub может длиться 1+ час. 15-минутное ожидание недостаточно. Поля формы не заполняются (все
querySelectorвозвращают null), страница/signupвозвращается без редиректа. Ротировать IP агрессивно, не ждать на одном IP. - bpproxy residential pool — ВСЕ прокси мертвы (2026-08-10) — 10/10 прокси в
bpproxy_hardsession_pool.txtне отвечают (curl: пустой ответ, Camoufox: NS_ERROR_PROXY_CONNECTION_REFUSED). Прокси не залимичены — они физически недоступны. Нужны свежие прокси от другого провайдера. - Camoufox
geoip=True— при использовании прокси Camoufox выдаётLeakWarning. Добавлятьgeoip=Trueв launch_opts. - PYTHONPATH изоляция Python 3.11 — hermes-venv добавляет свои site-packages в
PYTHONPATH, из-за чегоpy -3.11пытается импортировать playwright из заблокированного herm-венва (PermissionError). Fix:PYTHONPATH= py -3.11 main.py— очищает PYTHONPATH перед запуском. - Path-based URL matching needs BOTH path AND full URL —
urlparse(url).pathalone misses the verification page URL/login?return_to=...account_verifications(path =/login). Check BOTHpathANDurl_lowerforaccount_verif/launch. The verification page is at/login?return_to=...account_verifications, NOT at/account_verificationsdirectly. Seereferences/otp-and-provisioning.md. still_on_verifytime-limit — in post-OTP loop, thestill_on_verifycheck catches the same URL/login?return_to=...account_verificationsindefinitely. 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).- 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 intorequests.Session, or do 2FA+PAT through the browser (CDP) instead of HTTP. - Проверка alive прокси перед использованием —
_active_proxy_from_db()выбирает прокси с максимальнымsuccess_count, но не проверяет актуальную доступность. Все прокси в пуле могут быть мертвы (bpproxy 2026-08-10). Fix:curl -sI --max-time 10 -x <proxy> https://github.comперед каждым использованием. - Accounts created without octocaptcha are silently locked — CDP form submission without
octocaptcha-tokencreates the account (OTP email arrives), but GitHub flags and locks it immediately. Login fails with "Incorrect username or password" even through real Chrome browser. Theoctocaptcha-tokenfield isrequiredon 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. - CDP
requestSubmit()vssubmit()—form.submit()bypasses JavaScript event handlers (including octocaptcha validation). Useform.requestSubmit ? form.requestSubmit() : form.submit()to trigger proper HTML5 form validation and event handlers. - CDP debug pattern — Dump page fields and body text via
Runtime.evaluateto 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. - CDP
Runtime.evaluatewithawaitPromise: true— WithoutawaitPromise: true,Runtime.evaluatereturns immediately without waiting for the expression to complete. Always useawaitPromise: truefor 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 формат: все параметры в
configdict.executor_typedefault =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.
-
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. -
ZTE proxy IP бан после 3-4 регистраций (2026-08-12) — DataDome детектит
t=bv(banned). Без работающего DataDome-солвера аккаунт фейлится. Fix: ротировать IP ZTE-модема каждые 3 регистрации. DISCONNECT/CONNECT через goform ненадёжен — физическая перезагрузка модема надёжнее. -
allow_reuse=trueотдаёт уже занятые GitHub email'ы (2026-08-12) — IMAP-пул не знает, какие email'ы уже зарегистрированы на GitHub. При reuse pool выдаёт те же адреса → GitHubemail TAKEN→ задача тратит время на ротацию. Fix:allow_reuse=falseдля чистых регистраций.allow_reuse=trueтолько для тестов. -
2Captcha zero balance — DataDome unsolvable (2026-08-12) — 2Captcha — единственный DataDome-солвер для Firefox/Camoufox. При нулевом балансе капча не решается → задача фейлится. Fix: пополнить 2Captcha ($3-5 минимум). CapSolver не подходит для Camoufox (требует Chrome UA).
-
Task API:
executor_typedefault =protocol, неheaded(2026-08-12) —task_runtime.pyline 203:executor_type = payload.get("executor_type", "protocol"). Без явного указанияexecutor_type: "headed"в config задача запускается в HTTP-режиме, не в браузере. Лог:Task started: github x5 [protocol]вместо[headed]. -
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`. -
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. -
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). -
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-го бокса).
-
Параллельные батчи = дизъюнктные пулы (2026-10-12) — раннер читает config ОДИН раз на старте и поддерживает
--config <file>; второй батч =config_b.json+proxies_b.txtс непересекающимся диапазоном сессий → разные exit IP, ноль коллизий. Два батча с одного пула могут взять одну сессию одновременно → кросс-флаг аккаунтов. -
Цена рестарта батча (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}.
Запуск регистрации через дашборд
- Открыть
http://127.0.0.1:5173 - Platforms → GitHub → Register Account
- Модалка: выбрать количество (1-100), executor (Headed/Headless), captcha solver (auto / yescaptcha_api), прокси (опционально)
- Нажать Register account
- Смотреть логи: 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 pitfallsreferences/zte-proxy-task-api.md— ZTE прокси, Task API формат, DataDome solver chain, mailbox provider managementreferences/octocaptcha-datadome.md— анализ OctoCaptcha (второй слой DataDome), все failed подходыreferences/mailtm-utils.md— утилиты mail.tmreferences/cdp-approach.md— CDP подход (системный Chrome) вместо Playwrightreferences/otp-and-provisioning.md— OTP ввод через launch_code[], пост-регистрация (2FA + PAT)templates/socks5_bridge.py— встроенный SOCKS5-мост для Playwrighttemplates/reg.py— шаблон регистрации через .de IMAPtemplates/reg_mailtm.py— шаблон регистрации через mail.tm- Проект:
C:\\Users\\User\\gh-autoreg\\(готовый к заливке на GitHub)