2012-04-08 53 views
4

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

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

此外,我得到散列后,如何将散列转换为洪流,以便我可以获得诸如标题等信息? (再次通过使用PHP的DHT)。

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

回答

10

要实现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文件的信息字典,但这是重要的部分)。

鉴于这是相当多的工作在一起,你可能想看看使用库已经这样做,并以某种方式将他们拉入到PHP。例如,你可能想看看libtorrent

+0

有关BitTorrent和DHT的规格的完整摘要! – Kyberias 2012-05-06 10:09:01