dht 爬虫 java_[C#搜片神器] 之P2P中DHT网络爬虫原理

本文介绍了DHT网络爬虫的工作原理,包括DHT网络的节点查找算法、Kademlia协议及消息交互,以及如何通过DHT爬虫收集资源信息。通过理解DHT爬虫,可以实现P2P资源搜索引擎,同时提供了种子文件下载的实现方法。
摘要由CSDN通过智能技术生成

昨天由于开源的时候没有注意运行环境,直接没有考虑下载BT种子文件时生成子文件夹,可能导致有的朋友运行没有结果,在此表示对支持开源的朋友道谦.另外也对源程序增加了一些说明,已经提交.

个人电脑编译环境是WIN7+VS2005,如果程序运行出错,请自行下载代码进行编译.

先说下运行方法:

1)有固定IP的朋友可以试试H31DHT.exe数据抓取程序,会获取一些数据,如果>2小时还没有数据返回,直接说明不是固定IP的返回数据很少;

2)直接从http://torrage.com/sync下载几个文本文件回来,放到程序目录下,H31DHTMgr程序会自动遍历这个文件夹取HASH文件,

存储到数据库中,如果将此网站的200多万数据(个人估计的)全部下载成功,那也可以搜索很多内容了.

3)新程序界面如下:需要的自己下载源代码进行编译(VS2005),不提供EXE下载,希望大家感兴趣的一起开源下;

[增加了复制磁链接和下载选中项目的代码,之前只能查看,不能显示.]

97f90c90c938e009e9b4ebaa62c2c4a4.png

--------------------先来点大家感兴趣的东西-------------------------------------

大家可能问目前的程序采用什么方法下载BT种子的比较关心,下面就自己的体会给大家说说:

DHT磁力种子其实就是20字节的HASH值,这个值可以直接从很多网站下载种子,举例子说明:

比如说上一篇文件中有那么多HASH值的字符串,怎么利用呢,比如有个HASH值13ce77b3b934b12dc77fded6646426a6db5c3428,有40位,因为在内存里面占用20位,显示为16进制所以显示为40位了;

有这个HASH值,我们可以加上磁头magnet:?xt=urn:btih:     两个合在一起就可以下载BT种子了,

当然需要使用BT工具,(magnet:?xt=urn:btih:13ce77b3b934b12dc77fded6646426a6db5c3428)复制试下.

但我们的程序没有使用BT协议去下载,而是通过别人的网站下载.

会提示找不到这个种子,那就说明这个网站没有收集到最新的BT种子.

可以从其它网站下载,大家可以去看下源程序里面的组合方法.

-------------------------下面介绍一些从网上收集的资料信息----------------------------------------------

DHT网络爬虫基于DHT网络构建了一个P2P资源搜索引擎。这个搜索引擎不但可以用于构建DHT网络中活跃的资源索引(活跃的资源意味着该网络中肯定有人至少持有该资源的部分数据),还可以分析出该网络中的热门分享资源。网络上其实也有其他人做了类似的应用:DHTmonitoring,Crawling Bittorrent DHT

DHT/Magnet/Torrent

在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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值