摘要:閑話不多說了,接下來談談網絡爬蟲吧。根據中的到指定端口使用擴展協議進行數據的交換即下載下載成功,解析出種子文件列表信息入庫。具體實現請參考我的開源項目代碼如有問題,歡迎指正,僅供技術交流,切勿用作非法商業用途。
演示地址: https://dodder.cc
三年前,照著 Python 版的 DHT 網絡爬蟲用 Java 重寫了一遍,當時大學還未畢業,寫出來的代碼比較雜亂,數據跑到 1600 萬的時候就遇到了瓶頸,最近辭職了想學習一波 Spring Cloud 微服務開發,于是就有了現在這個項目。
學習一門新的技術總是枯燥無味的,不知道大家有沒有這樣的感覺,照著官方文檔或者 Demo 去敲代碼,不僅印象不深刻容易忘記,而且特別無聊,所以對于我個人而言,在學習一門新技術時喜歡去找一個自己感興趣的實戰場景,然后再進行學習實踐,遇到不懂的再去 Google 或者看官方文檔,而不是按部就班地買本書一頁一頁的全部看完,只有自己要用到什么的時候再去查相關的文檔,這樣子對應用場景以及技術要點才會更加深刻。
閑話不多說了,接下來談談 DHT 網絡爬蟲吧。
對于老濕雞來說,到磁力搜索網站去搜索番號是他們獲取資源的一種快速途徑,對于這種網站,廣告也是一大堆的,那么身為 IT 技術人,能不能自己來實現一個呢?
答案肯定是可以的,而且技術含量也不是特別高,但實現之前,Bittorrent 協議以及其 Wire Peer 擴展協議,還是必須要了解的,前者在官方文檔還能詳細找到,后者在維基百科上貌似已經被刪掉了(官方文檔里只有簡單的介紹了,整個協議數據收發的流程已經沒有了)。
參考協議:
http://www.bittorrent.org/bep...
http://www.bittorrent.org/bep...
除此之外,還需要熟悉 Torrent 種子文件里的結構信息,Bittorrent 協議以及 Torrent 種子文件信息大多都采用 bencode 編碼,學習之前,可以先去了解一下這個編碼,和 json 有點類似,不過也不是必要的,不用自己去實現,有現成的編解碼庫。
對前面的東西了解過后,再整理下整個爬取的流程:
使用 Netty 本地模擬一個 DHT 網絡節點加入到 DHT 網絡中去(即向啟動節點發送 find_node 請求)
收到 find_node 回復解析出更多的 DHT 節點信息,向這些節點發送 find_node 節點(目的就是讓更多的人知道自己,專業術語就是把自己的節點 ID 加入到對方的桶里,和推銷自己差不多吧~)
那些收到 find_node 請求的節點,把我們的節點 ID 加入到桶里之后,它就會向我們發送 find_node、get_peers、announce_peer 請求。
對于其他節點發送給我們的請求,我們需要根據協議進行回復,否則對方會認為我們是個不活躍節點把我們從對方的桶里刪除,并且不會發送 announce_peer 消息給我們
對于 get_peers 消息里的 info_hash 我們可以進行忽略,因為此時對方也是在查找對應 info_hash 的種子文件,只有收到 announce_peer 消息時的 info_hash 對我們才有用,因為它表示當前對方正在指定端口下載該種子文件的 metadata 信息。
根據 announce_peer 中的 info_hash 到指定 ip 端口使用 wire peer 擴展協議進行 metadata 數據的交換(即下載)
下載成功,解析出種子文件列表信息入庫。
具體實現請參考我的開源項目: https://github.com/xwlcn/Dodder
代碼如有問題,歡迎指正,僅供技術交流,切勿用作非法、商業用途。
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/73559.html
摘要:項目簡介前端站點項目效果預覽使用實現磁力鏈接爬蟲磁力鏈接解析成種子信息,保存到數據庫,利用實現中文檢索。搭建磁力鏈接搜索引擎源碼地址后端腳本磁力鏈接獲取磁力鏈接解析入庫定時同步源碼地址此項目僅用學習交流技術使用不做商業用途。 項目簡介 前端站點 項目效果預覽 http://findcl.com 使用 nodejs 實現磁力鏈接爬蟲 磁力鏈接解析成 torrent種子信息,保存到數據...
摘要:本人建立個群作為去轉盤網的官方群,人數現在也不多,如果有興趣的話來逛逛吧,多個粉絲去轉盤多一份熱鬧,群號 之前我在寫百度網盤爬蟲,百度圖片爬蟲的時候答應網友說,抽時間要把ok搜搜的的源碼公開,如今是時候兌現諾言了,下面就是爬蟲的所有代碼,完全,徹底的公開,你會不會寫程序都可以使用,不過請先裝個linux系統,具備公網條件,然后運行: python startCrawler.py 有必要...
摘要:可簡單地認為它是的擴展,負載均衡自然成為不可或缺的特性。是基于開發的服務代理組件,在使用場景中,它與和整合,打造具備服務動態更新和負載均衡能力的服務網關。類似的特性在項目也有體現,它是另一種高性能代理的方案,提供服務發現健康和負載均衡。 摘要: Cloud Native 應用架構隨著云技術的發展受到業界特別重視和關注,尤其是 CNCF(Cloud Native Computing Fo...
閱讀 3576·2021-11-24 10:19
閱讀 3710·2021-09-30 09:47
閱讀 1282·2019-08-30 15:56
閱讀 780·2019-08-29 15:11
閱讀 893·2019-08-29 13:43
閱讀 3557·2019-08-28 18:25
閱讀 2149·2019-08-26 13:27
閱讀 1427·2019-08-26 11:44