几年前研究大文件的下载分发,注意到了libtorrent这个非常完善的BT下载库,因此对BT相关协议也有了粗浅的了解。于是我用这个库提供的接口,实现了一个DHT的蜘蛛。

我把这个蜘蛛放到美国的不限制UDP和BT协议的虚拟机上,每天大概可以采集3000-9000个BT种子的相关信息。

之所以选择做BT蜘蛛,是因为当时淘宝上出售的各种DHT蜘蛛,都是带网页病毒的,会感染HTML文件,所以就干脆自己动手了,更安全些。

大概介绍一下原理:
BT种子被制作出来之后,会具有一个HASH值,这个HASH值,就可以对应出一个磁力链链接,比如:magnet:?xt=urn:btih:F5615DFB80AC995787C1B2219A75DF7805278DEA(这个F5615DFB80AC995787C1B2219A75DF7805278DEA就是HASH),只要文件内容相同,那么HASH就是固定的。

BT软件启动时,一般会自动连接到一个DHT网络,这是一个分布式的UDP网络,每台机器维护着若干跟自己相邻的其他BT下载者的IP(以下简称节点)。

当BT软件拿到磁力链HASH之后,就会向周围的节点发布消息,询问“你有这个HASH的文件吗?”如果被询问的节点没有这个文件,那么这些节点就会再向外层继续广播询问,直到找到这个种子为止(为避免广播风暴,这个广播的最大层级会有限制)

当找到有一个节点X有这个种子后,当前机器的BT软件就会与节点X连接,请求节点X把种子发过来,磁力链转种子的工作至此完成。

当其他节点进行磁力链下载时,也会把HASH广播给你,这样你拿到了HASH,也就能顺手把这个HASH转化为种子。

这样,全网流行的BT种子,基本你都可以拿到了。

实在看不懂原理的可以先看看这个视频,大概了解下BT工作机制:https://www.bilibili.com/video/av57748098/

我把BT磁力链蜘蛛源码传到了GitHub,如果觉得对你有用,请不吝赐予我一个星星。
源码地址:

https://github.com/Jobcrazy/BitTorrent-DHT-Spider

源码是基于Linux的,相关编译环境和方法,也有比较详细的说明。

简单讲讲main函数的代码:
初始化libtorrent,并连接到了DHT网络,之后添加了一个虚假的磁力链任务,促使libtorrent去跟其他的DHT节点联系,来获取其他节点正在下载的HASH信息;
监听DHT通知,当收到新的HASH信息时,把HASH添加成BT任务,向其他节点请求种子信息;
监听DHT通知,当收到种子信息时,把种子存到mysql数据库里,数据库的结构也在github里了。

当数据库里有了数据,你需要的是一个支持中文全文搜索的引擎,来打造一个磁力链搜索引擎,这时候你可以通过coreseek这个开源软件来解决。coreseek的教程网上比较好搜到,这里我就不重复了。

