Le API DNS di Google forniscono un metodo rapido e affidabile per risolvere i nomi di dominio e recuperare informazioni DNS. Utilizzando Python, possiamo facilmente effettuare richieste a queste API e gestire le risposte. In questo articolo, esploreremo come fare ciò con un esempio pratico.
Prima di iniziare, assicurati di avere installato Python sul tuo sistema. Puoi scaricarlo e installarlo dal sito ufficiale di Python. Inoltre, avrai bisogno della libreria requests
per effettuare le chiamate HTTP. Puoi installarla utilizzando pip:
pip install requests
Iniziamo importando le librerie necessarie e configurando alcune costanti di base. La nostra richiesta sarà inviata all'endpoint https://dns.google/resolve
.
import requests
API_URL = "https://dns.google/resolve"
Creiamo una funzione che effettua una richiesta alle API DNS di Google. La funzione accetterà un nome di dominio e un tipo di record DNS (ad esempio, A
, AAAA
, CNAME
, MX
, ecc.) e restituirà la risposta JSON o un messaggio di errore.
def query_dns(domain, record_type):
params = {
'name': domain,
'type': record_type
}
try:
response = requests.get(API_URL, params=params)
response.raise_for_status() # Verifica che la risposta HTTP abbia avuto successo
return response.json()
except requests.exceptions.HTTPError as http_err:
print(f"HTTP error occurred: {http_err}")
except requests.exceptions.ConnectionError as conn_err:
print(f"Connection error occurred: {conn_err}")
except requests.exceptions.Timeout as timeout_err:
print(f"Timeout error occurred: {timeout_err}")
except requests.exceptions.RequestException as req_err:
print(f"An error occurred: {req_err}")
return None
Una volta ottenuta la risposta, possiamo gestirla e visualizzare le informazioni desiderate. Per esempio, possiamo estrarre gli indirizzi IP dal record A
per un dato dominio.
def get_ip_addresses(domain):
response = query_dns(domain, 'A')
if response and 'Answer' in response:
return [answer['data'] for answer in response['Answer']]
else:
return None
Ora possiamo utilizzare le funzioni definite per effettuare una richiesta e visualizzare i risultati. Ecco un esempio completo che mostra come ottenere gli indirizzi IP per un dominio specifico.
if __name__ == "__main__":
domain = "example.com"
ip_addresses = get_ip_addresses(domain)
if ip_addresses:
print(f"Indirizzi IP per {domain}:")
for ip in ip_addresses:
print(ip)
else:
print(f"Nessun indirizzo IP trovato per {domain} o si è verificato un errore nella richiesta.")
Conclusioni
Effettuare una richiesta alle API DNS di Google con Python è un processo semplice e diretto. Utilizzando la libreria requests
, possiamo inviare facilmente le richieste HTTP e gestire le risposte JSON per ottenere le informazioni DNS desiderate. Questo approccio può essere esteso per supportare vari tipi di record DNS e può essere integrato in applicazioni più complesse per la gestione delle risorse di rete.