程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> [搜片神器]之DHT網絡爬蟲的C++程序初步開源

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

編輯:C++入門知識

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

謝謝園子朋友的支持,已經找到個VPS進行測試,國外的服務器: h31bt.com 大家可以給提點意見...

服務器在抓取和處理同時進行,所以訪問速度慢是有些的,特別是搜索速度通過SQL的like來查詢慢,正在通過分詞改進中。。

DHT抓取程序開源地址:https://github.com/h31h31/H31DHTDEMO

數據處理程序開源地址:https://github.com/h31h31/H31DHTMgr

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

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

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

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

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

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

對應的協議說明: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

 

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

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved