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

50 lines
11 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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-эндпоинты заказа контекст-зависимы.