成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Spring Cloud + Netty 打造分布式可集群部署的 DHT 磁力爬蟲(開源)

banana_pi / 1619人閱讀

摘要:閑話不多說了,接下來談?wù)劸W(wǎng)絡(luò)爬蟲吧。根據(jù)中的到指定端口使用擴展協(xié)議進行數(shù)據(jù)的交換即下載下載成功,解析出種子文件列表信息入庫。具體實現(xiàn)請參考我的開源項目代碼如有問題,歡迎指正,僅供技術(shù)交流,切勿用作非法商業(yè)用途。

演示地址: https://dodder.cc

三年前,照著 Python 版的 DHT 網(wǎng)絡(luò)爬蟲用 Java 重寫了一遍,當(dāng)時大學(xué)還未畢業(yè),寫出來的代碼比較雜亂,數(shù)據(jù)跑到 1600 萬的時候就遇到了瓶頸,最近辭職了想學(xué)習(xí)一波 Spring Cloud 微服務(wù)開發(fā),于是就有了現(xiàn)在這個項目。

學(xué)習(xí)一門新的技術(shù)總是枯燥無味的,不知道大家有沒有這樣的感覺,照著官方文檔或者 Demo 去敲代碼,不僅印象不深刻容易忘記,而且特別無聊,所以對于我個人而言,在學(xué)習(xí)一門新技術(shù)時喜歡去找一個自己感興趣的實戰(zhàn)場景,然后再進行學(xué)習(xí)實踐,遇到不懂的再去 Google 或者看官方文檔,而不是按部就班地買本書一頁一頁的全部看完,只有自己要用到什么的時候再去查相關(guān)的文檔,這樣子對應(yīng)用場景以及技術(shù)要點才會更加深刻。

閑話不多說了,接下來談?wù)?DHT 網(wǎng)絡(luò)爬蟲吧。

對于老濕雞來說,到磁力搜索網(wǎng)站去搜索番號是他們獲取資源的一種快速途徑,對于這種網(wǎng)站,廣告也是一大堆的,那么身為 IT 技術(shù)人,能不能自己來實現(xiàn)一個呢?

答案肯定是可以的,而且技術(shù)含量也不是特別高,但實現(xiàn)之前,Bittorrent 協(xié)議以及其 Wire Peer 擴展協(xié)議,還是必須要了解的,前者在官方文檔還能詳細(xì)找到,后者在維基百科上貌似已經(jīng)被刪掉了(官方文檔里只有簡單的介紹了,整個協(xié)議數(shù)據(jù)收發(fā)的流程已經(jīng)沒有了)。

參考協(xié)議:
http://www.bittorrent.org/bep...
http://www.bittorrent.org/bep...

除此之外,還需要熟悉 Torrent 種子文件里的結(jié)構(gòu)信息,Bittorrent 協(xié)議以及 Torrent 種子文件信息大多都采用 bencode 編碼,學(xué)習(xí)之前,可以先去了解一下這個編碼,和 json 有點類似,不過也不是必要的,不用自己去實現(xiàn),有現(xiàn)成的編解碼庫。

對前面的東西了解過后,再整理下整個爬取的流程:

使用 Netty 本地模擬一個 DHT 網(wǎng)絡(luò)節(jié)點加入到 DHT 網(wǎng)絡(luò)中去(即向啟動節(jié)點發(fā)送 find_node 請求)

收到 find_node 回復(fù)解析出更多的 DHT 節(jié)點信息,向這些節(jié)點發(fā)送 find_node 節(jié)點(目的就是讓更多的人知道自己,專業(yè)術(shù)語就是把自己的節(jié)點 ID 加入到對方的桶里,和推銷自己差不多吧~)

那些收到 find_node 請求的節(jié)點,把我們的節(jié)點 ID 加入到桶里之后,它就會向我們發(fā)送 find_node、get_peers、announce_peer 請求。

對于其他節(jié)點發(fā)送給我們的請求,我們需要根據(jù)協(xié)議進行回復(fù),否則對方會認(rèn)為我們是個不活躍節(jié)點把我們從對方的桶里刪除,并且不會發(fā)送 announce_peer 消息給我們

對于 get_peers 消息里的 info_hash 我們可以進行忽略,因為此時對方也是在查找對應(yīng) info_hash 的種子文件,只有收到 announce_peer 消息時的 info_hash 對我們才有用,因為它表示當(dāng)前對方正在指定端口下載該種子文件的 metadata 信息。

根據(jù) announce_peer 中的 info_hash 到指定 ip 端口使用 wire peer 擴展協(xié)議進行 metadata 數(shù)據(jù)的交換(即下載)

下載成功,解析出種子文件列表信息入庫。

具體實現(xiàn)請參考我的開源項目: https://github.com/xwlcn/Dodder

代碼如有問題,歡迎指正,僅供技術(shù)交流,切勿用作非法、商業(yè)用途。

文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/73559.html

相關(guān)文章

  • nodejs 實現(xiàn) 磁力鏈接資源搜索 BT磁力鏈接爬蟲

    摘要:項目簡介前端站點項目效果預(yù)覽使用實現(xiàn)磁力鏈接爬蟲磁力鏈接解析成種子信息,保存到數(shù)據(jù)庫,利用實現(xiàn)中文檢索。搭建磁力鏈接搜索引擎源碼地址后端腳本磁力鏈接獲取磁力鏈接解析入庫定時同步源碼地址此項目僅用學(xué)習(xí)交流技術(shù)使用不做商業(yè)用途。 項目簡介 前端站點 項目效果預(yù)覽 http://findcl.com 使用 nodejs 實現(xiàn)磁力鏈接爬蟲 磁力鏈接解析成 torrent種子信息,保存到數(shù)據(jù)...

    fish 評論0 收藏0
  • python爬蟲dht磁力源代碼開源

    摘要:本人建立個群作為去轉(zhuǎn)盤網(wǎng)的官方群,人數(shù)現(xiàn)在也不多,如果有興趣的話來逛逛吧,多個粉絲去轉(zhuǎn)盤多一份熱鬧,群號 之前我在寫百度網(wǎng)盤爬蟲,百度圖片爬蟲的時候答應(yīng)網(wǎng)友說,抽時間要把ok搜搜的的源碼公開,如今是時候兌現(xiàn)諾言了,下面就是爬蟲的所有代碼,完全,徹底的公開,你會不會寫程序都可以使用,不過請先裝個linux系統(tǒng),具備公網(wǎng)條件,然后運行: python startCrawler.py 有必要...

    hizengzeng 評論0 收藏0
  • Dubbo Cloud Native 之路實踐與思考

    摘要:可簡單地認(rèn)為它是的擴展,負(fù)載均衡自然成為不可或缺的特性。是基于開發(fā)的服務(wù)代理組件,在使用場景中,它與和整合,打造具備服務(wù)動態(tài)更新和負(fù)載均衡能力的服務(wù)網(wǎng)關(guān)。類似的特性在項目也有體現(xiàn),它是另一種高性能代理的方案,提供服務(wù)發(fā)現(xiàn)健康和負(fù)載均衡。 摘要: Cloud Native 應(yīng)用架構(gòu)隨著云技術(shù)的發(fā)展受到業(yè)界特別重視和關(guān)注,尤其是 CNCF(Cloud Native Computing Fo...

    niceforbear 評論0 收藏0

發(fā)表評論

0條評論

最新活動
閱讀需要支付1元查看
<