autoreg-skills-max: initial public release (restored, redacted, hardened)

This commit is contained in:
baradok60915d52e8425
2026-10-20 02:16:32 +03:00
commit f58eafeb48
565 changed files with 60064 additions and 0 deletions

View File

@@ -0,0 +1,28 @@
# 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)
1. `POST /api/oauth/state {provider:'github', intent:'login', aff:'<code>'}` → `data.flow_token` (МОЖЕТ быть вложен в `data` как dict ИЛИ как строка — парсить оба варианта).
2. GH authorize с `state=<flow_token>`; если GH-акк УЖЕ авторизовал это OAuth-приложение, страница не редиректит, а отдаёт HTML `OAuth application authorized` с meta-refresh — code+state лежат В ТЕЛЕ, regex `oauth/github\?code=([a-f0-9]{16,})[^"']*state=([A-Za-z0-9_\-]+)`.
3. `GET /api/oauth/github?code=..&state=..` → `data.access_token` + `data.session.sid` (sid тоже может быть вложен: `d.session_id or d.session.sid`).
4. Email-whitelist панели применяется И к OAuth: GH-акк обязан иметь VERIFIED primary email whitelist-домена (gmail/163/qq/icloud/yahoo/foxmail у BeatAPI). Сортировать пул gmail-first; hotmail/outlook-когорта = гарантированный FAIL, не жечь на них крит-запросы.
5. 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.

View File

@@ -0,0 +1,49 @@
# Прокси-ротация для GH-OAuth волн (recipe)
Рабочий `proxy_patch.py`: `C:/Users/User/tmp/regfarm/github_oauth/proxy_patch.py` (import + `apply()` в начале раннера, ДО `import reg_http`).
## Архитектура (проверено)
1. **Панельный HTTP (`newapi_lib.Panel`) — БЕЗ прокси, bind=False.** Прокси-IP банятся панелями 403; панель сама держит только свой rate-limit.
2. **GitHub (`gh_http.GHSession`) — через прокси.** GitHub 429 привязан к IP.
3. **Авто-ротация в GHSession**: обёртка `_req` — при `st == -1` (URLError/таймаут) до 3 ретраев; на каждом ретрае `next(itertools.cycle(live))` и ПОЛНАЯ пересборка opener:
```
[ProxyHandler({http:p, https:p}), HTTPSHandler(context=ctx), HTTPHandler(), NoRedirect, HTTPCookieProcessor(self.jar)]
```
CookieJar сохраняется (сессия GitHub продолжается), меняются только ProxyHandler+addheaders. Без пересборки opener молча держит мёртвый прокси → волна 0/150.
## Подготовка пула перед КАЖДОЙ волной
```python
# 1) alive-строки из БД бота
con = sqlite3.connect('C:/Users/User/Desktop/proxy_bot/proxies.db')
allp = [r[0] for r in con.execute("select proxy from pool where alive=1")]
# 2) re-verify ИМЕННО на github.com (не ip-api!) — ThreadPoolExecutor(40)
# GET https://github.com через прокси, timeout 12 → status 200 = good
# 3) json.dump(good, '_gh_proxies.json')
```
Порядок величин: БД 152 alive → ~11 живых для GitHub. `alive=1` протухает за дни.
## Диагностика мёртвой волны (0 ключей)
- `grep -E "!" _run_X.log | sort | uniq -c` — массовый `state fail: POST 429` = GitHub rate-limit; `URLError ... 10060` = мёртвый прокси без ротации.
- Ручной зонд панели: POST `/api/user/register` direct vs через 3-4 прокси — 403 = панель банит прокси-IP, 429 = панель банит домашний IP, 200 = путь свободен.
## Убийство зомби-волн (без taskkill /IM python.exe)
```python
import subprocess
ps = r'''
Get-CimInstance Win32_Process | Where-Object { $_.CommandLine -match 'reg_proxy100' } |
ForEach-Object { Stop-Process -Id $_.ProcessId -Force; "killed $($_.ProcessId)" }
'''
subprocess.run(['powershell','-NoProfile','-Command',ps], capture_output=True, text=True)
```
Питфолы: wmic отсутствует в hermes-python; `$_`/`$(...)` внутри двойных кавычек из git-bash съедаются — powershell-скрипт только в python-heredoc с r''' строкой.
## Per-panel индексы акков
```python
used = {} # panel -> set(gh_login) из всех out/*.json где есть api_key
# idx = [i for i,a in enumerate(pool) if a['login'] not in used.get(panel,set())][:150]
# → _idx2_<panel>.txt
```
GitHub OAuth-приложения панелей независимы — один акк годен на каждой панели по разу. Глобальный «fresh» индекс занижает доступный пул.
## Очередь волн (сериализация обязательна)
`run(){ OUTNAME=out_${P}_big2 python reg_proxy100.py $P 0 0 $(cat _idx2_$P.txt) > _run_${P}_big2.log 2>&1; sleep 90-120; }` — фоновый background=true, persist_on_release. 2+ параллельные волны = глобальный GitHub 429 (E45002).