De la saisie d'un domaine à l'obtention d'un résultat vérifié et sûr.
Un seul champ gère un domaine seul (google.com), une URL complète (https://google.com/search?q=x) ou une liste collée de nombreux domaines : un par ligne ou séparés par des virgules.
Les schémas, chemins, chaînes de requête, ports et points finaux sont retirés pour ne garder qu'un nom d'hôte simple. Les domaines IDN/unicode sont convertis en punycode. Tout ce qui n'est pas un domaine public plausible — une adresse IP, des espaces, une étiquette trop longue — est rejeté immédiatement.
Une instance de dns.Resolver interroge les serveurs DNS configurés (Cloudflare et Google par défaut) pour les enregistrements A et AAAA en parallèle. Aucune API de recherche tierce n'intervient : ce serveur dialogue directement avec le DNS.
Avant qu'une IP soit renvoyée, elle est comparée aux plages privées, de bouclage, de lien local et de métadonnées cloud. Si un domaine ne se résout qu'en adresses situées dans ces plages — y compris via du DNS rebinding — la recherche est signalée comme non résoluble plutôt que de divulguer une adresse interne.
Un délai DNS dépassé, SERVFAIL ou REFUSED est retenté automatiquement avec un délai exponentiel. Un domaine qui n'existe tout simplement pas (NXDOMAIN) ou qui était invalide dès le départ n'est jamais retenté : il échoue immédiatement.
Dès que vous soumettez un lot, le travail de résolution passe à un processus worker en arrière-plan avec une concurrence maîtrisée : votre requête revient immédiatement avec un ID de tâche, et la page interroge la progression en direct au lieu de garder une connexion ouverte.
Chaque résultat — domaine, adresses résolues, statut, durée — est enregistré et peut être consulté dans le tableau de bord ou téléchargé en CSV ou JSON à tout moment.