我已经阅读了Bit-torrent规范并进行了大量搜索,试图找出如何从torrent跟踪器(使用Python)获取种子/对等/下载数据。我可以从Torrent计算信息哈希没问题,这与各种工作的torrent应用程序给出的信息哈希相匹配。
但是,当我尝试从跟踪器获取信息时,我要么超时(跟踪器正在工作),要么获取空数据,具体取决于我将URL放入的形式:
http://tracker.openbittorrent.com/scrape?info_hash=a8c482902b1c735de462479721b011dc7b3d3558 - 超时
我被告知这应该是20个字符长,所以需要一个子字符串,但这会给出空数据。
http://tracker.openbittorrent.com/scrape?info_hash=a8c482902b1c735de462 - d5:filesdee
我认为我误解了我应该如何对scrape URL进行编码或制作信息,但不能在我的生活中看到哪里。
答案 0 :(得分:6)
您正在传递info_hash的十六进制字符表示形式。它应该是二进制表示。要将不可打印的字节放入URL,请使用URL编码:
/scrape?info_hash=%A8%C4%82%90%2B%1Cs%5D%E4bG%97%21%B0%11%DC%7B%3D5X
(我也试着避免在info_hash参数中对_
进行编码...并不是说它不正确,但是我希望有一些写入速度跟踪器的东西。搞砸了。)
答案 1 :(得分:3)
我的解决方案:
import binascii
binary_info_hash = binascii.unhexlify('79b193385de5b967175ca86073670fce0e45a324')
print binary_info_hash
结果:
y%B1%938%5D%E5%B9g%17%5C%A8%60sg%0F%CE%0EE%A3%24
更多信息:binascii.unhexlify