从Magneticlink Infohash获取元数据

问题描述 投票:0回答:2

我正在学习有关Bittorrent协议,并且有一个我不太确定的问题。

根据BEP009

磁铁URI格式

磁铁URI格式为:

v1:磁铁:?xt = urn:btih:info-hash&dn = name&tr = tracker-url

v2:磁铁:?xt = urn:btmh:tagged-info-hash&dn = name&tr = tracker-url

info-hash是信息哈希十六进制编码,总共40个字符。为了与野外现有链接兼容,客户端还应该支持32个字符的base32编码的信息哈希。

tagged-info-hash是多哈希格式,十六进制编码的新torrent的完整infohash,采用新的元数据格式。如果“ btmh”和“ btih”的确切主题描述了相同的混合种子,那么它们可能存在于同一块磁铁中。

示例磁链:magnet:?xt=urn:btih:407AEA6F3D7DC846879449B24CA3F57DB280DE5C&dn=ubuntu-educationpack_14+04_all&tr=udp%3A%2F%2Ftracker.opentrackr.org%3A1337%2Fannounce&tr=udp%3A%2F%2Fexplodie.org%3A6969

[如果我错了,请纠正我,但是urn:btih:407AEA6F3D7DC846879449B24CA3F57DB280DE5C是磁链中的info-hash,我将需要对其进行解码,以获取bencoded元数据,例如BEP015中列出的元数据。诸如:downloaded, left, uploaded, event, etc.

我的问题是,如何在python中对此进行解码?

python bittorrent magnet-uri
2个回答
0
投票

[Magnet Link中的信息哈希与UDP跟踪器所需的信息哈希相同(torrent的本编码为“ info”词典的20字节SHA-1哈希)。

此外,UDP跟踪器根本不使用经过编码的数据,仅使用字节!不过,HTTP / HTTPs跟踪器使用Bencoded格式。


0
投票

您可以搜索一些开源代码,例如libtorrent。它是由C ++编写的,因此您需要阅读bdecode和bencode部分。这部分并不复杂,然后您可以自己编写python代码。

© www.soinside.com 2019 - 2024. All rights reserved.