亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > C++ > 正文

使用C#實現DHT磁力搜索的BT種子后端管理程序+數據庫設計(開源)[搜片神器]

2020-05-23 14:19:56
字體:
來源:轉載
供稿:網友

先直接上程序界面,了解整體工作流程是什么樣子的,求服務器進行掛機測試,需要固定IP,空間大概需要10G左右(主要是BT種子占用空間過大),最好有SQLSERVER來做為存儲數據庫,目前采用的是ACCESS數據庫做為測試,怕后期數據過百萬,對網站進行查詢操作很慢。

如果程序運行的時間夠長,基本上網絡上的種子都會過來,相當于搜片神器了.

開源地址:https://github.com/h31h31/H31DHTMgr

程序下載:H31DHT下載

使用C#實現DHT磁力搜索的BT種子后端管理程序+數據庫設計(開源)[搜片神器]

也提供ASP網站的訪問模式:

使用C#實現DHT磁力搜索的BT種子后端管理程序+數據庫設計(開源)[搜片神器]

 

正在運行中的狀態:

使用C#實現DHT磁力搜索的BT種子后端管理程序+數據庫設計(開源)[搜片神器]

本次主要介紹對DHT磁力搜索的HASH文件進行處理操作流程。

后臺處理程序主要采用C#里面讀取文件類來進行讀取,目前文件格式分為兩種,一種是從http://torrage.com/sync下載回來的文件進行處理,

使用C#實現DHT磁力搜索的BT種子后端管理程序+數據庫設計(開源)[搜片神器]

另外一種是采用C++程序對DHT網絡中的HASH文件進行搜索存儲的自定義文件,

使用C#實現DHT磁力搜索的BT種子后端管理程序+數據庫設計(開源)[搜片神器]

里面有HASH值和時間IP等信息,可以通過這些IP值分析出對方電腦上有哪些BT文件,當然這里面的HASH值對應的文件對應的可是當前活躍在網絡上的文件,與上面網站上下載的固定的文件值有區別,

有了這些IP值,個人也可以做些行為分析方面的工作,比如哪些城市的IP在下載些什么類型的文件。

 

下面介紹下數據庫方面的設計工作:

1.初步考慮到SQLSERVER對自己電腦工作速度會有影響,沒有安裝SQLSERVER數據庫,采用ACCESS來進行處理操作;

2.ACCESS數據庫每個表的大小最好控制不要超過4G,所以設計每表不超過100百萬條數據;

3.對BT種子文件進行解析后,提取里面的文件名字,按照文件類型存儲到不同的表中,主要分為6大類,電影,音樂,圖片,書箱,程序,其它類,

4.由于BT種子里面語言對應的不一樣,有中文,英文,日文,韓國等語言,對于搜索界面如果全部存儲到一塊,沒有什么問題,但會影響查詢速度,因為中國人一般喜歡用中文查詢,如果想查日文,對選項進行選擇一下,這樣會對所有的表查詢都會有很大提高,因為每個表的文件都基本上針對幾種語言;

5.對于BT種子里面的文件列表直接采用100百萬一個表,如果超過了,直接存儲第二塊表,因為主表里面有存儲自己的文件列表在哪個表的關鍵字段;

6.另外對數據庫信息也比較嚴謹一些,由于種子文件里面有很多廣告信息,比如視頻種子里面經常有網站URL,TXT,MHT等信息鏈接,程序經過初步判斷直接不存儲到文件表數據庫中,占用數據庫空間,影響查詢速度,另外查詢出來顯示列表也不好看.

7.對于一個種子里面經常有>200多個的種子文件也沒有進行存儲,一個種子有很多文件也比較浪費空間,再說這種種子保存下來基本上都沒什么意義,直接PASS;

8.對于文件名里面有網站信息的也采取的過濾措施,對查詢有很好幫助.

數據庫表設計列表:

使用C#實現DHT磁力搜索的BT種子后端管理程序+數據庫設計(開源)[搜片神器]

存儲DHT文件名字的表:

使用C#實現DHT磁力搜索的BT種子后端管理程序+數據庫設計(開源)[搜片神器]

存儲種子文件列表:

使用C#實現DHT磁力搜索的BT種子后端管理程序+數據庫設計(開源)[搜片神器]

 

--------------------------下面先介紹一下DHT的工作原理--------------------------------

