Skip to content
This repository was archived by the owner on Oct 1, 2026. It is now read-only.

Фикс медленной проверки балансов: порт решения инцидента 429 из DeBankChecker - #2

Merged
privatekey7 merged 1 commit into
masterfrom
fix/rabby-antibot-port
Aug 16, 2026
Merged

privatekey7 merged 1 commit into
masterfrom
fix/rabby-antibot-port

Conversation

@privatekey7

@privatekey7 privatekey7 commented Aug 16, 2026 •

Copy link
Copy Markdown
Owner

Причина медленной проверки

Фиксы из DeBankChecker PR #5 (разбор: docs/incident-429-antibot.md) не были перенесены в DeBank-Pro. Клиент Rabby отправлял старые заголовки идентификации, анти-бот отвечал фейковым 429 с пустым телом на token_list, каждая попытка падала, и getWalletData гонял до 24 ретраев на кошелёк.

Что изменено

  • Заголовки байт-в-байт как клиент Rabby (по HAR расширения): подписные заголовки lowercase, x-api-time = время выдачи ключа (apiKeyInitTime: 1762656362 из HAR), x-version: 0.94.2, браузерные accept-language/dnt/priority/sec-fetch-*.
  • Общий на процесс магазин ключа: x-set-api-key читается и из ошибочных ответов (до выброса ошибки), новый клиент продолжает с последнего выданного ключа, а не с init-ного.
  • Токены одним запросом /v1/user/cache_token_list вместо 11–41 по-сетевого token_list; фолбэк на по-сетевой путь при сбое; пустой chain_list → запросы токенов не выполняются вовсе; клиентская фильтрация скам/не-core токенов.
  • Вырезана ветка DeBank (debankService.ts, BALANCE_SOURCE, API_KEY_INIT, DeBankApiResponse) — итог и так всегда брался из авторитетного агрегата total_balance.
  • Диагностические утилиты backend/scripts/smokeRabby.ts / smokeService.ts (инструментирование границы при будущих инцидентах).

Валидация

Проверка Результат
tsc сборка чисто, dist пересобран
Тесты (cd backend && npm test) 30/30, добавлены: cache_token_list, фолбэк, пустой кошелёк, фильтрация скама, заголовки по HAR, ротация ключа через 429
Live smoke клиента (реальный прокси) 3/3 запроса, ни одного 429, 197 токенов одним cache_token_list
Live e2e RabbyService (5 кошельков, 5 прокси) 5/5 OK за 2.3с, суммы $0.18–$270 совпадают с санити-диапазоном из инцидента

Осознанные отклонения от Python-эталона

  • Node не умеет имперсонировать TLS-фингерпринт (curl_cffi) — компенсируется Chrome UA, live-тест подтвердил прохождение анти-бота.
  • collection_list (NFT) не запрашивается: в модели данных и UI DeBank-Pro для NFT нет места.

…kChecker (PR #5)

- Заголовки Rabby-клиента байт-в-байт как расширение (lowercase x-api-*,
  x-api-time = время выдачи ключа, x-version 0.94.2, sec-fetch-*/accept-language):
  анти-бот больше не душит token_list фейковым 429
- Общий на процесс магазин ключа: x-set-api-key читается и из ошибочных
  ответов, ротация не теряется между попытками
- Токены одним запросом /v1/user/cache_token_list (фолбэк — по-сетевой
  token_list); пустой кошелёк не запрашивает токены вовсе
- Вырезана ветка DeBank (debankService, BALANCE_SOURCE, API_KEY_INIT):
  итог и так брался из авторитетного total_balance
- Тесты 30/30; live-проверка: 5 кошельков за 2.3с без единого 429
@privatekey7
privatekey7 merged commit 6253986 into master Aug 16, 2026
@privatekey7
privatekey7 deleted the fix/rabby-antibot-port branch August 16, 2026 22:38
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant