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的主要内容,如果未能解决你的问题,请参考以下文章

torrent hash怎么用

通过 UDP 向 Bittorrent Tracker 发送信息哈希

torrent是啥,国内能打开的软件都有哪些?

PHP 中的 Torrent 抓取

如何使用 php 从 torrent 文件中获取哈希信息?

BT介绍