2010-02-03 19 views
6

¿Hay una forma relativamente simple en Java para comprobar si un dominio está disponible o no?Comprobar disponibilidad de dominio Java

Necesito un método confiable, por lo que solo verificar si la conexión puede realizarse no es suficiente.

Respuesta

4

Hay un buen cliente whois de Java aquí:

https://github.com/ethauvin/Whois

se puede ejecutar desde la línea de comandos o la interfaz con él directamente:

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

Está bajo una licencia GPL, por lo que siempre puede modificarlo para hacer lo que quiera, hay un archivo fuente Whois.java y un archivo de propiedades para especificar el servidor Whois, ¡eso es todo! – Jon

6

La disponibilidad del dominio depende de tener un cliente whois. Aquí hay un enlace a una implementación de un cliente whois en Java:

Java Whois Client

Tendrá que analizar los resultados - y dependiendo de qué servidor whois que utilice, es posible que (se) tienen diferentes formatos que son devueltos Lo mejor que puede hacer es pagar por un servicio de registro/whois comercial como OpenSRS. Tienen una extensa API que puedes usar como revendedor registrado. Aquí están los documentos de la API:

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

HTH,

-aj

-1

Realizar una búsqueda de DNS en el dominio es la solución más fácil. Todos los dominios disponibles no tendrán registro DNS, y la mayoría de los registradores asignan una entrada DNS predeterminada al registrarse.

Las búsquedas de WHOIS serán su solución más confiable, particularmente detrás de un ISP que falsifica su propio servidor (con una página de "dominio no encontrado" lleno de anuncios) por cualquier nombre de dominio faltante.

+1

No, utilizar el DNS es una muy mala idea. Muchos TLD (por ejemplo, .FR) tienen dominios que están registrados pero no publicados (" en mantener "dominios para .COM). – bortzmeyer

+0

No estoy de acuerdo. A veces es una buena idea. Si desea saber que un DOMINIO NO está disponible, hacer una búsqueda de DNS le indicará muy rápidamente si no está disponible. La búsqueda del DNS falla, luego usted sigue eso por una búsqueda WHOIS mucho más lenta para los casos en que el dominio no tiene registros DNS, pero está registrado. Si el rendimiento es un problema, esta es una buena forma de hacerlo. –

+0

Su algoritmo es incorrecto si TLD usa comodines, lo que ocurre. – bortzmeyer

0

Determing la disponibilidad de un nombre de dominio es un problema dinámico La lista de dominios de nivel superior cambia con frecuencia y también lo hace la lista de diferentes servidores whois. Compruebe esto Whois server list para tener la idea.

hice un cliente Java whois-api-java usar mi Whois API que oculta que la complejidad de usted:

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

Otra solución es utilizar Apache Commons lib. Ejemplo simplificado:

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; 
} 

Compruebe si la respuesta es igual a "no hay coincidencia". Los servidores Whois, la duración del tiempo de espera y la respuesta de no disponibilidad difieren según la extensión, por lo que debería haber preparado colecciones adicionales para ellos. Lista

servidores Whois puede ser encontrado:

Si intenta hacer sus consultas simultáneas, que sin duda obtener una respuesta whois "Tienes alcanzado el límite de velocidad configurado."o excepción explícita en un código por lo que debe repetir las consultas después de un poco de sueño.

Cuestiones relacionadas