Python - pesquisa de DNS

Os endereços IP, quando traduzidos para formatos ou palavras legíveis por humanos, tornam-se conhecidos como nomes de domínio. A tradução de nomes de domínio para endereço IP é gerenciada pelo módulo pythondnspython. Este módulo também fornece métodos para descobrir registros CNAME e MX.

Encontrando um registro 'A'

No programa abaixo encontramos o endereço IP do domínio usando o método dns.resolver. Normalmente, esse mapeamento entre endereço IP e nome de domínio também é conhecido 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())

Quando executamos o programa acima, obtemos a seguinte saída -

('IP', u'94.130.81.180')

Encontrando valor CNAME

Um registro CNAME também conhecido como Registro de Nome Canônico é um tipo de registro no Sistema de Nomes de Domínio (DNS) usado para mapear um nome de domínio como um alias para outro domínio. Os registros CNAME sempre apontam para outro nome de domínio e nunca diretamente para um endereço IP. No método de consulta abaixo, especificamos o parâmetro CNAME para obter o 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

Quando executamos o programa acima, obtemos a seguinte saída -

cname target address: googlemail.l.google.com.

Encontrar registro MX

Um registro MX também chamado de registro de servidor de mensagens é um registro de recurso no Sistema de Nomes de Domínio que especifica um servidor de e-mail responsável por aceitar mensagens de e-mail em nome do domínio de um destinatário. Ele também define o valor de preferência usado para priorizar a entrega de correio se vários servidores de correio estiverem disponíveis. Semelhante aos programas acima, podemos encontrar o valor do registro MX usando o parâmetro 'MX' no método de consulta.

result = dns.resolver.query('mail.google.com', 'MX')
for exdata in result:
    print ' MX Record:', exdata.exchange.text()

Quando executamos o programa acima, obtemos a seguinte saída -

MX Record:	ASPMX.L.GOOGLE.COM.
MX Record:	ALT1.ASPMX.L.GOOGLE.COM.
MX Record:	ALT2.ASPMX.L.GOOGLE.COM.

O exemplo acima é um exemplo de saída e não o exato.