Sobre el proyecto
Domain Check es un verificador autoritativo de disponibilidad de dominios que consulta directamente los servidores RDAP del registro, presentando RDAP como el sucesor de WHOIS mandatado por la ICANN. El README compara ambos: RDAP utiliza HTTPS con JSON estructurado, mientras que WHOIS utiliza el puerto TCP 43 en texto plano, carece de soporte para .dev y .app, y devuelve texto específico del registro que es difícil de analizar. El proyecto afirma que, en sus pruebas, whois reportó un dominio registrado como disponible, mientras que RDAP fue preciso en todos los casos de prueba, y adjunta un documento de investigación sobre la comparación de precisión.
Interfaces. El proyecto ofrece tres formas de realizar consultas. Una interfaz web proporciona un formulario sin necesidad de registro. Una API REST ubicada en /api/v1/ admite comprobaciones de dominios individuales, una comprobación multi-TLD que acepta un parámetro tlds separado por comas, un endpoint POST masivo que acepta hasta 50 dominios con un límite de cuerpo de 64 KB, y un endpoint de estado (health). Las respuestas de la API son JSON e informan el dominio, disponibilidad, TLD, marca de tiempo de la comprobación, fuente de datos, estado de la caché y duración; para dominios registrados, también incluyen el registrador, fechas de creación y expiración, servidores de nombres y códigos de estado. Una CLI proporciona subcomandos de check y bulk, comprobación multi-TLD, salida en JSON o CSV, un indicador de progreso para ejecuciones masivas, concurrencia configurable y códigos de salida documentados: 0 cuando todos los dominios comprobados están disponibles, 1 cuando al menos uno está ocupado y 2 en caso de error.
Domain Watch. Una función opcional habilitada con la bandera enable-watch monitorea dominios y envía un webhook cuando uno pasa de registrado a disponible. El registro de un monitoreo devuelve un id, la URL del webhook y un secreto HMAC; las entregas incluyen un encabezado X-DomainCheck-Signature con una firma prefijada con sha256 que los receptores verifican con el secreto. Los monitoreos son de disparo único, expiran después de 90 días, están limitados a 10 por IP cada 24 horas con un intervalo de sondeo predeterminado de 15 minutos, y se describe que incluyen protección contra SSRF, bloqueo de IP privadas y prevención de DNS rebinding. Solo se almacenan el dominio y la URL del webhook.
Los límites de tasa se aplican por IP: 10 solicitudes por minuto para la interfaz web, 60 para la API de comprobación individual y 5 para la masiva; las solicitudes que superen el límite devolverán un error 429 y un encabezado Retry-After.
Autoalojamiento y configuración. Domain Check es un único binario de Go sin dependencias de tiempo de ejecución, o una imagen de Docker; la compilación desde el código fuente requiere Go 1.26 o posterior. Las plantillas y los activos estáticos están integrados en el binario. Los ajustes pueden definirse mediante banderas, variables de entorno DOMCHECK_ o un archivo de configuración YAML, con prioridad de banderas sobre variables de entorno, estas sobre el archivo de configuración y este sobre los valores predeterminados. Los parámetros documentados cubren la dirección de escucha, el tamaño de la caché LRU y los TTL de caché separados para resultados disponibles y registrados, el intervalo de refresco de bootstrap de RDAP de IANA, el manejo de trust-proxy para X-Forwarded-For, orígenes CORS, un endpoint de métricas de Prometheus, formato y nivel de registro, y la ruta de la base de datos de monitoreo, el intervalo de sondeo, el TTL máximo y el límite de monitoreo por IP. Se proporcionan ejemplos de proxy inverso para Caddy y nginx.
Arquitectura. El código está organizado en un punto de entrada de comando más paquetes internos para el motor de comprobación (cliente RDAP, fallback de WHOIS, pre-filtro DNS, cargador de bootstrap de IANA, caché LRU, guardia SSRF, limitación de tasa por registro), configuración por capas, validación de dominios con IDN-to-punycode y extracción de TLD de publicsuffix, el servidor HTTP y manejadores, y la CLI. El README describe el flujo de solicitud como: validación, búsqueda en caché, pre-filtro DNS para descartar rápidamente nombres claramente registrados, limitación de tasa por registro, consulta RDAP, análisis, almacenamiento en caché y respuesta JSON. Los TTL de caché predeterminados son de 5 minutos para resultados disponibles, 1 hora para resultados registrados y 30 segundos para errores.
Seguridad y mantenimiento. El README enumera la protección SSRF, encabezados de seguridad (CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy), un usuario de Docker no root y cero rastreo sin analíticas, cookies ni retención de datos. El desarrollo utiliza go test, pruebas de fuzzing y golangci-lint, y el repositorio menciona configuraciones agresivas de recolección de basura automática de git. El proyecto tiene licencia MIT y se describe como un espejo de lectura de GitHub de una instancia de git autoalojada, con una nota de prueba de espejo al final.
Comments
0 Rating appears after 10 ratings
Sign in to join the discussion.