Sobre o projeto

Domain Check é um verificador autoritativo de disponibilidade de domínios que consulta diretamente os servidores RDAP do registro, apresentando o RDAP como o sucessor do WHOIS mandatado pela ICANN. O README compara os dois: o RDAP utiliza HTTPS com JSON estruturado, enquanto o WHOIS utiliza TCP plaintext na porta 43, carece de suporte para .dev e .app, e retorna texto específico de cada registro que é frágil para processar. O projeto afirma que, em seus testes, o whois relatou um domínio registrado como disponível, enquanto o RDAP foi preciso em todos os casos de teste, e vincula um documento de pesquisa sobre a comparação de precisão. Interfaces. O projeto oferece três formas de consulta. Uma UI web fornece um formulário sem necessidade de cadastro. Uma API REST reside em /api/v1/ e suporta verificações de domínio único, uma verificação multi-TLD que passa um parâmetro tlds separado por vírgulas, um endpoint POST em massa que aceita até 50 domínios com um limite de corpo de 64 KB, e um endpoint de saúde. As respostas da API são em JSON e informam o domínio, disponibilidade, TLD, timestamp da verificação, fonte de dados, status do cache e duração; para domínios registrados, incluem também o registrador, datas de criação e expiração, servidores de nome e códigos de status. Uma CLI fornece subcomandos check e bulk, verificação multi-TLD, saída em JSON ou CSV, um indicador de progresso para execuções em massa, concorrência configurável e códigos de saída documentados: 0 quando todos os domínios verificados estão disponíveis, 1 quando pelo menos um está ocupado e 2 em caso de erro. Domain Watch. Um recurso opcional habilitado com a flag enable-watch monitora domínios assistidos e envia um webhook quando um deles transita de registrado para disponível. O registro de um monitoramento retorna um id, a URL do webhook e um segredo HMAC; as entregas incluem um cabeçalho X-DomainCheck-Signature contendo uma assinatura prefixada com sha256 que os receptores verificam com o segredo. Os monitoramentos são de disparo único, expiram após 90 dias, são limitados a 10 por IP a cada 24 horas com um intervalo de sondagem padrão de 15 minutos, e são descritos como incluindo proteção contra SSRF, bloqueio de IP privado e prevenção de DNS rebinding. Apenas o domínio e a URL do webhook são armazenados. Limites de taxa são aplicados por IP: 10 requisições por minuto para a UI web, 60 para a API de verificação única e 5 para a de massa, com requisições acima do limite retornando 429 e um cabeçalho Retry-After. Auto-hospedagem e configuração. O Domain Check é um único binário Go sem dependências de runtime, ou uma imagem Docker; a compilação a partir do código-fonte requer Go 1.26 ou superior. Templates e ativos estáticos estão incorporados no binário. As configurações podem ser passadas como flags, variáveis de ambiente DOMCHECK_ ou um arquivo de configuração YAML, com precedência de flags sobre variáveis de ambiente, estas sobre o arquivo de configuração e este sobre os padrões. Parâmetros documentados cobrem o endereço de escuta, tamanho do cache LRU e TTLs de cache separados para resultados disponíveis e registrados, intervalo de atualização do bootstrap RDAP da IANA, tratamento de trust-proxy para X-Forwarded-For, origens CORS, um endpoint de métricas Prometheus, formato e nível de log, e o caminho do banco de dados de monitoramento, intervalo de sondagem, TTL máximo e limite de monitoramento por IP. Exemplos de proxy reverso são fornecidos para Caddy e nginx. Arquitetura. O código é organizado em um ponto de entrada de comando mais pacotes internos para o motor de verificação (cliente RDAP, fallback WHOIS, pré-filtro DNS, carregador de bootstrap IANA, cache LRU, guarda SSRF, limitação de taxa por registro), configuração em camadas, validação de domínio com IDN-para-punycode e extração de TLD via publicsuffix, o servidor HTTP e handlers, e a CLI. O README descreve o fluxo de requisição como validação, busca no cache, pré-filtro DNS para descartar nomes claramente registrados, limitação de taxa por registro, a consulta RDAP, processamento, armazenamento em cache e resposta JSON. Os TTLs de cache padrão são listados como 5 minutos para resultados disponíveis, 1 hora para resultados registrados e 30 segundos para erros. Segurança e manutenção. O README lista proteção SSRF, cabeçalhos de segurança (CSP, X-Frame-Options, X-Content-Type-Options, Referrer-Policy), um usuário Docker não-root e zero rastreamento, sem analytics, cookies ou retenção de dados. O desenvolvimento utiliza go test, fuzz testing e golangci-lint, e o repositório observa configurações agressivas de coleta de lixo automática do git. O projeto possui licença MIT e é descrito como um espelho de leitura do GitHub de uma instância git auto-hospedada, com uma nota de teste de espelhamento ao final.