基于DHT网络的BT磁力链蜘蛛源码相关推荐

  1. 基于JAVA网络城市交通应急管理系统计算机毕业设计源码+数据库+lw文档+系统+部署

    基于JAVA网络城市交通应急管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 基于JAVA网络城市交通应急管理系统计算机毕业设计源码+数据库+lw文档+系统+部署 本源码技术栈: 项目架构:B ...

  2. 基于DHT网络的最强BT资源搜索引擎engiy.com

    现如今,基DHT网络爬虫的磁力搜索,BT搜索资源已经很多了,但大多是挂马,弹窗垃圾站居多. 只有engiy.com是真正意义上的无广告.并且是实时索引(好像索引用的是elasticsearch).而且 ...

  3. 基于JAVA中文网络小说平台系统计算机毕业设计源码+系统+数据库+lw文档+部署

    基于JAVA中文网络小说平台系统计算机毕业设计源码+系统+数据库+lw文档+部署 基于JAVA中文网络小说平台系统计算机毕业设计源码+系统+数据库+lw文档+部署 本源码技术栈: 项目架构:B/S架构 ...

  4. 生成对抗网络入门详解及TensorFlow源码实现--深度学习笔记

    生成对抗网络入门详解及TensorFlow源码实现–深度学习笔记 一.生成对抗网络(GANs) 生成对抗网络是一种生成模型(Generative Model),其背后最基本的思想就是从训练库里获取很多 ...

  5. 价格走势PHP源码,php多币种区块链交易所源码 存取功能齐全+最新价格走势正常...

    php多币种区块链交易所源码 存取功能齐全+最新价格走势正常「已测试」 一款多币种区块链交易所源码,功能很全面带有身份认证,量化交易等.搭建此源码需要非大陆服务器,不然api访问不到会导致卡.慢.打不 ...

  6. 基于JAVA中小型饭馆餐饮管理系统计算机毕业设计源码+系统+数据库+lw文档+部署

    基于JAVA中小型饭馆餐饮管理系统计算机毕业设计源码+系统+数据库+lw文档+部署 基于JAVA中小型饭馆餐饮管理系统计算机毕业设计源码+系统+数据库+lw文档+部署 本源码技术栈: 项目架构:B/S ...

  7. 基于JAVA第二课堂选课系统计算机毕业设计源码+系统+lw文档+部署

    基于JAVA第二课堂选课系统计算机毕业设计源码+系统+lw文档+部署 基于JAVA第二课堂选课系统计算机毕业设计源码+系统+lw文档+部署 本源码技术栈: 项目架构:B/S架构 开发语言:Java语言 ...

  8. 基于java点播影院运营系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署

    基于java点播影院运营系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署 基于java点播影院运营系统计算机毕业设计源码+系统+lw文档+mysql数据库+调试部署 本源码技术栈: ...

  9. 基于Java毕业设计校园外卖零食商城系统源码+系统+mysql+lw文档+部署软件

    基于Java毕业设计校园外卖零食商城系统源码+系统+mysql+lw文档+部署软件 基于Java毕业设计校园外卖零食商城系统源码+系统+mysql+lw文档+部署软件 本源码技术栈: 项目架构:B/S ...

  10. 基于Java毕业设计政府采购线上招投标平台源码+系统+mysql+lw文档+部署软件

    基于Java毕业设计政府采购线上招投标平台源码+系统+mysql+lw文档+部署软件 基于Java毕业设计政府采购线上招投标平台源码+系统+mysql+lw文档+部署软件 本源码技术栈: 项目架构:B ...

最新文章

  1. 爱了!Intellij IDEA 自带的 Vim 插件真心不错
  2. java8日期加本地,日期时间API(JDK8新增)
  3. 第1章 游戏之乐——构造数独
  4. MyBatis之简单了解Plugin
  5. 排序 np_干货 | XGBoost在携程搜索排序中的应用
  6. java asm 中文文档_Java ASM3学习(3)
  7. Linux服务器查看日志方法小结
  8. 【强化学习】CARLA——Windows安装
  9. 下载vc_redist运行库
  10. tracePro材料目录与名称
  11. 计算机类中文核心期刊
  12. 计算机中取消打印任务,取消打印任务的具体方法步骤
  13. 企业邮箱注册—企业微信邮箱2.0时代正式来临!
  14. 计算机视觉牛人、网站、资源
  15. 昭阳E47G开机问题
  16. 周鸿祎:“作恶”的创新?
  17. 螺旋矩阵---易懂系列
  18. 公网IP,内网IP,动态IP,静态IP的区别
  19. 联合国安理会默哀悼念汶川大地震遇难者(组图)
  20. [Java] Node和Entry

热门文章

  1. 史蒂夫 乔布斯:遗失的访谈
  2. linux python-3.10.4 安装
  3. EditPlus3破解版下载以及配置java使用教程
  4. 模仿概念版QQ登录界面(超炫)
  5. Unity Koreographer 之 音乐制作插件介绍学习,一般使用步骤介绍(包括:一般音乐游戏制作流程简绍) 一
  6. 学生成绩管理系统mysql课程设计_数据库课程设计报告-学生成绩管理系统
  7. 俄罗斯方块(C语言实现)
  8. 小米随身wifi的linux驱动,小米随身wifi驱动
  9. Java进阶--Java垃圾回收机制全面解析
  10. Web前端开发技术第三版课后练习答案