【问题标题】:PHP DHT info_hash list?PHP DHT info_hash 列表?
【发布时间】:2012-04-08 22:11:13
【问题描述】:

我想(通过 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,但它给了我几个错误,经过多次修复它仍然没有工作。

【问题讨论】:

    标签: php bittorrent dht


    【解决方案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协议的一个子集,这在此处进行了描述:

    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

    【讨论】:

    • 很好地总结了与 BitTorrent 和 DHT 相关的规格!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-04-28
    • 2010-11-04
    • 2015-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多