5

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

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

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

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

4

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.ini 中。例如,您可能想看看libtorrent

于 2012-04-11T17:02:40.807 回答