DHT網絡本質上是一個用于查詢的網絡,其用于查詢一個資源有哪些計算機正在下載。每個資源都有一個20字節長度的ID用于標示,稱為infohash。當一個程序作為DHT節點加入這個網絡時,就會有其他節點來向你查詢,當你做出回應后,對方就會記錄下你。對方還會詢問其他節點,當對方開始下載這個infohash對應的資源時,他就會告訴所有曾經詢問過的節點,包括你。這個時候就可以確定,這個infohash對應的資源在這個網絡中是有效的。

關于這個網絡的工作原理,參看Kevin寫的:P2P中DHT網絡爬蟲以及寫了個磁力搜索的網頁

獲取到infohash后能做什么?關鍵點在于,我們現在使用的磁力鏈接(magnet url),是和infohash對應起來的。也就是拿到infohash,就等于拿到一個磁力鏈接。但是這個爬蟲還需要建立資源的信息,這些信息來源于種子文件。種子文件其實也是對應到一個資源,種子文件包含資源名、描述、文件列表、文件大小等信息。獲取到infohash時,其實也獲取到了對應的計算機地址,我們可以在這些計算機上下載到對應的種子文件。

在獲取到infohash后,從一些提供映射磁力鏈到種子文件服務的網站上直接下載了對應的種子。

http://torrage.comhttps://zoink.ithttp://bt.box.n0808.com

-------------------------我們后臺處理程序就從上面進行種子的下載工作---------------------------

下面重點介紹下我們程序的模塊設計:

使用C#實現DHT磁力搜索的BT種子后端管理程序+數據庫設計(開源)[搜片神器]

1.H31SQL類主要方面進行ACCESS和SQLSERVER數據庫操作進行初步封裝的一個類;

2.H31Debug主要是日志輸出類

3.H31Down主要是下載BT種子文件進行的類;

4.TorrentFile類是用來解析BT種子文件類,由于目前可能有的BT種子格式對不上,有些文件解析不上;

5. MainForm主程序界面。

------------------------------------

下面介紹程序處理數據的主要流程:

 1.讀取本地文件,采用正則表達式對數據進行提取

 

 

 

