python - 在 Bittorrent 中获取 IP 地址

标签 python language-agnostic prototype p2p bittorrent

我正在尝试获取服务或下载文件的 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 地址吗?

最佳答案

那不是种子文件,而是宣布响应。它们都是 bencode(使用 bencode 来解码它们),但是announce 响应只包含对等信息。这些信息不足以下载 torrent 的内容:为此,您需要 torrent 文件本身。
peers bencoded 字典的成员包含 6 个字节的组,您可以使用 struct 解压这些字节。 .前四个字节是 IP 地址,后跟两个字节是端口。这是一个紧凑的通知响应,很常见(但显然仅限于 IPv4)。您可能还会看到非紧凑的响应,它们为您提供了一个透明的字典。

今天的许多跟踪器不会通过您发送的非特定抓取通知或不包含 compact 的初始通知请求与您交谈。 , portevent .您可能应该阅读 the protocol在走得更远之前。

关于python - 在 Bittorrent 中获取 IP 地址,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2604153/

相关文章:

oop - 对于接受不同数据类型参数的函数,正确的术语是什么?

javascript - JS原型(prototype)与继承

python - 类型错误 : 'int' object does not support item assignment error

python - 在 For 循环中添加到列表(我最初将列表设置为什么?)

python - apache beam 与 python pardo 与多 pCollections 输入

algorithm - 点与高度图之间的距离

python - 关于 "yield from"和 "next"行为的问题

function - 何时创建类和函数?

javascript - 为什么 `instanceof` 会产生不同的结果?

c++ - 如何将整个 char 数组及其值传递给另一个函数?