2012-04-08 50 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