DHT介绍

DHT(Distributed Hash Table,分布式哈希表),它是在 UDP 通信协议的基础上使用 Kademila(俗称 Kad 算法)算法实现。DHT由节点组成,它存储peer的位置,是一种分布式存储方法。在不需要服务器的情况下,每个客户端负责一个小范围的路由,并负责存储一小部分数据,从而实现整个DHT网络的寻址和存储,其中BT客户端包含一个DHT节点,用来联系DHT中其他节点,从而得到peer的位置,进而通过BitTorrent协议下载。

爬虫原理

  1. 向网络节点发送find_node请求,将爬虫加入其它节点的路由表中。
  2. 收集其它节点发送过来的get_peers、announce_peer请求,请求数据内会包含info_hash。

Go实现

详见Github:(https://github.com/lingfei-zhang/dht-crawler)