Como descobrir programaticamente se um nome de domínio está registrado ou não
eu usopywhois para determinar se um nome de domínio está registrado ou não. Aqui está o meu código fonte. (todas as permutações dea.net
parazzz.net
)
#!/usr/bin/env python
import whois #pip install python-whois
import string
import itertools
def main():
characters = list(string.ascii_lowercase)
##domain names generator
for r in range(1, 4) :
for name in itertools.permutations(characters, r) : #from 'a.net' to 'zzz.net'
url = ''.join(name) + '.net'
#check if a domain name is registered or not
try :
w = whois.whois(url)
except (whois.parser.PywhoisError): #NOT FOUND
print(url) #unregistered domain names?
if __name__ == '__main__':
main()
Eu obtive os seguintes resultados:
jv.net
uli.net
vno.net
xni.net
No entanto, todos os nomes de domínio acima já foram registrados. Não é preciso.Alguém pode explicar isso? Existem muitos erros:
fgets: Connection reset by peer
connect: No route to host
connect: Network is unreachable
connect: Connection refused
Timeout.
Existe uma maneira alternativa, relatadaaqui.
import socket
try:
socket.gethostbyname_ex(url)
except:
print(url) #unregistered domain names?
Ao falar de velocidade, eu usomap
para processamento paralelo.
def select_unregisteredd_domain_names(self, domain_names):
#Parallelism using map
pool = ThreadPool(16) # Sets the pool size
results = pool.map(query_method(), domain_names)
pool.close() #close the pool and wait for the work to finish
pool.join()
return results