代码连接:https://github.com/zhangbohun/BitTorrentNetworkSpider

代码简要介绍,主要分为几个部分

0 lib库,包括bencode(用于处理B编码),decodeh(用于处理可能的编码问题),pymmh3(用于实现简化版的布隆过滤器),SQLiteUtil(用于实现sqlite3单线程操作)

1 sinffer用于获取网络内的Node节点信息,主要依靠KRPC协议中定义的find_node方法

2 receiver用于接收其他节点发来的信息,包括find_node回复(可以获取新的node信息),以及ping(需要回应pong),find_node,get_peers,announce_peer(可以获取到有用的种子信息)请求

3 inquirer用于获取元数据,通过MetadataInquirer根据bep_0009获取元数据扩展协议实现

4 recorder用于记录种子元数据到数据库,这里用的是标准库自带的sqlite3

5 BloomFilter通过pymmh3以及位操作实现的简化版的布隆过滤器用于数据过滤减少重复操作

6 以上整体构成 Spider主要部分,另包括多线程,获取随机 id,以及 join_dht 加入 DHT 网络等实现

BitTorrent协议DHT网络爬虫BitTorrentNetworkSpider相关推荐

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

    继续接着上一篇写:使用C#实现DHT磁力搜索的BT种子后端管理程序+数据库设计(开源)[搜片神器] 昨天由于开源的时候没有注意运行环境,直接没有考虑下载BT种子文件时生成子文件夹,可能导致有的朋友运行 ...

  2. DHT网络爬虫的实现

    DHT协议原理以及一些重点分析: 要做DHT的爬虫,首先得透彻理解DHT,这样才能知道在什么地方究竟该应用什么算法去解决问题.关于DHT协议的细节以及重要的参考文章,请参考文末1 DHT协议作为BT协 ...

  3. P2P中DHT网络爬虫

    DHT网络爬虫基于DHT网络构建了一个P2P资源搜索引擎.这个搜索引擎不但可以用于构建DHT网络中活跃的资源索引(活跃的资源意味着该网络中肯定有人至少持有该资源的部分数据),还可以分析出该网络中的热门 ...

  4. dht java_一个java版本的dht网络爬虫,伪装dht节点获取hashinfo

    dht-spider 一个java版本的dht网络爬虫,伪装dht节点获取hashinfo 导入idea 在入口类DhtNetworkApplication 的main方法下 修改udp端口 直接运行 ...

  5. c语言dht网络爬虫,用Node.js实现一个DHT网络爬虫,一步一步完成一个BT搜索引擎(一)...

    传统的Bittorrent服务 传统的BT服务是由两部份组成的,tracker服务和p2p服务,通过前者用户可以知道谁拥有资源,后者是通过前者向拥有资源的用户发起下载. Trackerless 目前在 ...

  6. python DHT网络爬虫

    DHT是什么 DHT全称叫分布式哈希表(Distributed Hash Table),是一种分布式存储方法.在不需要服务器的情况下,每个客户端负责一个小范围的路由,并负责存储一小部分数据,从而实现整 ...

  7. websocket python爬虫_python实现基于websocket协议的网络爬虫

    WebSocket是一种在单个TCP连接上进行全双工通信的协议,简单来说就是建立一个TCP长连接之后,你可以服务器随时可以给客户端发送消息,客户端随时可以给服务器发送消息,而以前只能是客户端给服务器发 ...

  8. 搜片神器 之DHT网络爬虫的代码实现方法

    分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 继续接着 ...

  9. [搜片神器]之DHT网络爬虫的代码实现方法

    继续接着第一篇写:使用C#实现DHT磁力搜索的BT种子后端管理程序+数据库设计(开源)[搜片神器] 谢谢园子朋友的支持,已经找到个VPS进行测试,国外的服务器: http://www.sosobta. ...

最新文章

  1. java 字符流与字节流区别_JAVA 字符流与字节流的区别
  2. 01_字符串处理-----03_替换和校正标识符
  3. 人类历史上有过哪些令人毛骨悚然的实验?
  4. windows 创建不可见账户
  5. 3D顶点转换和法线转换
  6. 用matlab微分方程求解,用MATLAB求解微分方程
  7. python是高级语言还是低级语言_高级与低级编程语言的解释,哪一种更容易上手?...
  8. c语言美元转换人民币的程序,【其它】编程题: 1.编写一个人民币和美元的双向汇率转换程序,实现美元和人民币转换,汇率:1美元=6.92人民币...
  9. Qt5.2编译时出现/usr/bin/ld: cannot find -lxxx 错误
  10. R语言开发之EXCEL文件的读写操作了解下
  11. (转)利用Office里面的OWC组件进行画图
  12. php模拟登陆,php实现模拟登陆正方教务系统
  13. 阿里员工发帖吐槽人不如驴,“阿里驴学”究竟是什么?
  14. 净利环比缩水过半,Salesforce龙头地位不保?
  15. 悬而未决 诺基亚N900升MeeGo仍是个谜
  16. [NIO-2]通道和FileChannel
  17. PowerShell说明摘要
  18. linux软件安装——rpm、yum、源码包安装
  19. Java多个ppt合并脚本_Java 合并、拆分PPT幻灯片
  20. 数智随行 | 探想未来工厂数字化,强化智能设备管理

热门文章

  1. 内存申请标记注意区分___GFP_HIGH和___GFP_HIGHMEM
  2. substring从指定字符串开始截取
  3. 前端过程性考核,肝了一宿终于肝出来了!!!
  4. Git 使用的一些命令以及Git commit 注释格式
  5. MPL2.0协议简介——Mozilla Public License Version 2.0
  6. bilibili外链链接到网页
  7. 不一样的【青椒炒蛋】—36道超人气家常菜
  8. 赶路人-----李小晓
  9. 阿里云ECS云服务器CPU处理器型号主频睿频实例规格表
  10. MySQL 索引学习笔记