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

我看过BTDigg,它在搜索引擎中使用了DHT,我想做类似的事情。

另外,在获得哈希之后,如何将哈希转换为种子,以便获得标题等信息? (再次通过DHT使用PHP)。

我尝试先进行研究-Query DHT Server尝试通过PHP运行DHT查询,我尝试进行修改,但没有运气。
我也尝试过http://projects-deim.urv.cat/trac/p2pweb/browser/trunk/dht/dht_agg?rev=1,但它给了我几个错误,经过多次修复,仍然不起作用。

最佳答案

要实现DHT节点,您可能需要阅读DHT规范:

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

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

Kademlia: A Peer-to-peer Information System Based on the XOR Metric

一旦在DHT上启动并运行,并且开始看到信息哈希飞散,就需要实现一个bittorrent客户端。或者至少是一个裸露的骨头,以便建立对等连接并谈论bittorrent协议(protocol)的子集,在此进行描述:

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

您几乎只需要能够进行TCP连接和握手,就好像您什么都没有一样。然后,要下载元数据(或.torrent文件),您需要支持ut_metadata扩展名,该扩展名位于通用扩展协议(protocol)的顶部,如下所述:

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

ut_metadata扩展说明如下:

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

您有一个元数据用于散列,基本上应该设置。然后,只需从torrent文件中提取和索引诸如名称,文件名,文件大小等信息即可(您实际上只是得到torrent文件的信息字典,但这是重要的部分)。

鉴于所有这些工作在一起,您可能要考虑使用已经完成此功能的库,并以某种方式将其引入php。例如,您可能想看看libtorrent

关于PHP DHT info_hash列表?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10066985/

10-11 12:07