Pular para o conteúdo principal

Net::Whois - Scraper que verifica dados de domínio via RDAP e WHOIS

Visão geral do scraper

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

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"
}]
dica

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âmetroValor padrãoDescrição
Recursive queryPermite obter uma versão estendida do WHOIS
WHOIS serverPermite definir seu próprio servidor WHOIS
RDAP serverPermite definir seu próprio servidor RDAP
Checking by DNSPermite verificar se o domínio está registrado com base na existência de um IP para o domínio
Checking domains by DNS recordVerificaçã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 domainsVerificação forçada se o domínio foi identificado como não registrado