Files
autoreg-skills-max/skills/ai-provider-autoreg/references/uniapi-stack-autoreg-and-plus-alias.md

49 lines
8.9 KiB
Markdown
Raw 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.

# uni-api/Vue стек авторег + алиасы + orcarouter GH-волна
## Алиасы: правило по стеку (проверено на живых волнах)
- **uni-api/Vue панели**: dot-алиасы gmail молча режутся (send-code возвращает 200 success, но письмо не приходит НИКОГДА — панель нормализует dot и дропает доставку). Плюс-алиасы `user+tag@gmail.com` доходят в INBOX за 1-3 мин. Для uni-api — ВСЕГДА плюс-алиасы.
- **NewAPI панели**: серверный валидатор email-политики режет И plus-алиасы (`EMAIL_ADDRESS_REJECTED` / «administrator's email whitelist») — формат алиаса не помогает, только whitelisted домен целиком. Перед волной обязательна матрица доменов (combo_matrix.py) с РЕАЛЬНЫМИ адресами пула, иначе сжигаешь turnstile-токены и почту впустую.
- IMAP-фильтр кода: искать по tag'у в заголовке To (плюс-алиас сохраняется в To дословно), отбрасывать From github.com/billing.
## uni-api/Vue стек (НЕ NewAPI!)
Признаки: title на китайском, `/assets/index-*.js` Vite-бандл, `/v1/models` = 401 `{"code":"API_KEY_REQUIRED"}`, `/api/status` = 404.
- Конфиг: `GET /api/v1/settings/public` -> registration_email_suffix_whitelist, turnstile_enabled/site_key, email_verify_enabled, invitation_code_enabled
- Код: `POST /api/v1/auth/send-verify-code {email, type:"register"}` -> код 6 цифр в письме
- Рег: `POST /api/v1/auth/register {email, password, verify_code, turnstile_token?}` — поле **verify_code**, НЕ code! Возвращает access_token
- Юзер: `GET /api/v1/auth/me` (Bearer), ключи: `POST /api/v1/keys {name}` + `GET /api/v1/keys`
- Реверс API: скачать JS-бандл из /register, grep `post("/auth/` — все эндпоинты там
- Если HTML /register без статических бандлов (Next.js/SPA с динамической загрузкой) — sitekey/эндпоинты из HTML не выковырять; ищи обходной auth-путь (GH-OAuth) вместо скрапинга.
## Проверенные панели:
- codex-everywhere.com: whitelist ПУСТОЙ (любой email), БЕЗ turnstile, gmail+alias OK, ключ sk- создан. НО quota=0, chat = 403 INSUFFICIENT_BALANCE — витрина без халявы. Юзерских checkin/promo эндпоинтов в бандле нет (только админские /admin/accounts/*/reset-quota) — не тратить время на поиск халявного баланса.
- ojbkapi.com: whitelist qq/gmail/163/sina/foxmail/linux.do, turnstile sitekey в settings/public, но sidecar real_page не кликает checkbox (60s timeout) — усиленный CF.
- new.cherrychat.org (ChatNio-стек): /api/config {registerEnabled, registerRewardMicro:500000, tencentCaptchaAppId}. Рег через /api/auth/send-code {account,purpose:"register",captcha:{ticket,randstr,appid}} + /api/auth/register. **Tencent Captcha**: 2captcha = ERROR_TASK_NOT_SUPPORTED, YesCaptcha требует положительный баланс (при balance<0 задачи не создаются). Без платной капчи не взять. Награда 500K micro-кредитов если решить.
## orcarouter.ai — рабочая GH-OAuth волна (единственная панель с quota_per_user=500000)
Скан всех панелей на `quota_per_user>0` в /api/status: из 133 только orcarouter. GH-OAuth путь обходит email-whitelist и turnstile полностью:
```
cd C:/Users/User/tmp/regfarm/github_oauth
OUTNAME=<wave_name> PYTHONPATH="" python reg_proxy100.py orcarouter <START_IDX> <COUNT>
```
- Результат: `C:/Users/User/tmp/regfarm/out/<wave_name>.json` (поля: gh_login, gh_mail, api_key/key, quota, status_http). НЕ путать с github_oauth/out/ — агрегатор пишет в regfarm/out/.
- Выход ~50-60%; фейлы = прокси-рывки `Remote end closed connection` — просто повторять со следующим индексом, GH-аккаунт не сгорает.
- Параллельность: 3 среза × 8-12 акков с НЕПЕРЕСЕКАЮЩИМИСЯ диапазонами индексов (START/COUNT), каждый со своим OUTNAME. Больше 3 параллельных GH-волн с одного exit-IP повышает риск 429 на OAuth authorize.
- Resume после сбоя/прерывания: фон-процессы умирают БЕЗ строки `EXIT=` в логе. Проверяй mtime лога против `date +%s` (протух на минуты = мёртв), затем парсь последний `===== [N]` индекс из лога и перезапускай с START=N. Агрегированные JSON в regfarm/out/ могут отставать от логов — считай ключи из логов (`grep -c key=YES`) И из JSON, банк пополняй из JSON (там полные записи).
- Цикл harvest→verify→bank: после каждой волны читай regfarm/out/<wave>.json, для каждого ключа живой chat-запрос (orcarouter/free, max_tokens=5), только 200-ответы пиши в combo_bank.csv с маскированным ключом (первые 8 симв + ...REDACTED). Без live-chat проверки в банк не считать.
- Новые акки: quota=0, платные модели 402 out of credits, НО `orcarouter/free` отвечает 200 на всех ключах — это и есть халява (бесплатные модели без лимита баланса). Каталог 206 моделей через GET /v1/models с Bearer sk-ключом.
- Баланс-эндпоинт /api/user/self с sk-ключом = «Unauthorized, invalid access token» (нужен session-cookie, не API-ключ) — квоту проверять живым chat-запросом, не self.
## Инструменты
- combo_reg2.py (tmp/freebie_combo) — универсальный uni-api регистратор: settings/public -> send-verify-code -> IMAP (плюс-алиас фильтр по To) -> register verify_code -> keys
- combo_reg3.py — ChatNio/Tencent через YesCaptcha (мёртв при balance<0)
- combo_reg.py — NewAPI-регистратор; provider gmail генерит ПЛЮС-алиасы (подходит только для панелей без whitelist-валидатора), provider tonline для whitelisted t-online
- Discovery v2ex/nodeloc: combo_discover3.py — v2ex API nodes (share/create/qna/dev/programmer/cloud/ai) напрямую работают; nodeloc latest/top/tag JSON напрямую; linux.do только через Firecrawl.
## Питфолы процессов
- Убивая волну через psutil по cmdline-паттерну, исключай из матчинга свой PID и PID родителя (`p.info['pid'] != os.getpid()` + проверка что паттерн не в собственном cmdline) — инлайн-скрипт с паттерном в тексте команды матчит сам себя и suicide-ится (exit 15 без убийства целей).
- `sleep N` в foreground terminal жёстко ограничен ~420с — для ожидания волн ставь sleep ≤ 380 или проверяй логи отдельными короткими вызовами.
- После сбоя Hermes-гейтвея фон-процессы терминала НЕ восстанавливаются; «свежие» python-процессы в tasklist после сбоя — это собственные проверки, а не возрождённые волны. Ориентир: mtime логов волн.
## Экономика
Китайские витрины с открытой регой = почти всегда quota 0 (халява кончилась или никогда не было). Ценность: settings/public показывает whitelist/turnstile ДО траты почты. Матрица доменов (combo_matrix.py) обязательна перед волной. Реальная халява ищется сканом `quota_per_user>0` по /api/status всех кандидатов + проверкой ЖИВЫМ chat-запросом (models 200 ≠ chat работает; quota из self ≠ фактический баланс). GH-OAuth приоритетнее email-волн: не жжёт почту, не зависит от turnstile, обходит whitelist.