Torrent Tracker Scraper
Минимальная утилита для чтения агрегированной статистики одного info hash через
UDP BitTorrent tracker protocol (BEP 15). Проект переработан из _torrent/torrent.py
и GetPeers.py: парсинг сайтов, прокси, базы данных, загрузка контента и прочий
несвязанный код удалены. Остался только запрос состояния трекера.
Что делает
Программа выполняет два стандартных UDP-запроса к указанному трекеру:
connect— получает временный connection ID;scrape— получаетseeders,completedиleechersдля одного info hash.
Она не скачивает файлы, не отправляет announce, не присоединяется к swarm, не обходит ограничения и не записывает состояние на диск. Ответ зависит от политики конкретного трекера: некоторые отключают scrape или требуют аутентификацию.
Установка
Требуется Python 3.10 или новее. Внешних Python-зависимостей нет.
git clone https://github.dfv24.com/fofanov.dmitry/torrent-tracker-scraper.git
cd torrent-tracker-scraper
python -m venv .venv
. .venv/bin/activate
python -m pip install --editable .
Использование
torrent-tracker-scrape tracker.example.org 6969 \
0123456789abcdef0123456789abcdef01234567
Параметры:
host— DNS-имя или IPv4-адрес UDP-трекера;port— UDP-порт трекера;info_hash— ровно 40 шестнадцатеричных символов;--timeout 5— необязательное время ожидания в секундах, по умолчанию8.
Успешный ответ имеет вид:
seeders=12 completed=340 leechers=4
При недоступности трекера, неожиданном ответе или неверном hash программа завершается с ошибкой. Это намеренно: вызывающий скрипт не должен принять неполные сетевые данные за нулевую статистику.
Структура и проверка
src/torrent_tracker_scraper/
udp.py # реализация пакетов BEP 15 и проверка ответов
cli.py # параметры команды и текстовый вывод
python -m compileall -q src
PYTHONPATH=src python -c "from torrent_tracker_scraper.udp import scrape; scrape('127.0.0.1', 1, 'bad')"
Вторая команда должна завершиться с понятной ошибкой валидации hash до сетевого обращения.
Использование по назначению
Работайте только с трекерами и материалами, к которым у вас есть законный доступ. Проверьте правила трекера до отправки запросов: публичность адреса не означает, что статистику разрешено опрашивать автоматически.
Лицензия
Код распространяется по лицензии MIT.