Files
autoreg-skills-max/skills/ai-provider-autoreg/references/tokenharbor-keypool-429-diagnostics.md

4.8 KiB
Raw Permalink Blame History

TokenHarbor key-pool: формат, 429-диагностика, signup-статус

Операционные заметки по пулу TH-ключей для шлюза api.[REDACTED-NAME].com (one-api, VPS [REDACTED-IP], БД /opt/grok-gateway/new-api/one-api.db). Основной реger: th_tonline_claim.py (login t-online акков → verify → $5 claim → key → пуш). Skill th-autoreg user-owned — этот файл живёт здесь.

1. Формат tokenharbor_keys.txt — парсить поле, не строку

email | thk_live_<64 символа> | timestamp
email | thk_live_... | REVOKED | timestamp
  • Bearer с ЦЕЛОЙ строкой вместо ключа → обманчивый 401 Invalid or revoked API key (TH не различает «мусор» и «отозван»).
  • Перед любым тестом: сплит по |, взять поле с префиксом thk_live_, отфильтровать REVOKED и #-комментарии.
  • Ключ = thk_live_ + 64 символа [a-zA-Z0-9_-].

2. 429 «Hourly rate limit reached» — окно TH, не мёртвые ключи

Когда шлюз (сотни TH-каналов) выбивает часовой лимит free-модели, ВСЕ валидные live-ключи начинают отдавать 429 на прямых запросах к tokenharbor.ai. Лимит на модель/пул, НЕ на IP — повторяется с Windows и VPS одновременно.

Диагностика (2 минуты, без SSH):

  1. Прямой запрос валидным ключом на claude-haiku-5.5:free → 429 hourly.
  2. Тот же ключ на другой free-модели (deepseek-v4-flash) → если 200, ключи и роутинг ЖИВЫ, это модельное окно.
  3. Через шлюз https://api.[REDACTED-NAME].com/v1/chat/completions (токен в ~/tmp/.testkey) проверить обе модели: 429 на haiku + 200 на другой TH-free модели = подтверждение.

НЕ делать при таком 429: ротацию прокси (лимит не по IP), «починку» mapping в one-api.db, перезапуск реger'а. Ждать сброса часового окна.

Free-модели TH (из /v1/models): claude-haiku-5.5, mimo-v2.6-flash, mimo-v2.5, deepseek-v4.1-flash, deepseek-v4-flash. Остальные ~60 — платные. Старые акки: free allowance used, next period <дата>.

3. Signup-путь сломан на стороне TH (не капча)

  • /login?mode=signup: НЕТ видимого Turnstile ([data-sitekey], .cf-turnstile, window.turnstile, challenges.cloudflare — все пусты).
  • Форма сабмитится (React nativeSet + input[type="password"]), но сервер отвечает «We couldn't create your account right now» на ЛЮБЫЕ email — реальные из пула и фейковые gmx/t-online.
  • Вывод: капча-солверы (2captcha/sidecar) signup не чинят; блок серверный. Не тратить баланс солверов.
  • Рабочий путь пополнения пула: th_tonline_claim.py N — login уже существующих t-online аккаунтов (17k пул, письма доходят), claim $5, создание ключа, автопуш на шлюз.
  • Волна ~1 акк/мин; лог th_run_*.log; прогресс [N/200].

4. Синхронизация ключей в шлюз

  • th_sync_vps.py — пуш ключей в one-api.db (channels tokenharbor). Прогон даёт +N свежих каналов; после синка systemctl restart new-api.
  • Роутинг haiku: budsin-каналы с высоким priority и mapping claude-haiku-5.5→claude-haiku-4-5 подменяют модель — при жалобе «haiku отдаёт 4.5» первым делом проверить budsin в abilities/model_mapping и удалить его haiku-строки.
  • Проверка оригинальности ответа: id НЕ должен начинаться с fw- (fireworks-подмена), model в ответе = claude-haiku-5.5.

5. 2captcha для этого проекта (рабочий ключ в .env авторег-проекта, TWOCAPTCHA_KEY)

  • Баланс/задачи ТОЛЬКО POST https://api.2captcha.com/res.php с lowercase-параметрами; GET → ERROR_EMPTY_METHOD; домен 2captcha.com/res.php → 400 (Cloudflare).
  • Баланс приходит в поле request как строка.
  • Ключ из旧 записей памяти может быть опечаткой (ERROR_KEY_DOES_NOT_EXIST) — всегда валидировать getbalance перед волной.