• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            loop_in_codes

            低調(diào)做技術(shù)__歡迎移步我的獨(dú)立博客 codemaro.com 微博 kevinlynx

            使用erlang實(shí)現(xiàn)P2P磁力搜索(開(kāi)源)

            接上回對(duì)DHT網(wǎng)絡(luò)的研究,我用erlang克隆了一個(gè)磁力搜索引擎。我這個(gè)實(shí)現(xiàn)包含了完整的功能,DHT網(wǎng)絡(luò)的加入、infohash的接收、種子的獲取、資源信息的索引、搜索。

            如下圖:

            screenshot

            在我的筆記本上,我開(kāi)啟了100個(gè)DHT節(jié)點(diǎn),大致均勻地分布在DHT網(wǎng)絡(luò)里,資源索引速度大概在1小時(shí)一萬(wàn)個(gè)左右(包含重復(fù)資源)。

            這個(gè)程序包含三大部分:

            這兩個(gè)項(xiàng)目總共包含大概2500行的erlang代碼。其中,DHT實(shí)現(xiàn)部分將DHT網(wǎng)絡(luò)的加入包裝成一個(gè)庫(kù),爬蟲(chóng)部分在搜索種子時(shí),暫時(shí)沒(méi)有使用P2P里的種子下載方式,而是使用現(xiàn)成的磁力鏈轉(zhuǎn)種子的網(wǎng)站服務(wù),這樣我只需要使用erlang自帶的HTTP客戶端就可以獲取種子信息。爬蟲(chóng)在獲取到種子信息后,將數(shù)據(jù)存儲(chǔ)到mongodb里。WEB端我為了盡量少用第三方庫(kù),我只好使用erlang自帶的HTTP服務(wù)器,因此網(wǎng)頁(yè)內(nèi)容的創(chuàng)建沒(méi)有模板系統(tǒng)可用,只好通過(guò)字符串構(gòu)建,編寫(xiě)起來(lái)不太方便。

            使用

            整個(gè)程序依賴了兩個(gè)庫(kù):bson-erlang和mongodb-erlang,但下載依賴庫(kù)的事都可以通過(guò)rebar解決,項(xiàng)目文件里我已經(jīng)包含了rebar的執(zhí)行程序。我僅在Windows7上測(cè)試過(guò),但理論上在所有erlang支持的系統(tǒng)上都可以。

            • 下載安裝mongodb
            • 進(jìn)入mongodb bin目錄啟動(dòng)mongodb,數(shù)據(jù)庫(kù)目錄保存在db下,需手動(dòng)建立該目錄

                mongod --dbpath db --setParameter textSearchEnabled=true
              
            • 下載erlang,我使用的是R16B版本

            • 下載dhtcrawler,不需要單獨(dú)下載kdht,待會(huì)下載依賴項(xiàng)的時(shí)候會(huì)自動(dòng)下載

                git clone git@github.com:kevinlynx/dhtcrawler.git
              
            • cmd進(jìn)入dhtcrawler目錄,下載依賴項(xiàng)前需保證環(huán)境變量里有g(shù)it,例如D:\Program Files (x86)\Git\cmd,需注意不要將bash的目錄加入進(jìn)來(lái),使用以下命令下載依賴項(xiàng)

                rebar get-deps
              
            • 編譯

                rebar compile
              
            • 在dhtcrawler目錄下,啟動(dòng)erlang

                erl -pa ebin
              
            • 在erlang shell里運(yùn)行爬蟲(chóng),erlang語(yǔ)句以點(diǎn)號(hào)(.)作為結(jié)束

                crawler_app:start().
              
            • erlang shell里運(yùn)行HTTP服務(wù)器

                crawler_http:start().
              
            • 瀏覽器里輸入localhost:8000/index.html,這個(gè)時(shí)候還沒(méi)有索引到資源,建議監(jiān)視網(wǎng)絡(luò)流量以觀察爬蟲(chóng)程序是否正確工作

            爬蟲(chóng)程序啟動(dòng)時(shí)會(huì)讀取priv/dhtcrawler.config配置文件,該文件里配置了DHT節(jié)點(diǎn)的UDP監(jiān)聽(tīng)端口、節(jié)點(diǎn)數(shù)量、數(shù)據(jù)庫(kù)地址等,可自行配置。

            接下來(lái)我會(huì)談?wù)劯鞑糠值膶?shí)現(xiàn)方法。

            posted on 2013-06-20 14:44 Kevin Lynx 閱讀(7819) 評(píng)論(9)  編輯 收藏 引用 所屬分類(lèi): networkerlang

            評(píng)論

            # re: 使用erlang實(shí)現(xiàn)P2P磁力搜索(開(kāi)源) 2014-01-19 11:28 蘇堤

            因?yàn)椴欢绦颍?qǐng)問(wèn)有木有完成好的網(wǎng)頁(yè)源碼?  回復(fù)  更多評(píng)論   

            # re: 使用erlang實(shí)現(xiàn)P2P磁力搜索(開(kāi)源) 2014-03-18 22:46 磁力搜索

            歡迎體驗(yàn)http://btbook.net/  回復(fù)  更多評(píng)論   

            # re: 使用erlang實(shí)現(xiàn)P2P磁力搜索(開(kāi)源) 2014-08-05 21:07 taojiaen

            rebar顯示 Dependency not available 是什么意思啊  回復(fù)  更多評(píng)論   

            # re: 使用erlang實(shí)現(xiàn)P2P磁力搜索(開(kāi)源) 2014-12-01 10:36 DHTSEEK

            www.dhtseek.com已經(jīng)在用,謝謝  回復(fù)  更多評(píng)論   

            # re: 使用erlang實(shí)現(xiàn)P2P磁力搜索(開(kāi)源) 2014-12-04 20:46 于濤

            @磁力搜索
            @DHTSEEK
            請(qǐng)問(wèn)網(wǎng)站源碼出售嗎?請(qǐng)問(wèn)樓主的程序可以付費(fèi)調(diào)試嗎?
              回復(fù)  更多評(píng)論   

            # re: 使用erlang實(shí)現(xiàn)P2P磁力搜索(開(kāi)源) 2015-01-17 11:28 Rebar

            F:\Program Files\dhtcrawler-master>rebar get-deps
            ==> dhtcrawler-master (get-deps)
            Uncaught error in rebar_core: {'EXIT',
            {badarg,
            [{re,split,
            [[84,69,83,83,68,65,84,65,95,80,82,69,70,73,
            88,61,70,58,92,28779,36710,22836,20225,
            19994,29256,92,83,121,115,116,101,109,92,
            116,101,115,115,100,97,116,97,92],
            "=",
            [{return,list},{parts,2}]],
            [{file,"re.erl"},{line,154}]},
            {rebar_port_compiler,'-os_env/0-lc$^0/1-0-',
            1,[]},
            {rebar_port_compiler,'-os_env/0-lc$^0/1-0-',
            1,[]},
            {rebar_port_compiler,os_env,0,[]},
            {rebar_port_compiler,setup_env,1,[]},
            {rebar_core,'-setup_envs/2-lc$^0/1-0-',2,[]},
            {rebar_core,setup_envs,2,[]},
            {rebar_core,execute,4,[]}]}}
            我在本地運(yùn)行rebar get-deps出現(xiàn)這個(gè)錯(cuò)誤,樓主幫忙 看下是什么問(wèn)題啊?沒(méi)玩過(guò),不知道怎么弄。  回復(fù)  更多評(píng)論   

            # re: 使用erlang實(shí)現(xiàn)P2P磁力搜索(開(kāi)源) 2015-08-11 17:28 DHTSEEK

            DHTSEEK百度收錄100多萬(wàn)頁(yè)面啦,目前系統(tǒng)已開(kāi)源,歡迎下載,地址 http://dwz.cn/1gL7Bl  回復(fù)  更多評(píng)論   

            # re: 使用erlang實(shí)現(xiàn)P2P磁力搜索(開(kāi)源) 2015-08-11 17:29 DHTSEEK

            @于濤
            DHTSEEK百度收錄100多萬(wàn)頁(yè)面啦,目前系統(tǒng)已開(kāi)源,歡迎下載,地址 http://dwz.cn/1gL7Bl   回復(fù)  更多評(píng)論   

            # re: 使用erlang實(shí)現(xiàn)P2P磁力搜索(開(kāi)源) 2016-03-04 16:35 蝦米

            @DHTSEEK
            無(wú)法購(gòu)買(mǎi)啊 ··  回復(fù)  更多評(píng)論   

            色综合久久中文色婷婷| 久久精品卫校国产小美女| 久久精品国产秦先生| 亚洲七七久久精品中文国产| 精品久久久久久无码中文字幕一区| 久久久精品午夜免费不卡| 国产成人久久精品麻豆一区| 精品熟女少妇a∨免费久久| 亚洲午夜精品久久久久久人妖| 久久精品无码午夜福利理论片| 久久精品成人欧美大片| 国产一区二区精品久久| 天堂无码久久综合东京热| 欧美麻豆久久久久久中文| 午夜人妻久久久久久久久| 丁香色欲久久久久久综合网| 久久伊人五月丁香狠狠色| 久久精品国产99久久久古代| 久久综合狠狠色综合伊人| 亚洲第一极品精品无码久久| 九九久久精品国产| 天天影视色香欲综合久久| 精品国际久久久久999波多野| 一本久久综合亚洲鲁鲁五月天亚洲欧美一区二区 | 免费一级做a爰片久久毛片潮| 精品乱码久久久久久夜夜嗨| 久久国产免费观看精品3| 中文字幕久久精品| 久久成人永久免费播放| 久久综合丝袜日本网| 国产精品18久久久久久vr| 丁香五月综合久久激情| 久久精品无码一区二区无码| 国产成人无码精品久久久性色| 久久久久99精品成人片| 精品国产99久久久久久麻豆| 理论片午午伦夜理片久久 | 午夜视频久久久久一区| 久久人妻少妇嫩草AV无码蜜桃| 久久91精品综合国产首页| 狠狠色综合久久久久尤物|