webwhoispywhois

Doing a whois with a list of domain names


I've got a file of domain names e.g. equivalent to 2500.

I would like to do a whois on these domain names.

Issue is I've never done that and don't know where to start. If you have any ideas, I'm all ears.

TIA.


Solution

  • You can also use the Linux commandtool whois. The following code opens a subprocess and searches for the domain.

    But you have to be carefull with many requests in short time. The servers will eventually block you after a while. ;)

    import subprocess
    
    def find_whois(domain):
        # Linux 'whois' command wrapper
        # 
        # Executes a whois lookup with the linux command whois.
        # Returncodes from: https://github.com/rfc1036/whois/blob/master/whois.c
    
        domain = domain.lower().strip()
        d = domain.split('.')
        if d[0] == 'www': d = d[1:]
    
        # Run command with timeout
        proc = subprocess.Popen(['whois', domain], stderr=subprocess.PIPE, stdout=subprocess.PIPE)
        ans,err = proc.communicate(input)
    
        if err == 1: raise WhoisError('No Whois Server for this TLD or wrong query syntax') 
        elif err == 2: raise WhoisError('Whois has timed out after ' + str(whois_timeout) + ' seconds. (try again later or try higher timeout)')
        ans = ans.decode('UTF-8')
        return ans
    
    
    with open('domains.txt') as input:
        with open('out.txt','a') as output:
            for line in input:
                output.write(find_whois(line))
    

    The with open as statement handles the filestream. The 'a' at the output file means the file is opened in append-mode.