Torrent Tracker信息哈希获取请求-Python

Torrent Tracker信息哈希获取请求-Python,python,http,urlencode,bittorrent,tracker,Python,Http,Urlencode,Bittorrent,Tracker,我正在尝试连接到torrent跟踪器以接收要玩bit torrent的对等方列表,但是我在形成正确的GET请求时遇到问题 据我所知,我必须从.torrent文件中获取bencoded“info”部分的20字节SHA1散列。我使用以下代码: h = hashlib.new('sha1') h.update(bencode.bencode(meta_dict['info'])) info_hash = h.digest() 这就是我被困的地方。我不知道如何创建正确的url编码信息散列以粘贴到ur

我正在尝试连接到torrent跟踪器以接收要玩bit torrent的对等方列表,但是我在形成正确的GET请求时遇到问题

据我所知,我必须从.torrent文件中获取bencoded“info”部分的20字节SHA1散列。我使用以下代码:

h = hashlib.new('sha1')
h.update(bencode.bencode(meta_dict['info']))
info_hash =  h.digest()
这就是我被困的地方。我不知道如何创建正确的url编码信息散列以粘贴到url字符串中作为参数


我相信它包含了urllib.urlencode和urllib.quote的一些组合,但是我的尝试到目前为止还没有成功。

我认为
urllib.quote_plus()
就是你所需要的。

虽然有点晚了,但可能会帮助一些人

使用模块
请求
对url进行自身编码。首先,您需要创建一个带有参数(info\u hash、peer\u id等)的字典。那么你只需要做一个get请求

response = requests.get(tracker_url, params=params)

urllib.quote()应该是您所需要的全部…在极少数情况下,torrents有一个info dict,其键没有按字典顺序排序,或者包含重复的键。在这种情况下,对其重新编码很可能会产生与.torrent文件中不同的字节序列,并且产生错误的哈希。要解决这个问题,请将.torrent文件中与info dict相对应的原始范围散列。