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

About

Async CLI wallet checker for DeFi assets via DeBank API. Proxy rotation, rate limiting, cooldown handling, CSV/JSON export.

Topics

Resources

Stars

7 stars

Watchers

0 watching

Forks

Repository files navigation

DeBank Balance Checker

CI

CLI‑утилита на Python для массовой проверки кошельков через Rabby API с независимой on-chain проверкой (Tokens + DeFi + NFT) с экспортом результатов (Excel / CSV / JSON).

TG: https://t.me/privatekey_ai


Возможности

  • Массовая проверка списка адресов из wallets.txt
  • Защита от фантомных балансов: итог собирается только из проверенных компонентов (on-chain, нативные API), каждый кошелёк подтверждается двумя независимыми выборками
  • Скорость: 20–30 с на 245 кошельков через 100 прокси (см. «Скорость»)
  • Прокси‑ротация + rate limiting / cooldown, мёртвые прокси отсеиваются при старте
  • Экспорт:
    • Excel (.xlsx)
    • CSV
    • JSON
  • Фильтры экспорта по сетям/токенам/NFT/протоколам (в меню после проверки)

Требования

  • Python 3.9+ (рекомендуется 3.11)
  • Windows / macOS / Linux

Зависимости перечислены в requirements.txt (ключевые: curl_cffi, openpyxl, questionary, colorama).


Установка

В папке проекта:

python -m venv .venv

Windows PowerShell:

.venv\Scripts\Activate.ps1

Дальше:

pip install -r requirements.txt

Подготовка файлов

wallets.txt

  • Один адрес на строку
  • Пустые строки игнорируются
  • Строки, начинающиеся с #, считаются комментариями

Пример:

# my wallets
0x0000000000000000000000000000000000000000
0x1111111111111111111111111111111111111111

proxy.txt (обязательно)

Прокси обязательны: при пустом proxy.txt программа завершится с ошибкой.

Поддерживаемые форматы строк:

  • ip:port
  • ip:port:login:password

Пример:

127.0.0.1:8080
10.10.10.10:3128:user:pass

Запуск

python main.py

Поток работы:

  1. Прокси проходят быструю предпроверку (мёртвые — 407 — исключаются)
  2. Запускается проверка всех кошельков, печатается прогресс‑бар
  3. После завершения печатается итог и открывается интерактивное меню экспорта
  4. Вы выбираете формат (Excel / CSV / JSON)
  5. Файлы сохраняются в папку Results/

NFT в сумму не входят и догружаются в фоне, пока вы работаете с меню. Ждать их программа будет только для экспорта с NFT (пункты 5, 6, 7 и 11) — обычно к этому моменту они уже готовы. Остальные экспорты идут сразу. Колонка chains содержит сети с балансом (токены и DeFi); сети NFT — на листе NFT.


Результаты

Вывод сохраняется в:

  • Results/

Файлы именуются с учётом выбранного экспорта и времени запуска.


Источник балансов: Rabby API + независимая проверка

Данные получаются через Rabby API (api.rabby.io), но итог никогда не берётся из агрегата total_usd_value. С 11.09.2026 бэкенд Rabby для части адресов возвращает чужие данные (расследование — docs/PHANTOM_BALANCES.md):

  • /v1/user/total_balance — агрегат с суммами другого кошелька (одни и те же значения у разных адресов, «липнут» минуты-часы);
  • /v1/user/complex_app_list — случайные app-chain позиции (Hyperliquid, Lighter, Polymarket…) с нашим user_addr, но чужими суммами;
  • /v1/user/token_list и иногда /v1/user/cache_token_list — отдельные чужие токены.

Поэтому баланс собирается из компонентов, каждый из которых проверяется:

Компонент Источник Проверка
Токены кошелька cache_token_list (core, не скам) on-chain: eth_getBalance / balanceOf через публичные RPC (api/onchain.py); фантом (0 на цепочке) отбрасывается, количество исправляется по сети. Токен ≥ $0.5 без on-chain подтверждения → выборка не засчитывается
EVM DeFi-позиции complex_app_list (позиции с chain) пересчёт по asset_token_list, min(api, recalc)
App-chain позиции нативные API Hyperliquid / Lighter / Polymarket (proxy-кошелёк через Safe-фабрику на Polygon + data-api) значения Rabby для этих приложений игнорируются; прочие app-chain (Opinion и т.п.) в итог не входят и помечаются
Агрегат Rabby total_balance только контроль: расхождение с проверенными компонентами пишется в «Примечание»

Баланс принимается (статус OK), когда две независимые выборки сошлись (CORROBORATION_MIN_AGREE=2). В согласии не участвуют выборки, где Rabby подменил список токенов: если on-chain проверка сняла заметную часть токенов (TAINT_ABS_USD/TAINT_REL) или если в выборке нет токена, подтверждённого на цепочке в другой выборке. Иначе — UNVERIFIED с консервативным значением; такие кошельки в сумму не входят.

Заголовки должны точно повторять веб-клиент

Анти-бот Rabby на любое отклонение в заголовках идентификации отвечает фейковым 429 с пустым телом. Требования (сверены с HAR веб-клиента, tests/fixtures/): заголовки в нижнем регистре; x-api-time — время выдачи текущего API-ключа (RABBY_API_KEY_INIT_TIME); ротированный ключ (x-set-api-key) сохраняется в общем магазине на процесс.

