Python: búsqueda de DNS
Las direcciones IP cuando se traducen a formatos o palabras legibles por humanos se conocen como nombres de dominio. La traducción de los nombres de dominio a la dirección IP es administrada por el módulo de PythondnspythonEste módulo también proporciona métodos para encontrar registros CNAME y MX.
Encontrar un registro 'A'
En el siguiente programa, encontramos la dirección IP del dominio usando el método dns.resolver. Por lo general, esta asignación entre la dirección IP y el nombre de dominio también se conoce como registro 'A'.
import dnspython as dns
import dns.resolver
result = dns.resolver.query('tutorialspoint.com', 'A')
for ipval in result:
print('IP', ipval.to_text())
Cuando ejecutamos el programa anterior, obtenemos el siguiente resultado:
('IP', u'94.130.81.180')
Encontrar el valor CNAME
Un registro CNAME también conocido como registro de nombre canónico es un tipo de registro en el sistema de nombres de dominio (DNS) que se utiliza para asignar un nombre de dominio como alias de otro dominio. Los registros CNAME siempre apuntan a otro nombre de dominio y nunca directamente a una dirección IP. En el método de consulta a continuación, especificamos el parámetro CNAME para obtener el valor CNAME.
import dnspython as dns
import dns.resolver
result = dns.resolver.query('mail.google.com', 'CNAME')
for cnameval in result:
print ' cname target address:', cnameval.target
Cuando ejecutamos el programa anterior, obtenemos el siguiente resultado:
cname target address: googlemail.l.google.com.
Encontrar registro MX
Un registro MX, también llamado registro de intercambio de correo, es un registro de recursos en el Sistema de nombres de dominio que especifica un servidor de correo responsable de aceptar mensajes de correo electrónico en nombre del dominio de un destinatario. También establece el valor de preferencia que se usa para priorizar la entrega de correo si hay varios servidores de correo disponibles. Al igual que en los programas anteriores, podemos encontrar el valor del registro MX utilizando el parámetro 'MX' en el método de consulta.
result = dns.resolver.query('mail.google.com', 'MX')
for exdata in result:
print ' MX Record:', exdata.exchange.text()
Cuando ejecutamos el programa anterior, obtenemos el siguiente resultado:
MX Record: ASPMX.L.GOOGLE.COM.
MX Record: ALT1.ASPMX.L.GOOGLE.COM.
MX Record: ALT2.ASPMX.L.GOOGLE.COM.
Lo anterior es una salida de muestra y no la exacta.