def dhtcrawler(selfaddr, bootaddr, bootinfo): MAX_WORKING_TIME = 60*10 dht = DHT(host=selfaddr[0], port=selfaddr[1]) dht.start() dht.bootstrap(bootaddr[0], bootaddr[1]) dht.ht.add_hash(bootinfo) time.sleep(MAX_WORKING_TIME) dht.stop() return
def get_peers(self, magnet, iterations=5): dht = DHT(host='0.0.0.0', port=0) dht.start() dht.bootstrap('router.bittorrent.com', 6881) dht.ht.add_hash(magnet.decode("hex")) result = [] for count in xrange(iterations): peers = dht.ht.get_hash_peers(magnet.decode("hex")) for peer in peers: result.append((peer)) time.sleep(3) dht.stop() return [p[0] for p in list(set(result))]
logging.getLogger("btdht").addHandler(stdout_handler) logger = logging.getLogger(__name__) logger.setLevel(loglevel) logger.addHandler(stdout_handler) # Start DHT Node no port 60000 dht = DHT(host='0.0.0.0', port=60000) dht.start() # Boostrap it dht.bootstrap('router.bittorrent.com', 6881) # Find me peers for that torrent hashes dht.ht.add_hash("746385fe32b268d513d068f22c53c46d2eb34a5c".decode("hex")) #dht.ht.add_hash("c90db98c5aabe64dcd7f730d816e755242fffbd4".decode("hex")) #dht.ht.add_hash("a961bc2b93a2304880f919e304424a14400ba8a2".decode("hex")) for count in xrange(10): logger.info("DHT Nodes found: %d" % (dht.rt.count())) logger.info("Bad DHT nodes found: %d" % (dht.rt.bad_count())) logger.info("Total peers found: %d" % (dht.ht.count_all_peers())) # How many peers at this moment? peers = dht.ht.get_hash_peers("746385fe32b268d513d068f22c53c46d2eb34a5c".decode("hex")) for peer in peers: logger.info("Found peer: %s:%d" % (peer)) time.sleep(3) dht.stop()
logger.setLevel(loglevel) logger.addHandler(stdout_handler) if __name__ == "__main__": # Start DHT Node on port 60000 dht = DHT(host='0.0.0.0', port=60000) dht.start() # Boostrap it dht.bootstrap('router.bittorrent.com', 6881) # Find me peers for that torrent hashes dht.ht.add_hash(current_magnet) res = [] for count in xrange(10): logger.info("DHT Nodes found: %d" % (dht.rt.count())) logger.info("Bad DHT nodes found: %d" % (dht.rt.bad_count())) logger.info("Total peers found: %d" % (dht.ht.count_all_peers())) # How many peers at this moment? peers = dht.ht.get_hash_peers(current_magnet) for peer in peers: res.append((peer)) logger.info("Found peer: %s:%d" % (peer)) time.sleep(3) logger.info("Found peers (total): %d" % (len(res))) logger.info("Found peers (uniq): %d" % (len(set(res)))) dht.stop()