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