手机访问:wap.265xx.com[搜片神器]直接从DHT网络下载BT种子的方法
转自:http://www.cnblogs.com/miao31/p/3332819.html
DHT抓取程序开源地址:https://github.com/h31h31/H31DHTDEMO
数据处理程序开源地址:https://github.com/h31h31/H31DHTMgr
1.[搜片神器] 之P2P中DHT网络爬虫原理
2.[搜片神器]之DHT网络爬虫的代码实现方法
3.[搜片神器]之DHT网络爬虫的C++程序初步开源
--------------------------------------------------------------------------------------------------------------------
在介绍了这么多期文章后,最后介绍BT网络里面一个比较重要种子下载协议,方便大家知道如何从DHT网络直接下载种子的问题.
先说下我们目前下载电影等文件是如何下载的,比如我们有个BT种子,就可以去下载对应的文件,但如果我们只有个文件名字,如何去找BT种子呢?
首先我们可以去?http://h31bt.com?去通过搜索得到磁连接,然后就由此字符串去下载对应的种子文件和电影等信息,但如果没有网站让你下载种子,我们又当如何去搜索这个种子呢?
通过HTTP直接从WEB服务器上下载,这种直接方便,比如从迅雷服务器上下载种子,再就是通过BT软件从网络里面去获取BT网络里面专门有个下载种子的协议文件,只能下载种子,然后种子下载好后就可以交给BT软件来下载数据了. 如何从DHT网络下载种子,必须先看两个协议文章:
http://www.bittorrent.org/beps/bep_0009.html
http://www.bittorrent.org/beps/bep_0010.html
这里面有介绍,但还是需要说明一下如何操作的流程方便大家更好的理解.
我们的代码流程必须还是基于?DHT抓取程序开源地址:https://github.com/h31h31/H31DHTDEMO?之上,因为是从DHT网络里面获取数据,
需要我们在此之上操作后续流程.
之前的DHT有SEARCH的相关代码来搜索这个HASH对应的哪些IP在提供下载.
搜索到对方返回的IP信息和端口号后,大家可以分析dht.c里面的函数代码dht_periodic(const void *buf, size_t buflen,const struct sockaddr *fromAddr, int fromlen,time_t *tosleep,dht_callback *callback, void *closure)函数里面的ANNOUNCE_PEER返回请求里面带有对方表明自己此BT种子对应的认证码peerid.
知道了对应的IP,端口号,还有种子ID号,就可以向对方发送请求了.
获取HASH是通过UDP网络,但下载BT种子是通过TCP来处理,相当于别人是TCP服务器,我们连接过去,直接下载对应PEERID的种子就行了.
先看http://www.bittorrent.org/beps/bep_0010.html协议介绍,我们必须先握手
handshake message
此包构造比较简单,按照格式进行组装就行了,然后发送出去,对方就会回应自己是什么客户端的软件提供种子下载.
在发送握手后,我们可以接着发送种子数据请求包,需要学习http://www.bittorrent.org/beps/bep_0009.html 里面的内容:
这就需要会bencode的相关代码,这个大家可以网上搜索进行编译,如果实现搞不定,可以留下邮箱我将此类代码发送给你,其实也是网上收集整理的.
如果别人回应的是3,那就直接退出吧,说明别人拒绝了你.
如果回应是2,则返回的是数据区,每块是16K大小,最后一包不是.
下面给出如何进行提交我需要第几包的数据代码:
在接收到一包请求后我们才可以继续下一包的请求,下面给了我们如何解析这一包的问题代码:
第一次调试也很天真的等着DHT网络上的数据过来,需要等很久,而且调试总是发现别人不回应,要么就是拒绝,经过一段时间后,
问朋友总是不对问题,结果是协议没有构造对.下面就需要注意的地方总结下:
1.一定要接收到别的人PEERID后才能够与别人交流,不然别人肯定不理你;
2.构造协议调试不能够在外网络上调试,最好大家将mono-monotorrent源代码下载回来,调试分析下,本地开启服务器;
3.通过本地与mono-monotorrent进行调试,你就可以分析出是哪里不对的问题,是不是协议哪些封装得不对的问题.
4.通过DHT网络下载回来的种子肯定是最新的,WEB下载的可能还没有呢..
5.通过协议下载回来的种子好像没有announce-list,不知道为什么不提供一些内容,可能还有些什么关键地方没有下载,分析mono-monotorrent代码里面就是不提供下载,希望高手指点.
6.TCPClient接收数据区需要开到16K以上,这样方便处理,当然如果会前后拼接包就更好.
7.如果需要bencode相关的编码C++代码,可以在此留言或者给h31h31#163.com发邮件.
如果此文章看不太明白,请先看看之前的文章,分析调试下代码,再来学习此文章可能就比较懂一些.
希望有了解的朋友更好的交流和进步.在此留言学习讨论.
大家看累了,就移步到娱乐区http://h31bt.com?去看看,休息下...
本文转自夏雪冬日博客园博客,原文链接:http://www.cnblogs.com/heyonggang/p/3333072.html,如需转载请自行联系原作者
上一篇:6部法国高分犯罪片,揭示社会的黑暗面
下一篇:吸血鬼幸存者
最近更新科技资讯
- 22年过去了,《透明人》依然是尺度最大的科幻电影,没有之一
- 人类基因编辑技术及其伦理问题
- 不吹不黑,五阿哥版的《嫌疑人》能过及格线
- 论Lacan心理公众号的“双标”特质
- 猎罪图鉴:犯罪实录 女性伦理
- 清入关的第一位皇帝是谁,清朝入关后有几位皇帝?
- 描写露台的优美句子
- 谭德晶:论迎春悲剧的叙事艺术
- 中秋节的好词好句
- 《三夫》:一女侍三夫,尺度最大的华语片要来了
- 赛博朋克的未来,在这里
- 文件1091/721/2A:反概念武器实体的一封信件
- 尤战生:哥伦比亚大学点点滴滴
- 韩国最具独特魅力的男演员(安在旭主演的电视剧有哪些)
- 乃至造句
- 请保护好我们的医生,他们太难了
- GCLL06-土木工程的伦理问题-以湖南凤凰县沱江大桥大坍塌事故为例
- 黄金宝典:九年级道德与法治核心考点必背篇
- 【我心中的孔子】伟大的孔子 思想的泰山
- CAMKII-δ9拮抗剂及其用途
- 选粹 | 郑玉双:法教义学如何应对科技挑战?——以自动驾驶汽车为例
- 苍井空37岁宛若少女,携子送祝福遭热讽,下架所有视频母爱无私
- 日韩新加坡怎么对待影视剧中的裸露镜头
- 中西方文化中的颜色词
- 土豪家的美女摸乳师——关于电影《美人邦》