[csharp] 

  • /// <summary>  
  • /// 正則表達式取出內容 2013-07-16  
  • /// </summary>  
  • private int GetHashLineContent(string hashline, ref HASHITEM item1)  
  • {  
  •     if (hashline.Length < 50)  
  •     {  
  •         if (hashline.Length == 40)  
  •         {  
  •             item1.hashKey = hashline.Trim();  
  •             item1.recvTime = Convert.ToDateTime(DateTime.Now.ToString("yyyy-MM-dd HH:mm:ss"));  
  •             item1.recvIp = "127.0.0.1";  
  •             item1.recvPort = 8080;  
  •             return 1;  
  •         }  
  •         else  
  •         {  
  •             int a = 0;  
  •         }  
  •     }  
  •     else  
  •     {  
  •         string pattern = @"ash/[(.*)/] Time/#(.*)/# ip/:(.*)/:(.*)/.";  
  •         Match usermatch = Regex.Match(hashline, pattern, RegexOptions.IgnoreCase);  
  •         if (usermatch.Groups.Count == 0)  
  •         {  
  •             pattern = @"ash/[(.*)/] Time/#(.*)/# ip/:(.*)/:(.*)/.(.*)/#";  
  •             usermatch = Regex.Match(hashline, pattern, RegexOptions.IgnoreCase);  
  •         }  
  •   
  •         if (usermatch.Groups.Count >= 4 && recvthreadison)  
  •         {  
  •             item1.hashKey = usermatch.Groups[1].Value.ToString();  
  •             item1.recvTime = Convert.ToDateTime(usermatch.Groups[2].Value.ToString());  
  •             item1.recvIp = usermatch.Groups[3].Value.ToString();  
  •             item1.recvPort = Convert.ToInt32(usermatch.Groups[4].Value.ToString());  
  •             return 1;  
  •         }  
  •     }  
  •     return 0;  
  •   
  • }  
  • 2.從網站下載BT種子文件來進行處理

     

     

     

    [csharp] 

  • private int DownLoadFileToSaveFile(string strURL, string fileName,int timeout1)  
  • {  
  •     Int32 ticktime1 = System.Environment.TickCount;  
  •     try  
  •     {  
  •         Int32 ticktime2 = 0;  
  •         byte[] buffer = new byte[4096];  
  •   
  •         WebRequest wr = WebRequest.Create(strURL);  
  •         wr.ContentType = "application/x-bittorrent";  
  •         wr.Timeout = timeout1;  
  •         WebResponse response = wr.GetResponse();  
  •         int readsize = 0;  
  •         {  
  •             bool gzip = response.Headers["Content-Encoding"] == "gzip";  
  •             Stream responseStream = gzip ? new GZipStream(response.GetResponseStream(), CompressionMode.Decompress) : response.GetResponseStream();  
  •   
  •             using (MemoryStream memoryStream = new MemoryStream())  
  •             {  
  •                 responseStream.ReadTimeout = timeout1*2;  
  •                 int count = 0;  
  •                 do  
  •                 {  
  •                     count = responseStream.Read(buffer, 0, buffer.Length);  
  •                     memoryStream.Write(buffer, 0, count);  
  •                     readsize += count;  
  •                     Thread.Sleep(1);  
  •                 } while (count != 0);  
  •                 ticktime2 = System.Environment.TickCount;  
  •   
  •                 byte[] result = memoryStream.ToArray();  
  •                 Thread.Sleep(10);  
  •                 using (BinaryWriter writer = new BinaryWriter(new FileStream(fileName, FileMode.Create)))  
  •                 {  
  •                     writer.Write(result);  
  •                 }  
  •             }  
  •             Int32 ticktime3 = System.Environment.TickCount;  
  •             //H31Debug.PrintLn("下載成功" + strURL + ":" + readsize.ToString() + ":" + (ticktime2 - ticktime1).ToString() + "-" + (ticktime3 - ticktime2).ToString());  
  •         }  
  •         return 1;  
  •     }  
  •     catch (Exception e)  
  •     {  
  •         Int32 ticktime3 = System.Environment.TickCount;  
  •         //H31Debug.PrintLn("下載失敗" + strURL + ":" +  (ticktime3 - ticktime1).ToString());  
  •         return -2;  
  •     }  
  • }  
  • 3.通過BT文件解析類來讀取文件名和列表

    4.通過正確正則表達式過濾掉WWW. BBS. 等網站信息,因為這樣會影響搜索結果.

     

     

     

    [csharp] 

  • /// <summary>  
  • /// 去掉標題中的網址信息  
  • /// </summary>  
  • private string GetOneGoodString(string title)  
  • {  
  •     //去掉標題中的網址信息  
  •     string res = title;  
  •     try  
  •     {  
  •         //string pattern = @"/[(.*)([/w-]+://?|(www|bbs)[.])([^/]]*)/]";  
  •         string pattern = @"(/[|/@|/【|/s|/(|/{)(.*)([/w-]+://?|(www|bbs)[.])([^(/]|/@|/】|/)|/})]*)(/]|/@|/】|/)|/})";  
  •         Match usermatch = Regex.Match(title, pattern, RegexOptions.IgnoreCase);  
  •         if (usermatch.Groups.Count > 1)  
  •         {  
  •             res = res.Replace(usermatch.Groups[0].Value.ToString(), " ");  
  •             res = res.Trim();  
  •         }  
  •         pattern = @"(/[|/@|/【|/s|/(|/{)(.*)/.(com|edu|gov|mil|net|org|biz|info|name|museum|us|ca|uk|cc|me|cm)([^(/]|/@|/】|/)|/}|/s)]*)(/]|/@|/】|/)|/}|/s)";  
  •         //pattern = @"(/[|/@|/【)(.*)([/w-]+://?|(www|bbs)[.])([^(/]|/@|/】)]*)(/]|/@|/】)";  
  •         usermatch = Regex.Match(res, pattern, RegexOptions.IgnoreCase);  
  •         if (usermatch.Groups.Count > 1)  
  •         {  
  •             res = res.Replace(usermatch.Groups[0].Value.ToString(), " ");  
  •             res = res.Trim();  
  •         }  
  •         pattern = @"(www|bbs)(.*)(com|edu|gov|mil|net|org|biz|info|name|museum|us|ca|uk|cc|me|cm)";  
  •         usermatch = Regex.Match(res, pattern, RegexOptions.IgnoreCase);  
  •         if (usermatch.Groups.Count > 1)  
  •         {  
  •             res = res.Replace(usermatch.Groups[0].Value.ToString(), " ");  
  •             res = res.Trim();  
  •         }  
  •         if (res.Length <= 5 && res.Length<title.Length)  
  •         {  
  •             int a = 0;  
  •             res = title;  
  •         }  
  •   
  •     }  
  •     catch (System.Exception ex)  
  •     {  
  •         H31Debug.PrintLn(ex.Message);  
  •         res = title;  
  •     }  
  •     return res;  
  • }  
  • 5.判斷文件名是中英文,日文等信息存儲到不同的表中;

     

     

     

    [csharp] 

  • //判斷是否是中文,如果是日文等,則存儲到另外一個表中  
  • private int ISChineseAndEnglist(string title)  
  • {  
  •     try  
  •     {  
  •         string pattern = @"[/uac00-/ud7ff]+";//判斷韓語     
  •         Match usermatch = Regex.Match(title, pattern, RegexOptions.IgnoreCase);  
  •         if (usermatch.Groups.Count >= 1 && usermatch.Groups[0].Value.Length >= 1)  
  •             return 0;  
  •   
  •         pattern = @"[/u0800-/u4e00]+";//判斷日語     
  •         usermatch = Regex.Match(title, pattern, RegexOptions.IgnoreCase);  
  •         if (usermatch.Groups.Count >= 1 && usermatch.Groups[0].Value.Length >= 1)  
  •             return 0;  
  •   
  •         pattern = @"[/u4e00-/u9fa5]+";//判斷漢字  
  •         usermatch = Regex.Match(title, pattern, RegexOptions.IgnoreCase);  
  •         if (usermatch.Groups.Count >= 1 && usermatch.Groups[0].Value.Length >= 1)  
  •             return 1;  
  •   
  •         //判斷英文,數字  
  •         byte[] byte_len = System.Text.Encoding.Default.GetBytes(title);  
  •         if (byte_len.Length == title.Length)  
  •             return 1;  
  •   
  •     }  
  •     catch (System.Exception ex)  
  •     {  
  •         H31Debug.PrintLn(ex.Message);  
  •     }  
  •     return 0;  
  • }  
  • 開源地址:https://github.com/h31h31/H31DHTMgr

     程序下載:H31DHT下載

    使用C#實現DHT磁力搜索的BT種子后端管理程序+數據庫設計(開源)[搜片神器]

    下一文章準備對DHT的研究進行文章介紹.如果大家推薦度比較高,我下一步過兩天就開源C++寫的H31DHT數據抓取數據的程序,程序都是采用VS2005編寫.

     

    第一次運行H31DHTMgr程序可能沒有數據,可以先從從http://torrage.com/sync下載一個TXT文件回來進行處理 ;

    第一次運行H31DHT數據抓取程序可能很久才有幾要數據回來,DHT網絡好像對固定IP的比較喜歡,返回信息比較多,所以ADSL的抓取速度也不會很快.

    另外求服務器進行程序測試,需要有固定IP,10G的WIN服務器空間,h31h31@163.com,謝謝.

    由于DHT獲取的種子內容帶AV內容的多很多,所以不提供ASP網站查詢的代碼工作,如果提供境外服務器測試,可以提供ASP網站查詢代碼.

    希望有興趣的朋友一起把這個后臺管理程序修改得更加完美一些.

    由于第一次開源作品,希望大家推薦.

    原文地址:
    http://blog.csdn.net/dyllove98/article/details/9455987

    發表評論 共有條評論
    用戶名: 密碼:
    驗證碼: 匿名發表
    亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
    日韩av在线播放资源| 亚洲a级在线播放观看| 日本精品久久久久久久| 狠狠综合久久av一区二区小说| 欧美一区视频在线| 国产一区二区三区中文| 欧美日本黄视频| 91视频九色网站| 亚洲人成电影在线播放| 亚洲视频在线观看网站| 亚洲爱爱爱爱爱| 欧美精品一区在线播放| 国产精品免费视频久久久| 亚洲福利视频久久| 亚洲福利影片在线| 国产一区二区三区在线观看视频| 久久成人一区二区| 日本精品免费一区二区三区| 亚洲国产福利在线| 亚洲国产日韩欧美在线图片| 91精品久久久久久久久久久| 亚洲第一视频网| 国产精品亚洲片夜色在线| 国产精品永久免费视频| 久久99久久久久久久噜噜| 日韩成人激情在线| 亚洲一级免费视频| 国产精品久久久久久搜索| 日韩在线观看网站| 国产成人啪精品视频免费网| 亚洲视频国产视频| 久久久爽爽爽美女图片| 91久久久久久久久久| 日韩精品视频在线播放| 亚洲美女喷白浆| 亚洲国产天堂久久综合| 亚洲美女av在线播放| 日韩精品视频在线观看免费| 欧美精品少妇videofree| 亚洲97在线观看| 久久久久九九九九| 国产欧美精品va在线观看| 国产精品视频成人| 国产精品久久一区| 日韩精品免费在线观看| 欧美老少配视频| 日韩av电影院| 欧美性猛交xxxx富婆弯腰| 91久久精品在线| 国产精品青草久久久久福利99| 国产成人avxxxxx在线看| 日韩三级成人av网| 欧美激情综合色| 黄色成人av在线| 热re91久久精品国99热蜜臀| 国产日韩精品视频| 中文字幕日韩av综合精品| 亚洲第一中文字幕在线观看| 国产网站欧美日韩免费精品在线观看| 欧美在线观看一区二区三区| 国产伊人精品在线| 97免费中文视频在线观看| 久久影视免费观看| 亚洲18私人小影院| 日本精品在线视频| 欧美一级视频在线观看| 日韩精品高清视频| 在线一区二区日韩| 欧美激情视频在线免费观看 欧美视频免费一| 夜夜嗨av一区二区三区四区| 国产成人一区二区在线| 亚洲一级黄色av| 中文字幕久热精品视频在线| 九九精品视频在线观看| 国产91ⅴ在线精品免费观看| 亚洲影院色无极综合| 992tv在线成人免费观看| 久久人体大胆视频| 亚洲影院色无极综合| 精品毛片网大全| 欧美国产精品人人做人人爱| 国产亚洲精品美女久久久久| 日韩福利伦理影院免费| 欧美成年人在线观看| 欧美精品情趣视频| 亚洲国产成人一区| 欧美高清视频一区二区| 国产精品三级久久久久久电影| 久久成人精品视频| 国产欧美日韩免费看aⅴ视频| 91精品国产综合久久香蕉| 国产精品一久久香蕉国产线看观看| 国产成人自拍视频在线观看| 国产成人精品久久| 国产一区二区三区久久精品| 成人在线一区二区| 欧洲亚洲在线视频| 久久久久久久久久国产精品| 欧美精品一二区| 欧美激情精品久久久久久免费印度| 九九热精品视频在线播放| 国产精品久久久久av| 日韩免费av一区二区| 欧美大成色www永久网站婷| 久久久久999| 日韩高清不卡av| 亚洲国内高清视频| 动漫精品一区二区| 欧美视频第一页| 91av中文字幕| 亚洲视频在线观看免费| 欧美在线视频免费观看| 91中文字幕在线| 久久成人18免费网站| 在线观看日韩av| 欧美日韩国产区| 国模精品视频一区二区三区| 亚洲最大av在线| 欧美xxxx14xxxxx性爽| 激情av一区二区| 亚洲人成啪啪网站| 欧美老女人www| 亚洲欧美精品在线| 欧美国产中文字幕| 欧美激情在线一区| 欧美日韩成人免费| 国产精品扒开腿做爽爽爽的视频| 午夜精品久久久久久久99黑人| 欧美精品激情在线| 国产精品一区二区三区久久久| 秋霞av国产精品一区| 亚洲最大成人在线| 97婷婷大伊香蕉精品视频| 91在线精品播放| 最近2019中文字幕一页二页| 日韩高清欧美高清| 在线播放亚洲激情| 亚洲国产精品va在线| 91免费精品国偷自产在线| 亚洲女人天堂成人av在线| 亚洲天堂第二页| 亚洲黄色av网站| 欧美日韩激情美女| 午夜精品久久久久久久久久久久久| 欧美尤物巨大精品爽| 精品久久久久久久久久久久久久| 国产精品一二三在线| 欧美大片免费看| 日韩欧美在线免费| 国语自产精品视频在免费| 国产精品看片资源| 中文字幕精品久久久久| 中文字幕九色91在线| 91大神在线播放精品| 久色乳综合思思在线视频| 日韩在线视频二区| 亚洲欧美综合v| 2020久久国产精品| www.亚洲一区| 日韩男女性生活视频| 日韩在线观看网址| 亚洲一区二区黄| 国产在线精品播放| 亚洲女人天堂网|