Come usare le Google DNS API in Python

Come usare le Google DNS API in Python

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.

Torna su