import telnetlib from threading import Thread import Queue import time global start start = time.time() outQueue = Queue.Queue(0) inQueue = Queue.Queue(0) oRead = file("domains","rt") lDomains = oRead.readlines(1) for sDomain in lDomains: sDomain = sDomain.strip().lower() if "." not in sDomain: sDomain+= ".com" if ".com" not in sDomain: continue inQueue.put(sDomain) inQueue.put(None) class Whois(Thread): def __init__ (self, queue): self.__queue = queue Thread.__init__(self) def run(self): while 1: try: sDomain = self.__queue.get() if sDomain is None: lDomains = oRead.readlines(1) for sDomain in lDomains: sDomain = sDomain.strip()+".com" inQueue.put(sDomain) inQueue.put(None) tn = telnetlib.Telnet("whois.internic.com","43") tn.write(sDomain + "\n") res = tn.read_all() res = res.lower() res = res.split("\n") for x in res: if "creation date:" in x.lower(): creation = x.split(":")[1].strip().lower() if "expiration date:" in x.lower(): expiration = x.split(":")[1].strip().lower() outQueue.put([sDomain,creation,expiration]) except: pass class Writer(Thread): def __init__ (self, queue): self.__queue = queue Thread.__init__(self) def run(self): while 1: try: oWrite = file("processed","at") res = self.__queue.get() if res is None: break oWrite.write('"%s","%s","%s"\n' % (res[0],res[1],res[2])) except: print "error out" def main(): workers = 7 for i in range(workers): Whois(inQueue).start() for i in range(workers): Writer(outQueue).start() if __name__ == "__main__": main()