11 KiB
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).
Питфолы (все проверены в бою)
-
mail.cx короткие local-parts → username-коллизии. mail.cx выдаёт 4-символьные local-parts (
kt78@...); username из них почти всегда занят. Паддируй local-part случайными alnum до ≥10 символов ПЕРЕД первой попыткой. -
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 страницы. -
2FA wizard держит невидимые otp-близнецы. На странице 2FA setup несколько
input[name='otp'];.first/:not([disabled])может зарезолвиться в невидимый → fill висит 'element is not visible' → stage fail. Итерируй кандидатов, выбирай visible+editable; фолбэк — JSvalue=+ dispatch input/change events на элемент сoffsetParent !== null. -
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.
-
Никогда два batch одновременно. Параллельные batch бьются за один exit-IP → DataDome-бан и потерянные акки; heartbeat'ы уже убитых процессов маскируют картину. Перед запуском перечисли python-процессы через PowerShell
Get-CimInstance Win32_Process+ фильтр CommandLine (tasklist/wmic с фильтрами ненадёжны под git-bash), убей ВСЕ main.py batch, оставь ровно один. -
Резики обязательны для массы. После DataDome-бана домашнего IP signup стабильно ловит challenge-loop; free HTTP-пул даёт ~30-50% выхода, residential с активным трафик-пакетом — 80%+. Дополнительно: на free-прокси ~половина свежих акков сразу улетает в
/suspendedпосле signup — помечай такие строки маркером----SUSPENDED(проверка"suspended" in page.urlв точке auto-login-fail), иначе банк считается живым неверно. -
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 '')». -
PAT
ghp_...тоже в HTML-атрибутах. Токен рендерится в<code>/clipboard-value и не попадает в innerText; сканируй page.content() и добавь ретрай через ~5s (страница токена догоняет рендер). Без этого PAT-стадия стабильно возвращает пусто. -
Скачивание recovery-кодов вешает Camoufox-визард. Firefox download-handler периодически виснет на «Download recovery codes». Если коды уже scraped из DOM — пропускай
expect_downloadцеликом; скачивание только как фолбэк при пустом recovery. -
Прокси-пул протухает за часы. Перед массовым прогоном перечитай весь proxies.txt параллельным live-тестом (ThreadPoolExecutor ~40 воркеров, GET https://github.com/login, timeout 8s) и перезапиши файл только живыми — мёртвые прокси сжигают по 5+ минут на акк (connect timeout + DataDome-лупы) ещё до signup.
-
Патчи runner.py не применяются к живому batch. Python держит старый код в памяти — после любой правки убей batch и запусти заново, иначе «фикс» не проявится и ты будешь дебажить уже исправленное.
-
Kill-фильтр по пути проекта ненадёжен. Batch, запущенный из своего cwd, имеет в CommandLine только
python.exe main.py --count Nбез имени проекта — фильтр по 'gh-regkit' пропускает его. Фильтруй поmain.py+--count; после kill ПЕРЕЧитай список процессов и запускай новый batch только при пустом списке (зомби-дубли переживают один taskkill и дают suspended-акки). -
Стадии profile/repo выключены в config.json по умолчанию.
complete_profile,set_profile_status,create_repo= False даже когда код стадий есть; для прогрева акка включай их явно в config.json перед batch. -
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. -
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']. -
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-редирект, а не форму токена. -
Рега стабильна даже когда стейджи падают. Выход 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-эндпоинты заказа контекст-зависимы.