天天看點

[搜片神器]之DHT網絡爬蟲的C++程式初步開源

回應大家的要求,特地整理了一開始自己整合的代碼,這樣最簡單,最直接的可以分析DHT網絡的操作流程,對于抓取程式有更多的了解。

希望大家更多的加入進來,

DHT抓取程式開源位址:https://github.com/h31h31/H31DHTDEMO

回應大家的要求,特地整理了一開始自己整合的代碼,這樣最簡單,最直接的可以分析流程,至于文章裡面提供的程式界面更多,需要大家自己開發。

伺服器在抓取和處理同時進行,是以通路速度慢是有些的,特别是搜尋速度通過SQL的like來查詢慢,正在通過分詞改進中。。

資料處理程式開源位址:https://github.com/h31h31/H31DHTMgr

[搜片神器]之DHT網絡爬蟲的C++程式初步開源

通過調試程式大家可以初步分析DHT網絡是如何加入的,等大家自己分析會了單一線程的方法,後面如何組織多線程應該沒有問題。

接着 [搜片神器]之DHT網絡爬蟲的代碼實作方法  這篇文章接着說明如何進入DHT網絡的原理。

1.DHT必須把自己電腦當伺服器,别人才能夠知道自己是誰,是以需要通過UDP綁定端口。

2.DHT需要生成一個自己的20位ID号,當然可以通過随機一個數值,然後通過SHA1來生成20位的ID号;

3.初始化他人伺服器的IP資訊,這樣我們就可以從他們那裡查詢我們要的資訊;

4.對伺服器進行PING操作,伺服器就會回應PONG操作,這樣就表明伺服器活動正常.大家可以看VS調試視窗的輸出資訊就可以分析出一些流程方面的工作。

[搜片神器]之DHT網絡爬蟲的C++程式初步開源

對應的協定說明:http://www.bittorrent.org/beps/bep_0005.html

 5.收到資訊後,通過回調函數進行相關的儲存操作就可以了。

6.DHT網絡一般PING操作都會有PONG回應,但發送FINDNODE回應的不會是全部有的。

7.由于自己隻是僞裝正常的BT步驟,并沒有真正的提供種子下載下傳操作,是以我們隻會發get_peers操作,不會發送annouce_peer操作,等待别人給我們回應annouce_peer操作。

8.請求發送速度不能過快,這樣的話自己的帶寬也需要不少,需要考慮每個IP過一會兒再請求操作,以免進對方的黑名單。

在調試了解如何一步步進行DHT網絡操作後,annouce_peer過來的HASH就是真正活躍的種子檔案,我們對此儲存就可以了。

其它不明白的地方,大家需要自行進行調試解決,分析代碼是最好的老師,dht.c dht.h檔案可能被我注釋了一些地方,大家自己進行對比,盡量使用原代碼。

至于如何從DHT網絡直接下載下傳種子檔案,需要分析BT種子協定,但經過測試,發現比直接從HTTP網站下載下傳來得慢,直接HTTP下載下傳快很多。

 從DHT網絡直接下載下傳種子檔案對應的協定說明:

http://www.bittorrent.org/beps/bep_0009.html

http://www.bittorrent.org/beps/bep_0010.html

希望大家多多推薦哦...

繼續閱讀