Pour connaître les DNS (Domain Name System) d’un site Web en Python, vous pouvez utiliser la bibliothèque dnspython et la fonction query.
Tout d’abord, il faut utiliser une bibliothèque qui permet de réaliser des requêtes DNS (Domain Name System). Une option possible est la bibliothèque dnspython. Pour l’installer, exécutez cette commande :
pip install dnspython
Voici un exemple de code qui montre comment faire pour connaître les DNS :
import dns.resolver
def get_dns_records(domain):
resolver = dns.resolver.Resolver()
response = resolver.query(domain)
return [record.to_text() for record in response]
# Exemples d'utilisation
print(get_dns_records("google.com")) # ["172.217.167.206", "172.217.167.174"]
print(get_dns_records("example.com")) # ["93.184.216.34"]
print(get_dns_records("nonexistent.com")) # []
La fonction query de dnspython envoie une requête DNS pour obtenir les enregistrements du type A (adresses IP) associés au domaine donné. Si des enregistrements du type A sont trouvés, la fonction retourne une liste d’objets dns.rdtypes.ANY.A.A, et vous pouvez utiliser la méthode to_text de chaque objet pour obtenir l’adresse IP sous forme de chaîne de caractères. Si aucun enregistrement du type A n’est trouvé, la fonction retourne une liste vide.
Notez que la fonction query de dnspython peut également être utilisée pour obtenir d’autres types d’enregistrements DNS, comme les enregistrements du type MX (serveurs de messagerie) ou du type NS (serveurs de noms). Vous pouvez utiliser la constante dns.rdatatype.MX ou dns.rdatatype.NS en tant que second argument de la fonction query pour obtenir ces types d’enregistrements. Par exemple :
import dns.resolver
def get_mx_records(domain):
resolver = dns.resolver.Resolver()
response = resolver.query(domain, dns.rdatatype.MX)
return [record.to_text() for record in response]
# Exemples d'utilisation
print(get_mx_records("google.com")) # ["30 alt3.aspmx.l.google.com.", "20 alt2.aspmx.l.google.com.", "10 alt1.aspmx.l.google.com.", "40 alt4.aspmx.l.google.com.", "50 alt5.aspmx.l.google.com."]
print(get_mx_records("example.com")) # ["10 mail.example.com."]