BitTorrent协议DHT网络爬虫BitTorrentNetworkSpider
代码连接: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相关推荐
- [C#搜片神器] 之P2P中DHT网络爬虫原理
继续接着上一篇写:使用C#实现DHT磁力搜索的BT种子后端管理程序+数据库设计(开源)[搜片神器] 昨天由于开源的时候没有注意运行环境,直接没有考虑下载BT种子文件时生成子文件夹,可能导致有的朋友运行 ...
- DHT网络爬虫的实现
DHT协议原理以及一些重点分析: 要做DHT的爬虫,首先得透彻理解DHT,这样才能知道在什么地方究竟该应用什么算法去解决问题.关于DHT协议的细节以及重要的参考文章,请参考文末1 DHT协议作为BT协 ...
- P2P中DHT网络爬虫
DHT网络爬虫基于DHT网络构建了一个P2P资源搜索引擎.这个搜索引擎不但可以用于构建DHT网络中活跃的资源索引(活跃的资源意味着该网络中肯定有人至少持有该资源的部分数据),还可以分析出该网络中的热门 ...
- dht java_一个java版本的dht网络爬虫,伪装dht节点获取hashinfo
dht-spider 一个java版本的dht网络爬虫,伪装dht节点获取hashinfo 导入idea 在入口类DhtNetworkApplication 的main方法下 修改udp端口 直接运行 ...
- c语言dht网络爬虫,用Node.js实现一个DHT网络爬虫,一步一步完成一个BT搜索引擎(一)...
传统的Bittorrent服务 传统的BT服务是由两部份组成的,tracker服务和p2p服务,通过前者用户可以知道谁拥有资源,后者是通过前者向拥有资源的用户发起下载. Trackerless 目前在 ...
- python DHT网络爬虫
DHT是什么 DHT全称叫分布式哈希表(Distributed Hash Table),是一种分布式存储方法.在不需要服务器的情况下,每个客户端负责一个小范围的路由,并负责存储一小部分数据,从而实现整 ...
- websocket python爬虫_python实现基于websocket协议的网络爬虫
WebSocket是一种在单个TCP连接上进行全双工通信的协议,简单来说就是建立一个TCP长连接之后,你可以服务器随时可以给客户端发送消息,客户端随时可以给服务器发送消息,而以前只能是客户端给服务器发 ...
- 搜片神器 之DHT网络爬虫的代码实现方法
分享一下我老师大神的人工智能教程!零基础,通俗易懂!http://blog.csdn.net/jiangjunshow 也欢迎大家转载本篇文章.分享知识,造福人民,实现我们中华民族伟大复兴! 继续接着 ...
- [搜片神器]之DHT网络爬虫的代码实现方法
继续接着第一篇写:使用C#实现DHT磁力搜索的BT种子后端管理程序+数据库设计(开源)[搜片神器] 谢谢园子朋友的支持,已经找到个VPS进行测试,国外的服务器: http://www.sosobta. ...
最新文章
- java 字符流与字节流区别_JAVA 字符流与字节流的区别
- 01_字符串处理-----03_替换和校正标识符
- 人类历史上有过哪些令人毛骨悚然的实验?
- windows 创建不可见账户
- 3D顶点转换和法线转换
- 用matlab微分方程求解,用MATLAB求解微分方程
- python是高级语言还是低级语言_高级与低级编程语言的解释,哪一种更容易上手?...
- c语言美元转换人民币的程序,【其它】编程题: 1.编写一个人民币和美元的双向汇率转换程序,实现美元和人民币转换,汇率:1美元=6.92人民币...
- Qt5.2编译时出现/usr/bin/ld: cannot find -lxxx 错误
- R语言开发之EXCEL文件的读写操作了解下
- (转)利用Office里面的OWC组件进行画图
- php模拟登陆,php实现模拟登陆正方教务系统
- 阿里员工发帖吐槽人不如驴,“阿里驴学”究竟是什么?
- 净利环比缩水过半,Salesforce龙头地位不保?
- 悬而未决 诺基亚N900升MeeGo仍是个谜
- [NIO-2]通道和FileChannel
- PowerShell说明摘要
- linux软件安装——rpm、yum、源码包安装
- Java多个ppt合并脚本_Java 合并、拆分PPT幻灯片
- 数智随行 | 探想未来工厂数字化,强化智能设备管理
热门文章
- 内存申请标记注意区分___GFP_HIGH和___GFP_HIGHMEM
- substring从指定字符串开始截取
- 前端过程性考核,肝了一宿终于肝出来了!!!
- Git 使用的一些命令以及Git commit 注释格式
- MPL2.0协议简介——Mozilla Public License Version 2.0
- bilibili外链链接到网页
- 不一样的【青椒炒蛋】—36道超人气家常菜
- 赶路人-----李小晓
- 阿里云ECS云服务器CPU处理器型号主频睿频实例规格表
- MySQL 索引学习笔记