如何计算种子文件的抓取URL
我看过Bit-torrent的规范,也做了很多搜索,想知道怎么用Python从种子追踪器获取种子的信息,比如种子里的种子和下载的数据。我可以很轻松地从一个种子文件计算出信息哈希值,这个值和很多正常工作的种子应用给出的信息哈希值是一样的。
但是,当我尝试从追踪器获取信息时,要么超时(追踪器是正常工作的),要么得到空数据,这取决于我用什么格式输入网址:
http://tracker.openbittorrent.com/scrape?info_hash=a8c482902b1c735de462479721b011dc7b3d3558 - 超时
有人告诉我,这个信息哈希值应该是20个字符长,所以我截取了一部分,但这样得到的是空数据。
http://tracker.openbittorrent.com/scrape?info_hash=a8c482902b1c735de462 - d5:filesdee
我觉得我可能在编码或者生成这个抓取网址的infohash时搞错了什么,但我实在想不起来哪里出了问题。
2 个回答
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
6
你传入的是一个十六进制字符的 info_hash 表示方式。其实它应该是二进制的表示。要把那些不可打印的字节放进网址里,可以使用网址编码:
/scrape?info_hash=%A8%C4%82%90%2B%1Cs%5D%E4bG%97%21%B0%11%DC%7B%3D5X
(我还建议你尽量不要对 info_hash 参数中的 _
进行编码……这并不是说这样做不对,但我觉得一些为了速度而写的追踪器可能会搞错这点。)