【DHT】DHT的HASH值和DHT爬虫基础知识

DHT中HASH值
DHT磁力种子其实就是20字节HASH值,可以通过它生成magnet地址也可以直接从很多网站下载种子!
比如:
资源ID:640FE84C613C17F663551D218689A64E8AEBEABE
问题来了,这个HASH值有40位,因为在内存里面占用20位,显示为16进制所以显示为40位了,有这个HASH值,我们可以加上磁头magnet:?xt=urn:btih:  两个合在一起就可以下载BT种子了,magnet:?xt=urn:btih:640FE84C613C17F663551D218689A64E8AEBEABE
这个地址当然需要BT种子下载工具,比如迅雷,但我们的程序没有使用BT协议去下载,而是通过别人的网站下载,可以参考对应的种子下载地址分别为:
https://zoink.it/torrent/640FE84C613C17F663551D218689A64E8AEBEABE.torrent
http://torcache.net/torrent/640FE84C613C17F663551D218689A64E8AEBEABE.torrent 
http://torrage.com/torrent/640FE84C613C17F663551D218689A64E8AEBEABE.torrent
http://bt.box.n0808.com/64/BE/640FE84C613C17F663551D218689A64E8AEBEABE.torrent
【推荐使用最后一个地址】有的时候会提示找不到这个种子,那就说明这个网站没有收集到最新的BT种子.
 
得到对应的种子文件后,可以直接通过程序解析成对象,并读取资源的名称、大小、收录日期、包含的文件等信息,接下来就可以存入数据库为以后的搜索引擎做准备了。
 
要想得到上述的HASH值,需要使用DHT爬虫。
 
DHT爬虫
 
DHT网络爬虫基于DHT网络构建了一个P2P资源搜索引擎。这个搜索引擎不但可以用于构建DHT网络中活跃的资源索引(活跃的资源意味着该网络中肯定有人至少持有该资源的部分数据),还可以分析出该网络中的热门分享资源。
 
 
 
在P2P网络中,要通过种子文件下载一个资源,需要知道整个P2P网络中有哪些计算机正在下载/上传该资源。这里将这些提供某个资源下载的计算机定义为peer。传统的P2P网络中,存在一些tracker服务器,这些服务器的作用主要用于跟踪某个资源有哪些关联的peer。下载这个资源当然得首先取得这些peer。
 
DHT的出现用于解决当tracker服务器不可用时,P2P客户端依然可以取得某个资源的peer。DHT解决这个问题,是因为它将原来tracker上的资源peer信息分散到了整个网络中。这里将实现了DHT协议的计算机定义为节点(node)。通常一个P2P客户端程序既是peer也是节点。DHT网络有多种实现算法,例如Kademlia
 
当某个P2P客户端通过种子文件下载资源时,如果没有tracker服务器,它就会向DHT网络查询这个资源对应的peer列表。资源的标识在DHT网络中称为infohash,是一个20字节长的字符串,一般通过sha1算法获得,也就是一个类似UUID的东西。
 
实际上,种子文件本身就对应着一个infohash,这个infohash是通过种子文件的文件描述信息动态计算得到。一个种子文件包含了对应资源的描述信息,例如文件名、文件大小等。Magnet,这里指的是磁力链接,它是一个类似URL的字符串地址。P2P软件通过磁力链接,会下载到一个种子文件,然后根据该种子文件继续真实资源的下载。
 
磁力链接中包含的最重要的信息就是infohash。这个infohash一般为40字节或32字节,它其实只是资源infohash(20字节)的一种编码形式。
 
更多扩展阅读:
 
BitTorrent的DHT协议 http://blog.csdn.net/xxxxxx91116/article/details/7970815
DHT百度百科 http://baike.baidu.com/view/757010.htm
评论 (0) 分享 ()

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址