開源的dht爬蟲已經(jīng)有很多了,有php版本的,python版本的和nodejs版本。經(jīng)過一些測試,發(fā)現(xiàn)還是nodejs版本的爬蟲效率最高,測試使用的是github上面的已有開源項目,https://github.com/dontcontactme/p2pspider/。
p2pspider開發(fā)的時候es2015才剛出來,所以決定用es2015把p2pspider項目重寫一遍,順便深入學習一下dht爬蟲的原理。
dht爬蟲總體分成兩個模塊。
dht模塊
dht模塊實現(xiàn)一個dht節(jié)點,用來和網(wǎng)上的其他dht節(jié)點進行通信,在通信的過程中完成收集磁力鏈接的任務(wù)。
bt模塊
bt模塊實現(xiàn)一個bt協(xié)議的客戶端程序,當發(fā)現(xiàn)一個磁力鏈接可以下載的時候,通過bt客戶端和遠程的服務(wù)器通信,下載種子的元數(shù)據(jù),