Net::Whois - Lo Scraper verifica i dati del dominio tramite RDAP e WHOIS
Panoramica dello scraper

I dati sul dominio vengono raccolti tramite RDAP (HTTP, JSON), WHOIS (porta 43) o la pagina web dell'operatore, a seconda della zona di dominio. Per ogni TLD nello scraper sono impostati i server RDAP e WHOIS; se RDAP è disponibile per la zona, la richiesta viene eseguita prioritariamente tramite esso, in caso di errore si passa a WHOIS, e se non sono disponibili né l'uno né l'altro, tramite web, se la pagina esiste.
L'insieme dei metodi di verifica dipende dall'operatore e non solo dal TLD. Alcune zone non hanno WHOIS o RDAP, oppure non funzionano — per decisione dell'operatore. Anche la pagina web per la verifica non è disponibile per tutti: la sua presenza è definita dall'operatore. Se la pagina esiste, lo scraper richiede i dati tramite essa.
Esistono zone in cui l'operatore possiede solo il TLD, mentre i siti vengono registrati su SLD (secondo livello, ad esempio co.uk, org.uk). Il proprietario dell'SLD può essere uno o più, ma non è l'operatore del TLD. L'insieme dei metodi di verifica è definito dal proprietario dell'SLD: WHOIS, RDAP, pagina web, una loro combinazione — o nulla di tutto ciò.
Anche la composizione dei campi in WHOIS e RDAP può variare a causa della legislazione, della politica dell'operatore e delle restrizioni sui dati personali. Tuttavia, l'insieme è generalmente prevedibile: registrazione, date, NS, registrar, stato.
Nella raccolta tramite web non esiste standardizzazione. Viene sempre verificato se il dominio è registrato o meno. Il resto dipende da ciò che l'operatore ha pubblicato sulla pagina: può esserci un set quasi completo, oppure solo il fatto della registrazione.
Maggiori informazioni: RDAP (ingl.), WHOIS.
La funzionalità di A-Parser consente di salvare le impostazioni di scraping per un uso futuro (preset), impostare pianificazioni di scraping e molto altro. È possibile utilizzare la generazione automatica delle query, la sostituzione di sotto-query da file, l'iterazione di combinazioni alfanumeriche e liste per ottenere il massimo numero possibile di risultati.
Il salvataggio dei risultati è possibile nella forma e nella struttura necessaria, grazie al potente motore di modelli integrato Template Toolkit che consente di applicare logica aggiuntiva ai risultati e di esportare i dati in vari formati, inclusi JSON, SQL e CSV.
Casi d'uso dello scraper
🔗 Selezione di dati arbitrari
Net::Whois seleziona dati arbitrari
🔗 Parametri dei domini
Ottenimento dei parametri per i domini
🔗 Notifica sulle scadenze dei domini
Ricezione di notifiche su Telegram sulla scadenza della registrazione dei domini
🔗 Raccolta di database di indirizzi e-mail
Il preset consente di raccogliere indirizzi e-mail dei domini tramite il servizio Whois.
Dati raccolti
L'elenco seguente è un set tipico per WHOIS/RDAP; i campi specifici dipendono dalla risposta del server e dalle leggi. In caso di raccolta tramite web, viene garantita solo la verifica dell'avvenuta registrazione; gli altri campi vengono compilati solo se l'operatore li pubblica.
$registered— indica se il dominio è registrato o meno$expire_date— data di scadenza della registrazione del dominio$creation_date— data di registrazione del dominio$free_date— data in cui il dominio tornerà libero$whoisserver— server WHOIS utilizzato (per query WHOIS; spesso vuoto per RDAP)$rdapserver— URL del server RDAP (in caso di query RDAP riuscita)$registrar— registrar del dominio$updated_date— data dell'ultimo aggiornamento del record$data— risposta grezza: testo WHOIS o JSON RDAP- Array
$ns(Name servers):$ns.$i.server— nome del server NS
- Array
$statuses(Statuses list):$statuses.$i.status— stato del dominio
Funzionalità
- Selezione automatica di RDAP o WHOIS in base alla zona del dominio (priorità RDAP)
- Se una zona non ha un servizio WHOIS/RDAP funzionante, ma dispone di una pagina web dell'operatore, il controllo avviene tramite quest'ultima
- La composizione dei campi WHOIS/RDAP dipende dalla risposta del server e dalla legislazione
- In caso di raccolta tramite web, viene sempre verificata l'esistenza del dominio; gli altri campi vengono estratti solo se l'operatore li fornisce
- Per alcune zone (TLD e SLD) non sono disponibili né WHOIS/RDAP né pagine web — i dati WHOIS non sono accessibili, ma l'esistenza del dominio viene verificata tramite
Net::DNS - Supporto per domini internazionali (IDN, ad esempio яндекс.рф)
Varianti di utilizzo
- Raccolta di domini liberi o di quelli che si libereranno presto
- Raccolta dell'elenco dei server NS
- Ottenimento degli stati dei domini
Query
Come query è necessario indicare il dominio del sito cercato, ad esempio:
a-parser.com
yandex.ru
google.com
vk.com
facebook.com
Varianti di output dei risultati
A-Parser supporta la formattazione flessibile dei risultati grazie al motore di modelli integrato Template Toolkit, che gli consente di produrre risultati in forma arbitraria, così come in forma strutturata, ad esempio CSV o JSON
Output predefinito
Formato del risultato:
$query - registered: $registered, expire: $expire_date, creation: $creation_date
Il risultato mostra il dominio, se è registrato, la data di scadenza e la data di registrazione del dominio:
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
Output dell'elenco NS
Formato del risultato:
$ns.format('$server\n')
Esempio di risultato:
demi.ns.cloudflare.com
vern.ns.cloudflare.com
Output dei dati sulle scadenze del dominio in CSV
Formato del risultato:
[% tools.CSVline(query, registered, expire_date, creation_date, updated_date, free_date, whoisserver, rdapserver, registrar) %]
Esempio di risultato (dominio .com, risposta tramite RDAP — whoisserver vuoto, compilato rdapserver):
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"
Output dell'elenco NS in una tabella CSV
Formato del risultato:
[% FOREACH ns;
tools.CSVline(query, server);
END %]
Esempio di risultato:
a-parser.com,demi.ns.cloudflare.com
a-parser.com,vern.ns.cloudflare.com
Dump dei risultati in JSON
Formato comune del risultato:
[% 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 %]
Testo iniziale:
[
Testo finale:
]
Esempio di risultato (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"
}]
Affinché le opzioni "Prepend text" e "Append text" siano disponibili nell'Editor delle attività, è necessario attivare "More options".
Elaborazione dei risultati
A-Parser consente di elaborare i risultati direttamente durante lo scraping; in questa sezione abbiamo riportato i casi più popolari per lo scraper Net::Whois
Ottenimento del registrar del dominio
Nella risposta tramite WHOIS il campo $p1.data contiene testo; con RDAP — JSON. Per ottenere il registrar in entrambi i casi, aggiungi due Costruttori di risultati.
Aggiungi Result Builders (Costruttore dei risultati) e nel menu a discesa scegli la sorgente: $p1.data. Scegli il tipo: RegEx Match. Nel campo RegEx inserisci: Registrar:\s*(.+) e salva nella variabile registrarwhois.
Aggiungi di nuovo Result Builders (Costruttore dei risultati) e nel menu a discesa scegli la sorgente: $p1.data. Scegli il tipo: RegEx Match. Nel campo RegEx inserisci: "entities"[\s\S]+?"vcardArray"[\s\S]+?"fn"[\s\S]+?"text"[\s\S]+?"([^"]+?)" e salva nella variabile registrarrdap.
Aggiungi in Result format (Formato del risultato): [% IF registrarrdap == 'none' %]$query - $registrarwhois[% ELSE %]$query - $registrarrdap[% END %] — se RDAP non ha trovato il nome (registrarrdap è none), viene mostrato il valore di WHOIS, altrimenti quello di RDAP.
Scarica esempio
Come importare l'esempio in 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
Impostazioni possibili
| Parametro | Valore predefinito | Descrizione |
|---|---|---|
| Recursive query | ☐ | Consente di ottenere la versione estesa di WHOIS |
| WHOIS server | Consente di impostare il proprio server WHOIS | |
| RDAP server | Consente di impostare il proprio server RDAP | |
| Checking by DNS | ☑ | Consente di verificare se il dominio è registrato in base all'esistenza dell'IP per il dominio |
| Checking domains by DNS record | ☑ | Controllo IP: se trova lo stato ALLOCATED, definisce il dominio come registrato; se l'opzione è disattivata, il controllo IP non avviene affatto |
| Force DNS check for not found domains | ☑ | Controllo forzato se il dominio è stato definito come non registrato |