BT9G LABS / DHT Deep Dive #13

Seeders и Leechers: что означают цифры и как их измеряют

Определения Seeder/Leecher, Tracker scrape, ограничения DHT и причины, по которым глобальный размер Swarm трудно измерить точно.

BT9G Labs / DHT Deep Dive #13. Разделяем протокольные понятия, наблюдаемые Peer и продуктовые счетчики, чтобы не выдавать оценку за точный мировой факт.

Seeders и Leechers: что означают цифры и как их измеряют

Краткое резюме

  • Тема: Seeders и Leechers: что означают цифры и как их измеряют
  • Ключевые слова: Seeders, Leechers, Tracker scrape, Swarm size, DHT
  • Для кого: backend-разработчики, исследователи протоколов, инженеры поисковых систем и разработчики BitTorrent-клиентов
  • Цель: Объяснить механизм достаточно точно, чтобы на его основе можно было принимать реальные архитектурные решения для краулинга, индексации и поиска.

Системная схема

Определения и источник цифр

Seeder обычно имеет полный контент и продолжает отдачу, Leecher еще не завершил загрузку. Но видимая цифра зависит от того, кто ее измеряет. Нет единого центра, который собирает абсолютное глобальное состояние всех BitTorrent-клиентов.

Поэтому рядом с любым счетчиком полезно понимать его источник и время измерения.

Tracker scrape

Некоторые Tracker возвращают complete, incomplete и downloaded. Это хорошо определенная статистика для Peer, которых знает конкретный Tracker. Но Torrent может работать с несколькими Tracker, DHT и PEX, а множества участников пересекаются.

Складывать scrape counts разных Tracker напрямую нельзя.

Почему DHT не дает точный Seeder count

get_peers возвращает endpoints, но не сообщает, какая доля контента есть у каждого Peer. Один lookup также не видит все мировые Peer. Поэтому DHT лучше использовать для метрик вроде recently observed peers, last active и activity score.

Если продукт все же показывает Seeder/Leecher из Tracker, желательно указывать, что это snapshot конкретного источника.

Эскиз реализации

{
  "source": "tracker_scrape",
  "infohash": "...",
  "complete": 142,
  "incomplete": 37,
  "observed_at": "2026-09-16T03:00:00Z"
}

Инженерные заметки BT9G Labs

Для индексатора уровня BT9G важнее не максимальное число событий, а правильное разделение идентичности контента, краткоживущих сетевых наблюдений, состояния сбора и поискового представления. Поля, полученные из DHT или от Peer, должны иметь источник и временную метку. Метрики стоит вести по этапам: discovery, соединение, handshake, поддержка расширений, получение Metadata, проверка, сохранение и индексация. Это позволяет видеть реальное узкое место системы, а не списывать все неудачи на «нестабильную сеть».

Типичные ошибки

  • Считать любой активный Peer Seeder-ом.
  • Суммировать несколько Tracker scrape без дедупликации.
  • Выводить точный Seeder count из количества DHT endpoints.
  • Показывать счетчик без источника и времени выборки.

Связанные статьи BT9G Labs

Источники


Следующая статья: Почему получение Torrent Metadata не удается: 10 реальных причин и правильная модель retry →

Материал описывает публичное поведение протоколов BitTorrent для инженерных и исследовательских целей и не означает, что любой наблюдаемый Swarm доступен, корректен или разрешен к распространению.