2010-02-03 18 views
6

Esiste un modo relativamente semplice in Java per verificare se un dominio è disponibile o meno?Controlla la disponibilità del dominio Java

Ho bisogno di un metodo affidabile, quindi controllare solo se la connessione può essere effettuata non è sufficiente.

risposta

4

C'è un buon cliente Whois Java qui:

https://github.com/ethauvin/Whois

è possibile eseguirlo dalla riga di comando o interfaccia direttamente con esso:

// don't include the www   
Whois.main(new String[] {"skytouch.com"}); 
+0

È sotto una licenza GPL, quindi puoi sempre modificarlo per fare ciò che vuoi, c'è un file sorgente Whois.java e un file delle proprietà per specificare il server Whois, il gioco è fatto! – Jon

6

La disponibilità del dominio dipende dall'avere un client whois. Ecco un link per l'implementazione di un client whois in Java:

Java Whois Client

Avrai bisogno di analizzare i risultati - formati e seconda di ciò che server whois si utilizza, si può (si) hanno diverse che sono restituiti. La cosa migliore da fare è pagare per un servizio commerciale di whois/registrazione come OpenSRS. Hanno una vasta API che puoi usare come rivenditore registrato. Ecco la documentazione API:

http://opensrs.com/resources/documentation/opensrs_xmlapi.pdf

HTH,

-aj

-1

Esecuzione di una ricerca DNS sul dominio è la soluzione più semplice. Tutti i domini disponibili non avranno record DNS e la maggior parte dei registrar assegnerà una voce DNS predefinita al momento della registrazione.

Le ricerche WHOIS saranno la soluzione più affidabile, in particolare dietro un ISP che contraffa il proprio server (con una pagina "dominio non trovata" piena di annunci) per qualsiasi nome di dominio mancante.

+1

No, usare il DNS è una pessima idea.Molti TLD (per esempio, .FR) hanno domini che sono registrati ma non pubblicati (" su "domini per .COM)." – bortzmeyer

+0

Non sono d'accordo, a volte è una buona idea. Se vuoi sapere che un DOMAIN NON è disponibile, allora una ricerca DNS ti dirà molto rapidamente se non è disponibile. La ricerca DNS fallisce, quindi segui una ricerca WHOIS molto più lenta per i casi in cui il dominio non ha record DNS, ma è registrato.Se le prestazioni sono un problema, questo è un buon modo per andare. –

+0

Il tuo algoritmo è sbagliato se il TLD utilizza i caratteri jolly, che avviene – bortzmeyer

0

DETERMINANTI IL disponibilità di un nome di dominio è un problema dinamico L'elenco dei domini di primo livello cambia frequentemente, così come l'elenco dei diversi server whois. Controlla questo Whois server list per avere l'idea.

ho fatto un client Java whois-api-java di usare la mia Whois API che nasconde la complessità che da voi:

WhoisApi whoisApi = new WhoisApi("apiKey"); 
System.out.println(whoisApi.isAvailable("example.net") ? "available" : "registered"); 
0

Un'altra soluzione è quella di utilizzare Apache Commons lib. Esempio semplificato:

import org.apache.commons.net.whois.WhoisClient; 

public String getWhois(String domainName){ 

    WhoisClient whois = new WhoisClient(); 

    whois.setConnectTimeout(10000); 
    whois.setDefaultTimeout(10000); 

    whois.connect("whois.verisign-grs.com", 43); 

    String domainWhois = whois.query(domainName); 

    whois.disconnect(); 

    return domainWhois; 
} 

Verificare se la risposta equivale a "nessuna corrispondenza". I server Whois, la durata del timeout e la mancata risposta alla disponibilità differiscono in base all'estensione, pertanto è necessario predisporre per loro ulteriori raccolte. Lista

server Whois può essere trovato:

Se si tenta di fare le vostre query simultanee, sarà sicuramente ottenere risposta whois "Bisogna raggiunto il limite di velocità configurato."o un'eccezione esplicita in un codice, quindi dovresti ripetere le query dopo un po 'di sonno

Problemi correlati