Net::Whois - Scraper que verifica dados de domínio via RDAP e WHOIS
Visão geral do scraper

Os dados do domínio são coletados via RDAP (HTTP, JSON) ou WHOIS (porta 43) — dependendo da zona do domínio. Para cada TLD no scraper, os servidores RDAP e WHOIS são definidos; se o RDAP estiver disponível para a zona, a solicitação é feita através dele primeiro; em caso de erro, recorre-se ao WHOIS.
Saiba mais: RDAP (inglês), WHOIS.
A funcionalidade do A-Parser permite salvar as configurações de extração de dados para uso futuro (presetes), definir agendamentos de extração de dados e muito mais. Você pode usar a multiplicação automática de consultas, substituição de subconsultas a partir de arquivos, busca por combinações alfanuméricas e listas para obter o máximo de resultados possível.
A gravação dos resultados é possível no formato e estrutura que você necessita, graças ao poderoso motor de modelos integrado Template Toolkit, que permite aplicar lógica adicional aos resultados e exibir os dados em vários formatos, incluindo JSON, SQL e CSV.
Casos de uso do scraper
🔗 Selecionando dados arbitrários
Net::Whois selecionando dados arbitrários
🔗 Parâmetros de domínios
Obtenção de parâmetros por domínios
🔗 Notificação de prazos de domínios
Recebemos notificações no Telegram sobre o fim do prazo de registro de domínios
🔗 Coleta de base de endereços de e-mail
O modelo permite coletar endereços de e-mail de domínios através do serviço Whois.
Dados coletados
- Se o domínio está registrado ou não
- Data de expiração do registro do domínio
- Quando o domínio foi registrado
- Data da última atualização do registro
- URL do servidor RDAP — em caso de solicitação RDAP bem-sucedida
- Servidor WHOIS utilizado — em solicitações WHOIS; frequentemente vazio em RDAP
- Lista de servidores de nomes (NS) do domínio
- Registrador do domínio
- Status atual do domínio
- Data em que o domínio ficará livre
- Resposta bruta — texto WHOIS ou JSON RDAP
Recursos
- Seleção automática de RDAP ou WHOIS por zona de domínio (prioridade RDAP)
- Suporte para domínios internacionais (IDN, por exemplo яндекс.рф)
Opções de uso
- Coleta de domínios livres ou que ficarão livres em breve
- Coleta de lista de servidores NS
- Obtenção de status de domínios
Consultas
Como consultas, é necessário indicar o domínio do site desejado, por exemplo:
a-parser.com
yandex.ru
google.com
vk.com
facebook.com
Opções de exibição de resultados
O A-Parser suporta formatação flexível de resultados graças ao motor de modelos integrado Template Toolkit, o que permite exibir resultados em formato livre, bem como estruturado, como CSV ou JSON
Saída padrão
Formato do resultado:
$query - registered: $registered, expire: $expire_date, creation: $creation_date
O resultado exibe o domínio, se está registrado, a data de expiração e a data de registro do domínio:
facebook.com - registered: 1, expire: 30.03.2028, creation: 29.03.1997
a-parser.com - registered: 1, expire: 25.02.2022, creation: 25.02.2012
vk.com - registered: 1, expire: 23.06.2021, creation: 24.06.1997
yandex.ru - registered: 1, expire: 01.10.2021, creation: 23.09.1997
google.com - registered: 1, expire: 14.09.2028, creation: 15.09.1997
Exibição da lista de NS
Formato do resultado:
$ns.format('$server\n')
Exemplo de resultado:
demi.ns.cloudflare.com
vern.ns.cloudflare.com
Exibição de dados de prazos do domínio em CSV
Formato do resultado:
[% tools.CSVline(query, registered, expire_date, creation_date, updated_date, free_date, whoisserver, rdapserver, registrar) %]
Exemplo de resultado (domínio .com, resposta via RDAP — whoisserver vazio, rdapserver preenchido):
a-parser.com,1,25.02.2027,25.02.2012,10.02.2026,none,,https://rdap.verisign.com/com/v1/domain/a-parser.com,"Squarespace Domains II LLC"
Exibição da lista de NS em tabela CSV
Formato do resultado:
[% FOREACH ns;
tools.CSVline(query, server);
END %]
Exemplo de resultado:
a-parser.com,demi.ns.cloudflare.com
a-parser.com,vern.ns.cloudflare.com
Dump de resultados em JSON
Formato geral do resultado:
[% IF notFirst;
",\n";
ELSE;
notFirst = 1;
END;
obj = {};
obj.query = query;
obj.registered = p1.registered;
obj.expire_date = p1.expire_date;
obj.creation_date = p1.creation_date;
obj.updated_date = p1.updated_date;
obj.free_date = p1.free_date;
obj.whoisserver = p1.whoisserver;
obj.rdapserver = p1.rdapserver;
obj.registrar = p1.registrar;
obj.domains = [];
FOREACH item IN p1.ns;
obj.domains.push({
server = item.server
});
END;
obj.json %]
Texto inicial:
[
Texto final:
]
Exemplo de resultado (RDAP):
[{
"registered": 1,
"rdapserver":"https://rdap.verisign.com/com/v1/domain/a-parser.com",
"query":"a-parser.com",
"free_date":"none",
"domains":[
{
"server":"demi.ns.cloudflare.com"
},
{
"server":"vern.ns.cloudflare.com"
}
],
"registrar":"Squarespace Domains II LLC",
"expire_date":"25.02.2027",
"creation_date":"25.02.2012",
"whoisserver":"",
"updated_date":"10.02.2026"
}]
Para que as opções "Prepend text" e "Append text" estejam disponíveis no Editor de tarefas, é necessário ativar "More options".
Processamento de resultados
O A-Parser permite processar resultados diretamente durante a extração de dados; nesta seção, apresentamos os casos mais populares para o scraper Net::Whois
Obtenção do registrador do domínio
Ao responder via WHOIS, o campo $p1.data contém texto; via RDAP — JSON. Para obter o registrador em ambos os casos, adicione dois Construtores de resultados.
Adicionar Result Builders (Construtor de resultados) e selecionar a fonte na lista suspensa: $p1.data. Selecionar o tipo: RegEx Match. No campo Expressão Regular, inserir: Registrar:\s*(.+) e salvar na variável registrarwhois.
Adicionar novamente um Result Builders (Construtor de resultados) e selecionar a fonte na lista suspensa: $p1.data. Selecionar o tipo: RegEx Match. No campo Expressão Regular, inserir: "entities"[\s\S]+?"vcardArray"[\s\S]+?"fn"[\s\S]+?"text"[\s\S]+?"([^"]+?)" e salvar na variável registrarrdap.
Adicionar ao Result format (Formato do resultado): [% IF registrarrdap == 'none' %]$query - $registrarwhois[% ELSE %]$query - $registrarrdap[% END %] — se o RDAP não encontrar o nome (registrarrdap for igual a none), o valor do WHOIS será exibido, caso contrário, o do RDAP.
Baixar exemplo
Como importar o exemplo para o A-Parser
eJyVVNtO20AQ/RVrFEQoJioPfbGEqkATiSpNKAH1wU6lVTxJt6x3ze46EEX5987Y
jh1TpKpP9lzPmdvuYIPWSaMhugzBC/fk7iw69A6ieAd5+Q8RWFxL562wEEIurKMg
cohhij6Kfvwy0pEhxZUolIdwB36bI4UZym5limSUKckrYzPhKWnpBhuhCnaLT4Lb
cdBg2FTkwdVVcKqNxtPgZNF7LtBug4ug1/i8MCbFjSbz0fsenIUdpl/InmjYLxYh
VNBuXPIg5F5+OaiLbIxzscEHw2ylwlY9JmkqMubbS4VHtg6qgvpnA//KGUSaSk/d
FKpC4Ca1qI9aPnO9K6EchsCUJbqxNRnl9FhmKOs40IuhqgsoR1EGf69imhyOuI4F
MUnfWqRHK7yxs5wJkX4HRg+VmuAGleuQ2F4XUqU00uGKgm7rwPddZn/l2Df1HUPR
4F8scWiylNL17FsblZqJWTd2JTPpSeFuTKGp9o8hPCHmh57B1FB3MmOxQakDa3Ba
2xw1L1k7smHeqjpVdMZypNyBM4VdEl5M+DRlwa2vl5k2C1/L5PyN4P6waVGSuA/9
wfnZwfhQBZDoDU+xu7Ww2If/BZQAak97hS6BmLCSZL44/5zAZilsOrRWbLv6le7K
vFpdTT/+mQD9nSXwT858R0SZ6C2NXsn1rL7pQxML/UDPxkzfmCxXyBPXhVK0sA7v
28sZunpBWWhn9zb4poQgHs1bQnSMcl/nFbfcSmL3iTlntGPHqHXKpVDq8X5ybOFA
500+0yNr3yx2eTIgLqpHbbCkW2wvs6TKRS7p3teGDpEk7kT9BDZP5Y7W+be7q7Qc
Vur2fwBx19yZ
Configurações possíveis
| Parâmetro | Valor padrão | Descrição |
|---|---|---|
| Recursive query | ☐ | Permite obter uma versão estendida do WHOIS |
| WHOIS server | Permite definir seu próprio servidor WHOIS | |
| RDAP server | Permite definir seu próprio servidor RDAP | |
| Checking by DNS | ☑ | Permite verificar se o domínio está registrado com base na existência de um IP para o domínio |
| Checking domains by DNS record | ☑ | Verificação de IP; se encontrar o status ALLOCATED, define o domínio como registrado; se a opção estiver desativada, a verificação de IP não ocorre |
| Force DNS check for not found domains | ☑ | Verificação forçada se o domínio foi identificado como não registrado |