我想(通过PHP)收集当前正在下载的info_hashes或搜索DHT。
我见过BTDigg将DHT用于搜索引擎,我想做类似的事情。
另外,在我得到哈希之后,如何将哈希转换为洪流以便我可以获得诸如标题等信息? (再一次通过DHT使用PHP)。
我尝试先研究 - Query DHT Server尝试通过PHP运行DHT查询,我尝试进行修改,但我没有运气。 我也试过了http://projects-deim.urv.cat/trac/p2pweb/browser/trunk/dht/dht_agg?rev=1,但它给了我几个错误,经过多次修复之后仍然没有用。
答案 0 :(得分:9)
要实现DHT节点,您可能需要阅读DHT规范:
http://www.bittorrent.org/beps/bep_0005.html
它描述了消息格式。如果您不熟悉基础DHT,您可能还需要阅读kademlia论文:
http://www.cs.rice.edu/Conferences/IPTPS02/109.pdf
一旦你在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。