整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          【一步一步教你寫BT種子嗅探器】原理篇

          前言

          之前看到 lantern 這個十分火的翻墻工具,其利用了P2P的思想,就想了解一下P2P相關的協議。看了下最流行的BT協議官方文檔,就產生了實現BT協議的想法,順便根據協議實現了一個BT種子嗅探器。

          也有人將BT種子嗅探器稱為BT種子爬蟲,個人覺得其行為特性和傳統的web爬蟲相差較大,反而和嗅探器很類似,因此暫且稱之為BT種子嗅探器吧。

          接下來將寫一系列文章來介紹其原理和具體實現方式。這篇文章先提綱挈領,介紹其工作原理,以對全局有一個把握。后序的文章再介紹具體細節。

          背景知識

          在講原理之前首先你得具備(簡稱BT)協議的一些基本知識,以便于理解接下來要講的嗅探器。BT協議其實是一個協議簇,BEP-3 是其基本協議內容,其他的大部分都是圍繞這個來進行擴展或補充。要想從BT網絡中下載一個資源,必須具備以下部分:

          下載資源的時候,客戶端首先根據bencode(bencode是BT協議中的編碼方式)解碼種子文件,得到Tracker服務器的地址和資源信息,通過和Tracker服務器溝通得到其他已經下載該資源的peers信息(其他已經擁有該資源的客戶端或者發布該資源的人),然后再和這些peers溝通得到自己想要的部分,即互通有無。由于把文件分成很多塊來同時從不同的地方下載,這也就是為什么BT通常下載快的原因。

          DHT協議

          網絡嗅探器實現_網絡嗅探工具_簡單的個人網絡嗅探器

          通過上面我們知道,Tracker服務器在資源下載的過程中起著至關重要的作用,只有通過它我們才能得到其他peers的信息,才能夠下載,但這同時也成了BT協議的一個弱點,如果Tracker服務器掛掉了或者被封被屏蔽,整個網絡也就癱瘓了。由于一些資源都是有版權的,還有一些資源是限制級的,比如色情資源,Tracker服務器很容易被迫關閉或被墻。后來聰明的人類發明了另外一種協議,就是 hash table, 簡稱DHT,這個協議就是用來彌補這個弱點的。

          BT協議簇中的DHT協議 是基于 協議 建立的,其基本思想很好理解。DHT 由很多節點組成,每個節點保存一張表,表里邊記錄著自己的好友節點。當你向一個節點A查詢另外一個節點B的信息的時候,A就會查詢自己的好友表,如果里邊包含B,那么A就返回B的信息,否則A就返回距離B距離最近的k個節點。然后你再向這k個節點再次查詢B的信息,這樣循環一直到查詢到B的信息,查詢到B的信息后你應該向之前所有查詢過的節點發個通知,告訴他們,你有B的信息。

          舉個例子,比如我現在想要的微信號(額…我要干嘛),我就從自己的微信好友中挑出k個最可能認識她的人,然后依次問他們有沒有的微信號,假如其中一個認識,那么他就會給我的微信號,我也就不繼續問其他人了。假如他不認識,他就給我推薦k個他微信好友中最有可能認識的k個人,然后我再繼續這k個人,就這樣循環一直到我問到為止。OK,現在我已經得到了的微信號,我就會告訴之前所有我問過的人,我有的微信號。

          當客戶端下載資源的時候,他會利用上述方式查找peers信息,這樣每個人都充當了Tracker的作用,也就解決了上面那個問題。

          嗅探器原理

          終于到核心部分了。

          BT種子嗅探器就是利用了DHT協議得到peer信息后會向他之前查詢過的節點發送通知這一點,這就是嗅探器的核心。

          簡單的個人網絡嗅探器_網絡嗅探器實現_網絡嗅探工具

          剩下的工作就是我們要讓更多的節點發給我們通知。那么如何讓更多的節點發給我們通知呢?

          這就是BT種子嗅探器的原理,簡單吧 :)

          種子下載器

          在BT網絡中,通過上述原理收到信息并不是種子,而是發送消息者的ip和port、種子(可以理解為種子的id)。我們如果想要得到種子的話,還需要做一番工作。這里涉及到另外一個非常重要的協議 BEP-09,BEP-09規定了如何通過種子得到種子。

          這里不鋪開講,僅說下大致過程。首先同我們收到的消息里邊的 ip:port 建立TCP連接,然后發送握手消息,并告知對方自己支持BEP-09協議,然后向對方請求種子的信息,收到對方返回的種子信息后,依次或同時請求每一個塊。最有所有塊收集完后,對其進行拼接并通過sha1算法計算其,如果和我們請求的值相同則保存起來,否則丟掉。

          應用

          這樣你可以得到非常多的種子信息,你可以對其進行索引建立自己的BT種子搜索引擎,建立自己的海盜灣。但你需要注意版權問題和色情資源問題。


          主站蜘蛛池模板: 视频在线观看一区二区| 国产精品一区二区三区高清在线| 无码人妻精品一区二区蜜桃网站| 国产乱码一区二区三区爽爽爽 | 少妇特黄A一区二区三区| 色狠狠一区二区三区香蕉| 中文字幕一区在线观看视频| 国产在线视频一区二区三区| 亚洲熟女乱综合一区二区| 久久一本一区二区三区| 成人免费观看一区二区| 美女AV一区二区三区| 狠狠色婷婷久久一区二区| 激情内射亚洲一区二区三区爱妻 | 欧美日韩国产免费一区二区三区| 成人久久精品一区二区三区| 国产福利电影一区二区三区久久久久成人精品综合 | 亚洲日韩国产一区二区三区在线| 狠狠综合久久av一区二区| 成人无码一区二区三区| 国产韩国精品一区二区三区久久| 国产一区二区精品久久91 | 精品人妻一区二区三区四区| 亚洲一区二区三区AV无码| 国产精品高清一区二区人妖| 无码人妻精品一区二区三区99不卡| 中文字幕av无码一区二区三区电影| 色噜噜狠狠一区二区三区| 国产美女口爆吞精一区二区| 国产经典一区二区三区蜜芽| 福利一区国产原创多挂探花| 3d动漫精品啪啪一区二区免费| 国产剧情一区二区| 色窝窝无码一区二区三区成人网站 | 日韩精品一区二区三区中文3d| 免费萌白酱国产一区二区三区| 怡红院美国分院一区二区| 日本免费一区二区久久人人澡| 国产一区二区三区美女| 亚洲一区二区三区在线网站| 国产亚洲情侣一区二区无码AV|