检索对等列表而不使用 python-libtorrent 下载种子
Posted
技术标签:
【中文标题】检索对等列表而不使用 python-libtorrent 下载种子【英文标题】:Retrieve peers list without download the torrent using python-libtorrent 【发布时间】:2013-03-14 16:42:10 【问题描述】:我使用带有 Python 的 libtorrent 搜索以检索对等方的 torrent IP。我尝试使用代码:
import libtorrent as lt
import time
ses = lt.session()
ses.listen_on(6881, 6891)
info = lt.torrent_info('test.torrent')
h = ses.add_torrent('ti': info, 'save_path': './')
print 'starting', h.name()
while (not h.is_seed()):
s = h.status()
p = h.get_peer_info()
for i in p:
print i.ip
print "\n\n"
sys.stdout.flush()
time.sleep(1)
print h.name(), 'complete'
它或多或少有用,但我有两个问题:
-
torrent 已下载。
在我收到一个对等列表之前,循环执行了数十次。
你能帮帮我吗?
非常感谢。
【问题讨论】:
【参考方案1】:没有一个规范的“同行列表”。有您当前连接的对等方。然而,有“群中的每个同伴”。
libtorrent 可以告诉您您连接的对等方,这意味着他们完成了 uTP 或 TCP 3 次握手。
通常需要一些时间来增加对等连接。您需要了解对等点,您需要尝试连接到它们,并且它们需要启动并且没有完整的对等点列表。这就是为什么您不会立即与一群同行建立联系的原因。
听起来您对群体中的所有同伴都感兴趣。您不太可能找到每个同行。对等点可能不会向相同的跟踪器发布消息,并通过 PEX 或 DHT 找到彼此。许多同行无法连接,找到他们的唯一方法是让他们找到您,他们可能对此不感兴趣。
现在,如果您对下载 torrent 不感兴趣,还不清楚为什么需要对等 IP。既然你不是,为什么还要连接它们呢?
您可以简单地调用 get_full_peer_list(),但是,这在 python 绑定中不可用。您也可以一遍又一遍地向跟踪器宣布并收集生成的 IP。
【讨论】:
我想检索同行列表以用于我的硕士论文的测量。 “您也可以一遍又一遍地向跟踪器宣布并收集生成的 IP”是什么意思。 ?你有一些代码或一些函数名称来做到这一点吗?非常感谢。 libtorrent 中没有独立的跟踪器通告功能,但您可以使用 urllib。再说一次,你不会得到 DHT 或 UDP 跟踪器对等点。 get_full_peer_list() 是否返回通过 PEX 或 DHT 发现的那些? 是的。它返回客户端认为是 swarm 一部分的所有对等点,无论它是如何了解它们的。例如,还有本地对等发现。 它不是一个完美的替代品,但您可以保存简历数据并查看生成的add_torrent_params
的peers
和banned_peers
字段以上是关于检索对等列表而不使用 python-libtorrent 下载种子的主要内容,如果未能解决你的问题,请参考以下文章
如果我使用 select() 服务器而不使用 fork()、线程、共享内存、信号量来编写对等 2 对等应用程序,这可以吗?
如何在 django(DRF)中检索对象列表(包括 ForeignKey 字段数据)而不显着增加数据库调用时间
使用 python-libtorrent 从 torrent 文件中获取 torrent 下载目录