【问题标题】:Torrent Tracker info hash GET Request- PythonTorrent Tracker 信息哈希 GET 请求 - 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 相对应的原始范围。

标签: python http urlencode bittorrent tracker


【解决方案1】:

有点晚了,但可能会对某人有所帮助。

使用模块requests 自己对url 进行编码。首先,您需要使用参数(info_hash、peer_id 等)创建一个字典。然后你只需要做一个get请求

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

【讨论】:

    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2020-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-08-27
      相关资源
      最近更新 更多