我正在尝试获取服务或下载文件的IP地址列表。我做的是联系像openbittorrent.com这样的跟踪器获取以下内容(作为scrape文件的一部分):
B%00%00%0C%5F%B1%B1l%CAGa%84S%CB%B0%9BG%84%3BE:0:1
现在,开头的长字符串是info哈希。下一步,我这样做了:
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地址?
答案 0 :(得分:2)
这不是一个torrent文件,这是一个公告响应。它们都是bencode(使用bencode来解码它们),但是announce响应只包含对等信息。这还不足以下载torrent的内容:要做到这一点,你需要自己的torrent文件。
bencoded字典的peers
成员包含6个字节的组,您可以使用struct
解包。前四个字节是IP地址,后面是端口的两个字节。这是一个紧凑的通告响应,这是常见的(显然只有IPv4)。您还可以看到非紧凑的响应,它们为您提供了透明的字典。
今天许多跟踪器都不会通过您发送的非特定报警声明或不包含compact
,port
或{{1}的初始通知请求与您交谈}。在进一步讨论之前,你应该阅读the protocol一点。