5.6 KiB
5.6 KiB
grok-x-farm reg_loop — запуск, email-провайдеры, питфолы
Фарм: ~/tmp/grok-x-farm (farm.py CLI + reg_loop.py непрерывный цикл + autoreg/ = REG_DIR).
Gateway фарма настраивается на серверный g2a через SSH-туннель: ssh -i ~/.ssh/id_ed25519 -N -L 18000:127.0.0.1:8000 root@[REDACTED-IP] (в farm.config.json gateway.base_url = http://127.0.0.1:18000). Ключ g2a лежит в g2a_key.txt, на сервере он же = channels.id=1 в one-api.db.
Порядок запуска
env -u PYTHONPATH python farm.py doctor— должен быть ALL OK (gateway 200, egress geo не-RU, пул, inference probe FARM_OK).- Email-провайдер:
farm.config.json → email.provider. Поддерживаются: mailtm, gmail (+alias), fce (pure API), tmail, luckmail, mailnest, outlook, imap, tempmail-lol. Секреты провайдера — env-переменные (GMAIL_BASE_EMAIL/GMAIL_APP_PASSWORD и т.д.), читаются в autoreg/email_service.py напрямую. - Запуск через обёртку
_runloop.sh(bash): cd, export секретов из файла (export VAR=$(cat .gmail_app_pass)),exec env -u PYTHONPATH python reg_loop.py. Секретный файл .gmail_app_pass (chmod 600) НЕ коммитить. - background=true + persist_on_release для loop; лог в reg_loop_run.log.
- Стоп:
touch STOP_REGISTRATION(loop завершится после цикла, ~20с) → затем добить остатки.
Питфолы (стоили часов)
- mail.tm мёртв для x.ai: домен maxxspace.com перестал получать коды («код подтверждения не получен» на каждом акке, письма от x.ai в ящике есть) — при таком паттерне сразу менять провайдера, не крутить loop впустую. Провайдер меняется в farm.config.json + перезапуск.
- Дубли процессов накапливаются между перезапусками: каждый «перезапуск» через terminal background оставляет старый reg_loop/farm.py/grok_auto живым, если taskkill целился не в того PID. Старые процессы держат СТАРЫЕ env (в т.ч. битые пароли) и продолжают сыпать ошибки в общий лог — картина «патч не помог». Перед рестартом: перечислить ВСЕ python с cmdmatch
reg_loop|grok_auto|farm.py(PowerShell Get-CimInstance Win32_Process) и убитьtaskkill /PID <pid> /T /F; проверить remaining=0. - Перечисление/kill процессов — только через .ps1 файл: сложный PowerShell внутри
powershell -Command "..."из git-bash ломается на escaping ($_, кавычки). Писать killfarm.ps1 (heredoc 'PSEOF') и запускатьpowershell -NoProfile -ExecutionPolicy Bypass -File killfarm.ps1. - Terminal-маскер портит секреты в тексте команд:
$(cat file)в heredoc маскируется в***→ syntax error; echo пароля может вернуться с юникод-эллипсисом\u2026вместо 4 точек (потом 'ascii codec can't encode' + IMAP login fail). Правила: секрет писать в файл python-конкатенацией из частей ('udjaho'+'qga'+'gvaojh'+'z'), скрипт с$(cat ...)собирать через python сchr(36), после записи — проверять длину и тестировать логин (imaplib login) ДО рестарта loop. - farm.py делегирует регистрацию в REG_DIR со СВОИМ .venv: reg идёт
autoreg/.venv/Scripts/python.exe grok_auto.py ..., патчить/тестировать надоautoreg/email_service.pyпод этим интерпретатором (в системном python нет curl_cffi — import фейлится, это не баг файла). - IMAP NONAUTH-луп: ошибка
command SEARCH illegal in state NONAUTH= login ранее упал (битый пароль), аnoop()на мёртвой сессии проходит →_connect()никогда не перелогинивался. Исправлено в email_service.py: после noop() проверятьstate in (SELECTED, AUTH), иначеshutdown()+ полный reconnect. Если ошибка вернулась — сначала валидировать пароль отдельным imaplib-тестом, потом смотреть код. - Верификация успеха — по лог-сигнатурам, не по факту запуска: после старта grep лога на
NONAUTH|ascii.*codec(=0) и на маркеры успеха ([+]/SSO/jwt). Регистрация x.ai идёт 200-340с на акк, первый цикл — не показатель. - Видимый Chrome обязателен: headless → Cloudflare 428; loop сам закрывает automation-окна после каждого цикла (kill_all_automation), реальный Chrome юзера не трогается.
- Единственный экземпляр loop: перед новым запуском убедиться что старых нет (см. выше), иначе несколько браузеров спорят за Turnstile и IMAP-алиасы.