前言
简介
DHT爬虫要做的事情,首先就是要加入到DHT网络中,这样就会源源不断收到其他节点发过来的请求,然后从中获取种子的hash值。
那么问题来了
1: 怎么加入到DHT网络中?
2: 怎么让其他节点给你发消息?
3: 哪些请求里面包含hash信息?
看过上面的文章,大家应该明白DHT网络中节点之间的通信只有下面4种请求
ping
find_node
get_peer
announce_peer
1:加入DHT网络
要加入网络要给下面的根地址发消息:
"router.utorrent.com:6881",
"router.bittorrent.com:6881",
"dht.transmissionbt.com:6881",
向这几个节点查找任意节点(发送find_node请求),然后他们会返回距离该节点最近的K个节点,那么我们再依次向K个节点查找任意节点,以此类推,就有更多的节点认识自己。
2: 加入网络后就会收到其他节点的信息,认识的节点越多收到的消息就越多,所以爬虫应该尽可能让更多的节点认识自己
3: 要获取的hash信息主要是来自announce_peer请求,这个请求同时还会携带ip和port信息,get_peer也可以得到一个hash信息,但是这个hash不能确定是否真实存在,如果我们只是想得到hash值然后通过其的软件下载,也可以把这个hash收集起来。
另外announce_peer请求中implied_port这个