À propos du projet

Domain Check est un vérificateur d'autorité de disponibilité de domaine qui interroge directement les serveurs RDAP du registre, présentant RDAP comme le successeur mandaté par l'ICANN pour WHOIS. Le README compare les deux : RDAP utilise HTTPS avec du JSON structuré, tandis que WHOIS utilise le port TCP 43 en texte brut, manque de support pour .dev et .app, et renvoie du texte spécifique au registre difficile à analyser. Le projet indique que lors de ses tests, whois a signalé un domaine enregistré comme disponible, alors que RDAP était précis dans tous les cas de test, et joint un document de recherche sur la comparaison de la précision. Interfaces. Le projet propose trois moyens de consultation. Une interface web fournit un formulaire sans inscription. Une API REST située sous /api/v1/ prend en charge les vérifications de domaine unique, une vérification multi-TLD via un paramètre tlds séparé par des virgules, un point de terminaison POST groupé acceptant jusqu'à 50 domaines avec une limite de corps de 64 Ko, et un point de terminaison de santé. Les réponses de l'API sont en JSON et indiquent le domaine, la disponibilité, le TLD, l'horodatage de la vérification, la source des données, l'état du cache et la durée ; pour les domaines enregistrés, elles incluent également le registraire, les dates de création et d'expiration, les serveurs de noms et les codes d'état. Une CLI propose des sous-commandes check et bulk, la vérification multi-TLD, une sortie JSON ou CSV, un indicateur de progression pour les exécutions groupées, une concurrence configurable et des codes de sortie documentés : 0 quand tous les domaines vérifiés sont disponibles, 1 quand au moins un est pris, et 2 en cas d'erreur. Domain Watch. Une fonctionnalité optionnelle activée avec le drapeau enable-watch surveille les domaines et envoie un webhook lorsqu'un domaine passe de l'état enregistré à disponible. L'enregistrement d'une surveillance renvoie un id, l'URL du webhook et un secret HMAC ; les livraisons incluent un en-tête X-DomainCheck-Signature contenant une signature préfixée par sha256 que les récepteurs vérifient avec le secret. Les surveillances sont à déclenchement unique, expirent après 90 jours, sont limitées à 10 par IP par 24 heures avec un intervalle de sondage par défaut de 15 minutes, et sont décrites comme incluant une protection SSRF, le blocage des IP privées et la prévention du DNS rebinding. Seuls le domaine et l'URL du webhook sont stockés. Des limites de débit sont appliquées par IP : 10 requêtes par minute pour l'interface web, 60 pour l'API de vérification unique et 5 pour le mode groupé, les requêtes dépassant la limite renvoyant un code 429 et un en-tête Retry-After. Auto-hébergement et configuration. Domain Check est un binaire Go unique sans dépendances d'exécution, ou une image Docker ; la compilation à partir des sources nécessite Go 1.26 ou plus récent. Les modèles et les ressources statiques sont intégrés au binaire. Les paramètres peuvent être définis via des drapeaux, des variables d'environnement DOMCHECK_, ou un fichier de configuration YAML, avec une priorité accordée aux drapeaux, puis aux variables d'environnement, puis au fichier de configuration, et enfin aux valeurs par défaut. Les paramètres documentés couvrent l'adresse d'écoute, la taille du cache LRU et les TTL de cache distincts pour les résultats disponibles et enregistrés, l'intervalle de rafraîchissement bootstrap RDAP de l'IANA, la gestion trust-proxy de X-Forwarded-For, les origines CORS, un point de terminaison de métriques Prometheus, le format et le niveau des logs, ainsi que le chemin de la base de données de surveillance, l'intervalle de sondage, le TTL maximum et la limite de surveillance par IP. Des exemples de proxy inverse sont fournis pour Caddy et nginx. Architecture. Le code est organisé autour d'un point d'entrée de commande et de packages internes pour le moteur de vérification (client RDAP, fallback WHOIS, pré-filtre DNS, chargeur bootstrap IANA, cache LRU, garde SSRF, limitation de débit par registre), une configuration stratifiée, la validation de domaine avec conversion IDN-vers-punycode et extraction de TLD via publicsuffix, le serveur HTTP et ses gestionnaires, et la CLI. Le README décrit le flux de requête comme suit : validation, recherche dans le cache, pré-filtre DNS pour court-circuiter les noms clairement enregistrés, limitation de débit par registre, requête RDAP, analyse, stockage en cache et réponse JSON. Les TTL de cache par défaut sont de 5 minutes pour les résultats disponibles, 1 heure pour les résultats enregistrés et 30 secondes pour les erreurs. Sécurité et maintenance. Le README liste la protection SSRF, les en-têtes de sécurité (CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy), un utilisateur Docker non-root et l'absence totale de suivi sans analytique, cookies ou rétention de données. Le développement utilise go test, le fuzz testing et golangci-lint, et le dépôt note des paramètres de garbage collection git automatique agressifs. Le projet est sous licence MIT et est décrit comme un miroir GitHub en lecture seule d'une instance git auto-hébergée, avec une note de test de miroir à la fin.