Получение метаданных из инфохэша магнитных ссылок - PullRequest
0 голосов
/ 06 мая 2020

Я изучаю протоколы BitTorrent и у меня есть вопрос, в котором я не совсем уверен.

Согласно BEP009 ,

ma gnet Формат URI

Формат URI ma gnet:

v1: ma gnet :? xt = urn: btih: info-hash & dn = name & tr = tracker -url

v2: ma gnet :? xt = urn: btmh: tagged-info-hash & dn = name & tr = tracker-url

info-ha sh Кодируется ли info-ha sh в шестнадцатеричном формате, всего 40 символов. Для совместимости с существующими ссылками в дикой природе клиенты также должны поддерживать 32-символьную информацию в кодировке base32-ha sh.

tagged-info-ha sh Является ли multiha sh форматированная, шестнадцатеричная полная информацияha sh для торрентов в новом формате метаданных. Точные темы 'btmh' и 'btih' могут существовать в одном ma gnet, если они описывают один и тот же гибридный торрент.

пример ma gnet ссылка: magnet:?xt=urn:btih:407AEA6F3D7DC846879449B24CA3F57DB280DE5C&dn=ubuntu-educationpack_14+04_all&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Fexplodie.org%3A6969

Исправьте меня, если я ошибаюсь, но urn:btih:407AEA6F3D7DC846879449B24CA3F57DB280DE5C - это info-hash из ссылки ma gnet, и мне нужно будет его декодировать, чтобы получить метаданные bencoded, например, перечисленные в BEP015 . Такие вещи, как: downloaded, left, uploaded, event, etc.

Мой вопрос, как мне декодировать это в python?

Ответы [ 3 ]

0 голосов
/ 13 мая 2020

Вы можете выполнить поиск в открытом исходном коде, например libtorrent . Он написан на C ++, поэтому вам нужно прочитать части bdecode и bencode. Эта часть несложная, и тогда вы можете написать коды python самостоятельно.

0 голосов
/ 12 июля 2020

Поправьте меня, если я ошибаюсь, но urn: btih: 407AEA6F3D7DC846879449B24CA3F57DB280DE5 C - это информационный хэш из ссылки ma gnet, и мне нужно будет его декодировать, чтобы иметь возможность получить закодированный метаданные, такие как перечисленные в BEP015. Такие вещи, как: загружено, оставлено, загружено, событие и т. Д. c.

Infoha sh - это уникальный SHA1 ha sh, который идентифицирует торрент. Следовательно, он не может быть далее декодирован для получения дополнительной информации, это просто идентификатор. Кроме того, если подумать, ссылка должна постоянно меняться, если она содержит эту информацию.

Вы должны использовать эту информацию sh в запросе объявления на трекер. Цель запроса объявления - сообщить трекеру, что вы загружаете конкретный ha sh, как далеко вы находитесь, и предоставить вам одноранговых узлов, о которых знает трекер.

В вашем примере это два UDP-трекера:

tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Fexplodie.org%3A6969

После декодирования URL они становятся:

tr=udp://tracker.opentrackr.org:1337/announce&tr=udp://explodie.org:6969

Итак, это трекеры, которым вы должны отправить свой запрос на объявление, реализовав https://libtorrent.org/udp_tracker_protocol.html

Обратите внимание, что не дает вам никакой информации о торрент-файле, для этого вам необходимо реализовать BEP-9.

0 голосов
/ 07 мая 2020

info-ha sh в Ma gnet Ссылка такая же, как info-ha sh, необходимая для UDP Tracker (20-байтовый SHA-1 ha sh закодированного "информационного" словаря торрент).

Вдобавок UDP Tracker вообще не использует закодированные данные, а только байты! Однако формат Bencoded используется трекерами HTTP / HTTPs.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...