Получение IP-адресов в Bittorrent - PullRequest
2 голосов
/ 09 апреля 2010

Я пытаюсь получить список IP-адресов, обслуживающих или загружающих файл. Я связался с трекером, например openbittorrent.com, чтобы получить следующее (как часть файла соскоба):

B%00%00%0C%5F%B1%B1l%CAGa%84S%CB%B0%9BG%84%3BE:0:1

Теперь длинная строка в начале - это информационный хеш. В качестве следующего шага я сделал это:

http://tracker.sometracker.com/announce?info_hash=B%00%00%0C%5F%B1%B1l%CAGa%84S%CB%B0%9BG%84%3BE

Это вернуло мне следующее. Все идет нормально. Сообщение содержало это:

d8:completei0e10:downloadedi0e10:incompletei2e8:intervali1931e12:min intervali965e5:peers12:U���ٿ��ӣǣ^@^@e

Может кто-нибудь сказать мне, что я должен делать после этого, чтобы получить IP-адреса, которые в данный момент обслуживают файл или загружают его?

1 Ответ

2 голосов
/ 09 апреля 2010

Это не торрент файл, это анонс ответа. Оба они являются bencode (используйте bencode для их декодирования), но в ответе на объявление содержится только одноранговая информация. Для загрузки содержимого торрента недостаточно информации: для этого вам понадобится сам файл торрента.

Элемент peers в закодированном словаре содержит группы по 6 байтов, которые можно распаковать с помощью struct. Первые четыре байта - это IP-адрес, затем два байта для порта. Это компактный анонсированный ответ, который является распространенным (но, очевидно, только для IPv4). Вы также можете увидеть некомпактные ответы, которые дают прозрачный словарь.

Многие трекеры сегодня не будут разговаривать с вами с неконкретным объявлением, которое вы отправляете, или с первоначальным запросом на объявление, который не включает compact, port или event. Вам, вероятно, следует прочитать протокол , прежде чем идти дальше.

...