PHP DHT info_hash列表?

6

我想(通过PHP)收集目前正在下载或搜索DHT的info_hashes。

我见过使用DHT作为搜索引擎的BTDigg,我想做类似的事情。

此外,当我获得哈希值后,如何将哈希值转换成一个种子文件,以便我可以获取诸如标题等信息?(再次通过使用PHP访问DHT)。

我首先尝试了查询DHT服务器,Query DHT Server 试图通过PHP运行DHT查询,我尝试进行修改但没有成功。 我还尝试了http://projects-deim.urv.cat/trac/p2pweb/browser/trunk/dht/dht_agg?rev=1,但它给我报了很多错误,即使进行了许多修复,它也仍然无法正常工作。

1个回答

9

如果你想实现一个DHT节点,你可能需要阅读DHT规范:

http://www.bittorrent.org/beps/bep_0005.html

它描述了消息格式。如果您对底层的DHT不熟悉,您可能需要阅读kademlia论文:

Kademlia:基于XOR度量的点对点信息系统

一旦您在DHT上运行并开始看到信息哈希飞过,您需要实现一个BitTorrent客户端。或者至少是其最基本功能,以便建立对等连接并使用BitTorrent协议的子集进行通信,该协议在此处描述:

http://www.bittorrent.org/beps/bep_0003.html

你主要需要能够像没有任何东西一样建立TCP连接并握手。然后,为了下载元数据(或.torrent文件),你需要支持ut_metadata扩展,它位于通用扩展协议之上,该协议在此处描述:

http://www.bittorrent.org/beps/bep_0010.html

ut_metadata扩展在此处描述:

http://www.bittorrent.org/beps/bep_0009.html

一旦您拥有所需的哈希元数据,基本上就完成了。然后只需要从torrent文件中提取和索引信息,如名称、文件名、文件大小等(实际上您最终只会得到torrent文件的info-dict,但这是重要的部分)。
考虑到所有这些都是相当繁重的工作,您可能希望查看已经完成此任务的库,并将它们导入到php中。例如,您可以查看libtorrent

关于BitTorrent和DHT相关规格的总结很好! - Kyberias

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接