¿Necesitas un buscador WHOIS para tu web?
Veremos como construir un Whois en PHP, y como hacerle consultas mediante ajax usando Json y jQuery para facilitarnos la vida!
Requisitos:
- Manejo de jQuery a nivel teletubi
- Conocimientos básicos de PHP
- Conocimientos sobre HTML
Para empezar debemos saber que es un Whois LookUp
El Whois son los datos del registro del dominio, en él está la información acerca del registrante y el registrador, la fecha de registro, la última actualizacion y la fecha de vencimiento, tambien encontramos el estatus del dominio como por ejemplo si éste acepta transferencia, autorenovación y cosas más!
El whois LookUp que he escrito se llama byteWhois! y funciona de la siguiente manera:
- Recibe 2 parámetros GET, dominio y tld;
- Una funcion que según el TLD extrae la url de un servidor Whois
- Otra funcion abre conexión fsockopen(); introduce el dominio a consultar fputs(); y se descarga la respuesta!
- Si dentro de la respuesta (el whois) existe las palabras “No match”, “No Found” u otras, quiere decir que NO esta registrado!
- En caso de estar registrado, se obtiene la info del whois
- Se codifica toda esta información como json y se imprime en el archivo (echo $json;)
Luego que el archivo php nos hara resuelto, usando jQuery extraeremos los datos de byteWhois! y éste nos devolverá un objeto JavaScript, el objeto tendrá 2 propiedades: “estado” y “whois”;
El source de byteWhois.php
$dominioNombre = $_GET['dominio'];
$dominioExtension = $_GET['tld'];
$estado = comprobarDominio($dominioNombre,$dominioExtension);
if ($estado == 'no-disponible'){ $whois = INFO_WHOIS; }
else { $whois = "Dominio no registrado"; }
$data = array("estado" => "$estado","whois" => $whois );
echo json_encode($data);
En el codigo anterior: recibimos variables por GET, las variables del dominio y la tld, enviamos a la funcion “comprobarDominio();” los valores del dominio y el tld, ésta funcion devolverá un string y depositamos dicho string en $estado, si el valor de $estado es igual a “no-disponible” entonces, $whois tomará el valor de INFO_WHOIS (que posteriormente definiremos), caso contrario, el valor de $whois es “Dominio no registrado”;
El método (funcion) comprobarDominio();
function comprobarDominio($dominioNombre, $dominioTld)
{
$dominioCompleto = $dominioNombre.".".$dominioTld;
$serverInfo = servidorWhois($dominioTld);
if ($serverInfo)
{
$serverData = explode(";", $serverInfo);
$whoisServer = $serverData[0];
$noFound = $serverData[1];
$conexionServer = fsockopen($whoisServer,43);
fputs($conexionServer,"$dominioCompleto\r\n");
$respuesta = '';
while(!feof($conexionServer))
{
$respuesta .= fgets($conexionServer,128);
}
fclose($conexionServer);
if (ereg($noFound,$respuesta)) {
return "disponible";
}
else {
define ('INFO_WHOIS',$respuesta);
return "no-disponible";
}
}
else
{
return "tld-incorrecta";
}
}
comprobarDominio(); concadenará las variables ingresadas para crear el nombre de dominio ($dominioCompleto), tenemos una funcion “servidorWhois()” que devuelve un string con la direccion del servidor y una frase (“no match”, “no found”) concadenada, si recibimos respuesta de la función entonces dividiremos el string recibido y extraeremos la primera parte (la direccion del servidor), abriremos conexion con fsockopen en el puerto 43, colocaremos la info del dominio con fputs(), y leeremos el archivo de conexión (un archivo de texto), concadenamos el contenido en la variable $resultado, cerramos la conexion con fclose(); y si en el string (resultado) encontramos las frase contenida en $noFound, entonces el dominio esta disponible, caso contrario el dominio ya está registrado y declaramos la variable INFO_WHOIS, asignandole el valor de $respuesta, si en la funcion nos ingresaron una TLD que no existe (dentro de la funcion servidoWhois(), retornamos “tld-incorrecta”;
El método (o función) servidorWhois();
function servidorWhois($tld)
{
switch($tld)
{
case 'com' : $server = "whois.verisign-grs.com";
$noFound = "No match"; break;
case 'net' : $server = "whois.verisign-grs.com";
$noFound = "No match"; break;
case 'org' : $server = "whois.publicinterestregistry.net";
$noFound = "NOT FOUND"; break;
case 'info': $server = "whois.afilias.net";
$noFound = "Not found"; break;
case 'biz' : $server = "whois.nic.biz";
$noFound = "Not found"; break;
default: return null; break;
}
return $server.";".$noFound;
}
En ésta funcion retornamos un valor según la TLD ingresada, el valor retornado es la url del servidor (con la cual luego abriremos una conexión) y la frase (según el servidor) que indica si el dominio no está registrado (o por lo menos si los servidores NO tienen información al respecto!), el valor devuelto es una cadena asi: “servidor;nofound”, posteriormente dividiremos dicha cadena (usando el punto y coma) e interpretaremos los valores independientemente!
Hasta aquí ya hemos creado byteWhois para conocer la disponibilidad de un dominio, el codigo de byteWhois!
En el código de nuestro formulario usaremos jquery.getJSON() para obtener datos de byteWhois();
$.getJSON('http://direccion/de/byteWhois_de_ignoranto.php',{dominio:"midominio", tld:"mitld"},
function(data){ alert(data.info)});
Enviamos “midominio” y “mitld” a byteWhois, luego (que se haya resuelto) se nos mostrará un alert! donde seremos informados del estado del dominio (registrado, no-registrado, tld-incorrecta), podemos ver byteWhois en accion (solo para ver la disponibilidad del dominio) a través de éste link!
Si queremos ver la información WHOIS (el registrante) debemos guardar el valor de “data.whois” en una variable y luego “trabajarla” y asi mostrarla en el navegador! Podemos ver el código html+JavaScript aquí » byteWhois.html
Descargar el codigo de byteWhois.php
Descargar el codigo de byteWhois.html


Hola amigo. Estoy probando tu script para ver si un dominio esta registrado. Armo todo bien, pero cuando pulso el boton no hace nada, he revisado el código por algún error y nada. Saludos
Eso se debe a que probablemente hayas instalado mal el script en PHP (tienen que estar los 2 en tu dominio), si intentas llamarlo desde tu dominio hacia el mio entonces no funcionará por que JAVASCRIPT no funciona en crossdomain pero existe una solución llamada jSONp , la cual es esta: http://info.asdfpok.net/2010/02/enviar-y-recibir-datos-jsonp-dominios-diferentes.html
[...] Si lo que deseas es programar un Whois Look Up Domain, entonces sigue éste enlace: Como hacer un Whois [...]
Que tal, oye como puedo hacerle para agregar mas extensiones ?
por ejemplo:
.com.mx
.mx