[搜片神器]之DHT网络爬虫的C++程序初步开源

回应你们的要求,特意整理了一开始本身整合的代码,这样最简单,最直接的能够分析流程,至于文章里面提供的程序界面更多,须要你们本身开发。html

服务器在抓取和处理同时进行,因此访问速度慢是有些的,特别是搜索速度经过SQL的like来查询慢,正在经过分词改进中。。git

DHT抓取程序开源地址:https://github.com/h31h31/H31DHTDEMOgithub

数据处理程序开源地址:https://github.com/h31h31/H31DHTMgr服务器

经过调试程序你们能够初步分析DHT网络是如何加入的,等你们本身分析会了单一线程的方法,后面如何组织多线程应该没有问题。网络

接着 [搜片神器]之DHT网络爬虫的代码实现方法  这篇文章接着说明如何进入DHT网络的原理。多线程

1.DHT必须把本身电脑当服务器,别人才可以知道本身是谁,因此须要经过UDP绑定端口。函数

2.DHT须要生成一个本身的20位ID号,固然能够经过随机一个数值,而后经过SHA1来生成20位的ID号;post

3.初始化他人服务器的IP信息,这样咱们就能够从他们那里查询咱们要的信息;测试

4.对服务器进行PING操做,服务器就会回应PONG操做,这样就代表服务器活动正常.你们能够看VS调试窗口的输出信息就能够分析出一些流程方面的工做。网站

对应的协议说明:http://www.bittorrent.org/beps/bep_0005.html

 5.收到信息后,经过回调函数进行相关的保存操做就能够了。

6.DHT网络通常PING操做都会有PONG回应,但发送FINDNODE回应的不会是所有有的。

7.因为本身只是假装正常的BT步骤,并无真正的提供种子下载操做,因此咱们只会发get_peers操做,不会发送annouce_peer操做,等待别人给咱们回应annouce_peer操做。

8.请求发送速度不能过快,这样的话本身的带宽也须要很多,须要考虑每一个IP过一下子再请求操做,以避免进对方的黑名单。

在调试了解如何一步步进行DHT网络操做后,annouce_peer过来的HASH就是真正活跃的种子文件,咱们对此保存就能够了。

其它不明白的地方,你们须要自行进行调试解决,分析代码是最好的老师,dht.c dht.h文件可能被我注释了一些地方,你们本身进行对比,尽可能使用原代码。

至于如何从DHT网络直接下载种子文件,须要分析BT种子协议,但通过测试,发现比直接从HTTP网站下载来得慢,直接HTTP下载快不少。

 从DHT网络直接下载种子文件对应的协议说明:

http://www.bittorrent.org/beps/bep_0009.html

http://www.bittorrent.org/beps/bep_0010.html

 

但愿你们多多推荐哦...

相关文章
相关标签/搜索