Torrent Tracker 信息哈希 GET 请求 - Python
Posted
技术标签:
【中文标题】Torrent Tracker 信息哈希 GET 请求 - Python【英文标题】:Torrent Tracker info hash GET Request- Python 【发布时间】:2012-11-28 01:46:38 【问题描述】:我正在尝试连接到一个 torrent 跟踪器以接收一个可以与之一起玩比特 torrent 的对等方列表,但是我在形成正确的 GET 请求时遇到了麻烦。
据我了解,我必须从 .torrent 文件中获取经过编码的“信息”部分的 20 字节 SHA1 哈希。我使用以下代码:
h = hashlib.new('sha1')
h.update(bencode.bencode(meta_dict['info']))
info_hash = h.digest()
这就是我卡住的地方。我不知道如何创建正确的 url 编码 info_hash 以作为参数粘贴到 URL 字符串中。
我相信它涉及 urllib.urlencode 和 urllib.quote 的某种组合,但是我的尝试到目前为止还没有奏效。
【问题讨论】:
urllib.quote() 应该是你所需要的... 在极少数情况下,种子有一个信息字典,其键未按字典顺序排序,或包含重复键。在这种情况下,您对它的重新编码很可能会产生与 .torrent 文件中的字节序列不同的字节序列,并且还会产生错误的哈希值。为了解决这个问题,请改为散列 .torrent 文件中与 info dict 相对应的原始范围。 【参考方案1】:有点晚了,但可能会对某人有所帮助。
使用模块requests
自己对url 进行编码。首先,您需要使用参数(info_hash、peer_id 等)创建一个字典。然后你只需要做一个get请求
response = requests.get(tracker_url, params=params)
【讨论】:
【参考方案2】:我认为urllib.quote_plus()
就是你所需要的。
【讨论】:
以上是关于Torrent Tracker 信息哈希 GET 请求 - Python的主要内容,如果未能解决你的问题,请参考以下文章