Многопроходная сверка (audit_passes.py)

python audit_passes.py --passes 5            # через прокси из proxy.txt
python audit_passes.py --passes 5 --direct   # без прокси

Выполняет N полных проходов по всем кошелькам; кошелёк считается STABLE, если ≥ N результатов OK сошлись в пределах допуска. Для остальных делаются дополнительные точечные проходы (--max-extra). Результаты — в Results/audit_<дата>/: audit_report.xlsx/csv (значения по проходам, разброс, вердикт, отклонённые агрегаты Rabby), pass_k.jsonl, final_results.json и стандартный Excel-экспорт. Для каждого прохода печатается время баланса и время с догрузкой NFT. Код возврата 0 — все кошельки стабильны.

Скорость

Проверка оптимизирована по времени без ослабления проверок (все правила защиты от фантомов, on-chain подтверждение и корроборация двумя выборками сохранены):

  • внутри выборки все независимые запросы идут параллельно (Rabby ×3, Hyperliquid/Lighter/Polymarket, on-chain проверка токенов, перезапрос token_list по подозрительным сетям);
  • две корроборирующие выборки кошелька идут одновременно через разные прокси; выборка, не ответившая за SNAPSHOT_HEDGE_SEC, дублируется новой;
  • нативные API и on-chain проверки выполняются один раз на кошелёк, а не в каждой выборке;
  • keep-alive пул HTTP-сессий на каждый прокси, хедж медленных RPC-нод, дисковый кэш списка сетей Rabby и Polymarket proxy-адресов;
  • через прокси 429/5xx не «пересыпаются» на том же IP — повтор сразу идёт через другой прокси; мёртвые прокси исключаются;
  • NFT (для кошельков с сотнями коллекций сервер считает их до 20 с) грузятся в фоне и не задерживают баланс.

Замер (245 кошельков, 95 живых прокси): v1.x — 62 с на проход, v2.0 — 21–32 с (5 проходов подряд, 245/245 STABLE).

Настройки

Настраивать ничего не нужно: положите адреса в wallets.txt, прокси в proxy.txt и запустите python main.py. Число воркеров выбирается автоматически — min(500, кошельков, прокси × 5); все лимиты внешних сервисов (Rabby, Hyperliquid, Polymarket, Lighter, публичные RPC) ведутся на каждый прокси отдельно, поэтому скорость растёт с числом прокси. Все параметры с комментариями — в debank_checker/config.py.

rpc.txt (необязательно)

Встроенный реестр debank_checker/data/rpc_registry.json содержит живьём проверенные публичные RPC для всех 73 сетей Rabby (от 1 до 17 нод на сеть); при проверке перебираются все ноды сети в 3 раунда (медленная нода дублируется следующей через ONCHAIN_RPC_HEDGE_SEC). Если хотите добавить свои (Alchemy, Infura, dRPC…), создайте rpc.txt в корне — они пойдут первыми:

# chain_id  url
1      https://eth-mainnet.g.alchemy.com/v2/КЛЮЧ
42161  https://arb-mainnet.g.alchemy.com/v2/КЛЮЧ

Обновить встроенный реестр: python tools/build_rpc_registry.py.

Прямой режим (без прокси)

По умолчанию прокси обязательны. Для запуска без прокси: DBC_DIRECT=1 python main.py или python audit_passes.py --direct. С одного IP всё медленнее: 8 воркеров, 4 запроса/с к Rabby, повторы после 429 с паузой.

Структура проекта

main.py                     — интерактивный запуск: проверка → меню → экспорт
audit_passes.py             — N независимых проходов и отчёт стабильности
debank_checker/
  checker.py                — выборка баланса, защита от фантомов, корроборация
  config.py                 — все настройки (с комментариями)
  parallel.py               — параллельный запуск, singleflight-кэш, хедж
  diskcache.py              — кэш в .cache/ между запусками
  api/
    http.py                 — пул keep-alive сессий на прокси, лимитеры
    rabby_client.py         — Rabby API (подпись запросов, ротация ключа)
    onchain.py              — on-chain проверка через публичные RPC
    hyperliquid_client.py   — нативный API Hyperliquid
    lighter_client.py       — нативный API Lighter
    polymarket_client.py    — Polymarket (proxy-кошелёк + data-api)
  data/rpc_registry.json    — проверенные RPC для всех сетей Rabby
  proxy/manager.py          — загрузка, предпроверка и ротация прокси
  export/                   — Excel / CSV / JSON
  ui/                       — баннер, логгер, меню
tools/build_rpc_registry.py — пересборка реестра RPC
tests/                      — офлайн-тесты (pytest)
docs/PHANTOM_BALANCES.md    — расследование фантомных балансов (09.2026)
CHANGELOG.md                — история версий

Тесты

python -m pytest tests -q

Логи

logs.txt — по каждой выборке: итог, токены, протоколы, агрегат Rabby, примечания; при отклонённом агрегате или фантомных app-chain позициях — сырые данные (ограничено RAW_LOG_MAX_BYTES).

About

Async CLI wallet checker for DeFi assets via DeBank API. Proxy rotation, rate limiting, cooldown handling, CSV/JSON export.

Topics

Resources

Stars

7 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages