Files
autoreg-skills-max/skills/ai-provider-autoreg/references/gh-regkit-prime-pitfalls.md

11 KiB
Raw Blame History

gh-regkit-prime — GitHub mass autoreg (Camoufox + mail.cx)

Вторая рабочая реализация GitHub-авторега: локально C:\Users\User\Desktop\_PROJECTS\gh-regkit-prime, репа gbonnet65923/gh-regkit-prime (пуш через Git Data API — локальный git-transport на машине сломан). Дашборд http://127.0.0.1:8010 (uvicorn web.server:app). Batch: PYTHONPATH="" python311 main.py --count N. Конфиг config.json: proxy_file=proxies.txt, proxy_hard_block_retries=3, proxy_rate_limit_retries=2, fresh_profile=true, create_pat, enable_2fa. Выход: accounts/github_accounts_<ts>.txt, формат email----password----username----totp_secret----has_recovery----pat.

Стек: multi-step signup wizard + warm-up dwell + mail.cx (домены uqu.me/ddker.com/9k3r.com, mailbox implicit — localpart генерится на лету) + Arkose FunCaptcha multi-LLM voting (локальный qwen3-vl через dashscope-прокси :16432, $0).

Питфолы (все проверены в бою)

  1. mail.cx короткие local-parts → username-коллизии. mail.cx выдаёт 4-символьные local-parts (kt78@...); username из них почти всегда занят. Паддируй local-part случайными alnum до ≥10 символов ПЕРЕД первой попыткой.

  2. Disabled 'Create account' может означать username taken. Занятый username держит submit-кнопку disabled вечно; общая ошибка «validation pending» сжигает page-reload'ы с теми же данными. Перед raise проверяй username-error alert (auto-check [role='alert'], текст 'not available'); при taken — новый random-суффикс 4-5 цифр и continue БЕЗ reload страницы.

  3. 2FA wizard держит невидимые otp-близнецы. На странице 2FA setup несколько input[name='otp']; .first/:not([disabled]) может зарезолвиться в невидимый → fill висит 'element is not visible' → stage fail. Итерируй кандидатов, выбирай visible+editable; фолбэк — JS value= + dispatch input/change events на элемент с offsetParent !== null.

  4. Salvage аккаунта при post-login краше. Camoufox driver-краш ('Connection closed while reading from the driver') на стадии 2FA/PAT выбрасывал полностью верифицированный аккаунт. Ставь checkpoint-флаг в shared dict сразу после подтверждения logged_in cookie; во внешнем except при установленном флаге сохраняй email/password/username до return None.

  5. Никогда два batch одновременно. Параллельные batch бьются за один exit-IP → DataDome-бан и потерянные акки; heartbeat'ы уже убитых процессов маскируют картину. Перед запуском перечисли python-процессы через PowerShell Get-CimInstance Win32_Process + фильтр CommandLine (tasklist/wmic с фильтрами ненадёжны под git-bash), убей ВСЕ main.py batch, оставь ровно один.

  6. Резики обязательны для массы. После DataDome-бана домашнего IP signup стабильно ловит challenge-loop; free HTTP-пул даёт ~30-50% выхода, residential с активным трафик-пакетом — 80%+. Дополнительно: на free-прокси ~половина свежих акков сразу улетает в /suspended после signup — помечай такие строки маркером ----SUSPENDED (проверка "suspended" in page.url в точке auto-login-fail), иначе банк считается живым неверно.

  7. TOTP secret живёт в otpauth-URI, не в innerText. На странице 2FA-setup секрет часто отсутствует в видимом тексте; парси page.content() регекспом otpauth(%3A%2F%2F|://)totp[^"']*secret(%3D|=)([A-Z2-7]{16,32}) ПЕРЕД generic base32-фолбэком — иначе «TOTP secret not found (got '')».

  8. PAT ghp_... тоже в HTML-атрибутах. Токен рендерится в <code>/clipboard-value и не попадает в innerText; сканируй page.content() и добавь ретрай через ~5s (страница токена догоняет рендер). Без этого PAT-стадия стабильно возвращает пусто.

  9. Скачивание recovery-кодов вешает Camoufox-визард. Firefox download-handler периодически виснет на «Download recovery codes». Если коды уже scraped из DOM — пропускай expect_download целиком; скачивание только как фолбэк при пустом recovery.

  10. Прокси-пул протухает за часы. Перед массовым прогоном перечитай весь proxies.txt параллельным live-тестом (ThreadPoolExecutor ~40 воркеров, GET https://github.com/login, timeout 8s) и перезапиши файл только живыми — мёртвые прокси сжигают по 5+ минут на акк (connect timeout + DataDome-лупы) ещё до signup.

  11. Патчи runner.py не применяются к живому batch. Python держит старый код в памяти — после любой правки убей batch и запусти заново, иначе «фикс» не проявится и ты будешь дебажить уже исправленное.

  12. Kill-фильтр по пути проекта ненадёжен. Batch, запущенный из своего cwd, имеет в CommandLine только python.exe main.py --count N без имени проекта — фильтр по 'gh-regkit' пропускает его. Фильтруй по main.py + --count; после kill ПЕРЕЧитай список процессов и запускай новый batch только при пустом списке (зомби-дубли переживают один taskkill и дают suspended-акки).

  13. Стадии profile/repo выключены в config.json по умолчанию. complete_profile, set_profile_status, create_repo = False даже когда код стадий есть; для прогрева акка включай их явно в config.json перед batch.

  14. Settings-страницы свежих акков редиректят на ПОЛНУЮ форму логина, не sudo-confirm. GitHub для подозрительных/свежих сессий кидает /settings/* → /login?return_to=... с полями #login_field + #password (не #sudo_login_password). Гейт-фикс должен заполнять ОБА поля (email приоритетнее username — при «Authentication failed» ретрай с username) и после прохождения landing будет /session или /dashboard — ОБЯЗАТЕЛЬНО повторный goto на исходный settings-URL.

  15. Submit гейта — только через input[name='commit'] внутри формы. Generic-клик по button[type='submit']/видимой кнопке попадает в WebAuthn/passkey-виджет («Retry passkey» на странице) → GitHub отвечает «Authentication failed» даже с верными кредами. Порядок селекторов: input[name='commit'][type='submit'] → form input[name='commit'] → submit-кнопка; фолбэк — JS-клик по commit внутри form#login-form, form[action*='session'].

  16. Device-verification луп = потолок стейджей на flagged IP. Гейт может ПРОЙТИ, но GitHub снова кидает на /login для каждой следующей чувствительной страницы (return_to=/settings/security, /settings/tokens/new, /new) — это device-activation стена, 2FA/PAT/repo на таком акке невозможны в принципе. Детектируй маркеры «unusual»/«device activation» в тексте страницы и скипай стадию сразу (return), не жги 5 минут на ретраи; акк всё равно сохраняй. Отличить стену от бага кода помогает debug-дамп: на фейле стадии пиши page.content() в accounts/<stage>_debug_<ts>.html и смотри <title> + текст — title «Sign in to GitHub» на дампе PAT означает login-редирект, а не форму токена.

  17. Рега стабильна даже когда стейджи падают. Выход signup+verify+login на live-тестированном free-пуле ~65-70%; узкое место — не регистрация, а post-login стейджи (гейты/суспенды). Не переписывай signup-флоу из-за пустых колонок 2FA/PAT — сначала прочитай debug-дамп стейджа.

1024proxy (residential) — специфика

  • Pricing-страница CF-блокирует домашний IP — открывай через Camoufox с любым рабочим free-прокси (proxy={"server":...}).
  • Цены: Dynamic Residential Traffic 2GB=$2.40 ($1.20/GB), от 200GB $0.70/GB, 1TB $490 ($0.49/GB); registration-линии от $0.027/IP; static ISP $0.08/IP/день.
  • Gateway us.1024proxy.io:3000 возвращает 407 Proxy Authentication Required / Insufficient traffic, пока не КУПЛЕН traffic-пакет. Баланс кошелька сам по себе НЕ авторизует трафик; IP-whitelist тоже не помогает без пакета.
  • White API https://white.1024proxy.com/white/api?region=US&num=N&time=10&format=0&type=json работает только из браузерного контекста дашборда (cookie zero_sid); прямой fetch из Python — CORS/403.
  • Покупка пакета — через дашборд UI (/getporxy/traffic), API-эндпоинты заказа контекст-зависимы.