4.2 KiB
4.2 KiB
Custom-OAuth New-API панели (native github_oauth=false, но custom-провайдер жив)
Некоторые New-API форки выставляют в /api/status github_oauth: false, НО регистрируют через custom_oauth_providers — отдельный flow с flow_token. Не списывать панель как «OAuth dead» по флагу github_oauth; проверять custom-провайдеры в status и пробовать flow.
Flow (проверено на beatapi.io, 2026-10-13)
POST /api/oauth/state {provider:'github', intent:'login', aff:'<code>'}→data.flow_token(МОЖЕТ быть вложен вdataкак dict ИЛИ как строка — парсить оба варианта).- GH authorize с
state=<flow_token>; если GH-акк УЖЕ авторизовал это OAuth-приложение, страница не редиректит, а отдаёт HTMLOAuth application authorizedс meta-refresh — code+state лежат В ТЕЛЕ, regexoauth/github\?code=([a-f0-9]{16,})[^"']*state=([A-Za-z0-9_\-]+). GET /api/oauth/github?code=..&state=..→data.access_token+data.session.sid(sid тоже может быть вложен:d.session_id or d.session.sid).- Email-whitelist панели применяется И к OAuth: GH-акк обязан иметь VERIFIED primary email whitelist-домена (gmail/163/qq/icloud/yahoo/foxmail у BeatAPI). Сортировать пул gmail-first; hotmail/outlook-когорта = гарантированный FAIL, не жечь на них крит-запросы.
- Flagged/suspended GH-акки на authorize редиректят на /dashboard без code («redir no code») — следующий акк.
Dashboard API (new-api-общее)
POST /api/token/— trailing slash ОБЯЗАТЕЛЕН (без него 307 с пустым телом).- Header
New-Api-User: <uid>обязателен на token-эндпоинтах. - Полный ключ:
POST /api/token/{tid}/key(GET = 404); в списках ключ маскирован звёздочками — если в ответе*, ключ не получен. - При 429 на /key акк не теряет токен — сохранить PARTIAL (access_token без api_key) и дозабрать позже отдельным repair-прогоном.
Relay /v1
- Cloudflare 1010 на дефолтном urllib UA — на ВСЕ /v1-запросы ставить браузерный User-Agent.
- Диагноз нулевой квоты: 402 «Insufficient balance» на платных моделях;
-free-суффикс модели при quota=0 даёт 200, а 429 «Rate limit exceeded: this model» = free-модель ДОСТУПНА, просто 1 req/min. Нуль-квота ≠ мусорный акк, если есть free-модели.
Лимитер и волны
- Крит-эндпоинты (oauth/state, exchange, token) под лимитером ~20 запросов/20мин на IP → реально ~4 акка/окно. Обработка: на 429 sleep 600 и продолжать (не падать), pacing 75-110с между акками.
- Большую волну НЕ запускать параллельно с текущей (общий лимитер + race на used-файл). Паттерн chain: скрипт ждёт
WAVE_EXITв логе предыдущей волны, затем стартует следующую + repair. Запускать background + persist_on_release. - Signup-бонус ($/квота) может выдаваться только ПЕРВОМУ акку с IP (антифрод) — не закладывать бонус в ценность волны; ценность = free-модели + aff.
Windows-питфол диагностики
- CIM-запрос
CommandLine -match '<script>'матчит САМ ПРОБЕ-ПРОЦЕСС, если строка поиска есть в его командной строке (ложный «волна жива»). Искать толькоpython.exeс ОТНОСИТЕЛЬНЫМ путём скрипта или исключать собственный pid.