Buscador de nombre dominios en PHP código fuente

WHOIS es un protocolo de TCP, en otras palabras, es una familia de protocolos de Internet que cumple la función para la consulta de un dominio e información de Sistema Autónomo y Protocolo de Internet.

En este articulo se ofrece como, realizar la consulta a la base de datos  a un servidor WHOIS, en el que se determinara la disponibilidad de un nombre de dominio. En el lenguaje de programación PHP existen métodos que nos permite  hacer las peticiones para consultar un nombre dominio especifico, con la cual nos permite implementar  un cliente web buscador de nombre de dominios en PHP, ya que los servicios WHOIS son de accesos publico para mostrar información.

Para hacer una consulta al servidor WHOIS debemos saber el nombre del servidor y el puerto por lo general es el numero 43, por ejemplo whois.crsnic.net nos permite consultar a la base de datos y obtener información sobre la registración de un nombre de dominio con la extensión .com y .net.

  A continuación veamos un sencillo ejemplo para realizar la petición a un servidor WHOIS, este nos muestre información.

<?php 
           //Almacenador de información
           //por el servidor que devolverá datos
           $infomacion ="";
           //Nombre de dominio a consultar
           $Dominio    ="estadodolp.com";
           //Nombre del servidor WOIS
           $ServerWois ="whois.crsnic.net";
	       //Con la el método fsockopen se abre una conexión vía sockets a Internet
               //lo cual devuelve un puntero
	       $sock       = fsockopen($ServerWois, 43);
	       //Determinamos la conexion
	       //Si la conexión no se realiza correctamente
	       //se imprime el mensaje de error, por otro lado 
	       //se accede a los datos.
	       if(!$sock){
	       	echo "Servidor no encontrado para: ".$Dominio;
	       }else{
		    //Con el método fwrite() escribimos el contenido del del dominio apuntado por el sokect
	            //que devuelve un puntero a fichero.
		    fwrite($sock, $Dominio."\r\n");
	            //Bucleamos si el puntero a un archivo está al final del archivo
			while(!feof($sock) ){
			     //Recuperamos el método fgets las líneas desde el puntero al fichero.
			     $infomacion .= fgets($sock,128);
				}
			  //Se cierra la conexión al sockect de Internet
			  //abierta.		
			 fclose($sock);
	       }
	       //Se imprime la información devuelto
	       //del servidor
               echo  "<pre>".$infomacion."</pre>";
 ?>

A continuación un ejemplo completo de un buscador de nombre de dominios en PHP, HTML5 y Ajax.

Archivo:index.html

<!--
Autor:Rodrigo Chambi Q.
-->
<!DOCTYPE html>
<html>
<head>
	<title>Buscador de Dominio</title>
	<meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no">
	<!-- vinculo a bootstrap -->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css" integrity="sha384-BVYiiSIFeK1dGmJRAkycuHAHRg32OmUcww7on3RYdg4Va+PmSTsz/K68vbdEjh4u" crossorigin="anonymous">
<!-- Temas-->
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap-theme.min.css" integrity="sha384-rHyoN1iRsVXV4nD0JutlnGaslCJuC7uwjduW9SVrLvRYooPp2bWYgmgJQIXwl/Sp" crossorigin="anonymous">
</head>
<body>
<style type="text/css">
	#Contenedor{
		width:50%;
		padding: 20px;
		height: auto;
		margin: 50px auto;
	}
.clarin{
	width:84%; 
}
</style>
<div id="Contenedor">
 <div id="loader" align="center" style="margin-bottom: 6px;"></div>
<div class="row">
<form style="margin-bottom:20px; ">
<div class="btn-group">
  <div class="input-group input-group-lg clarin" >
    <div class="input-group-addon" ><i class="glyphicon glyphicon-globe"></i></div>
      <input type="text" class="form-control" id="Nomb" name="Nomb" placeholder="google" style="border-right: none;">
      <span class="input-group-btn">
      <select class="form-control" id="Ext" name="Ext" style="height:46px; border-left: none; 
      border-top-left-radius:0px;  
      border-bottom-left-radius: 0px; font-size: 17px;">
     	<option>.com</option>
     	<option>.net</option>
     	<option>.bo</option>
     	<option>.mx</option>
     	<option>.pe</option>
     	<option>.co</option>
     </select>
        <button class="btn btn-success" id="Enviar" type="button"><i class="glyphicon glyphicon-search"></i> Buscar</button>
      </span>
    </div><!-- /input-group -->
</div>
</form>
<!--Aqui es donde se muestra la disponibilidad de Dominios-->
<div id="Mostrar">	
</div>
</div>
</div>
<!-- vinculando a libreria Jquery-->
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<!-- Libreria java scritp de bootstrap -->
<script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/js/bootstrap.min.js" integrity="sha384-Tc5IQib027qvyjSMfHjOMaLkfuWVxZxUPnCJA7l2mCWNIpG9mGCD8wGNIcPD7Txa" crossorigin="anonymous"></script>
<script type="text/javascript">
var Incremento=0;
$("#Enviar").click(function(event) {
Incremento++;
//Validando
if($("#Nomb").val()==""){
	$("#loader").html("<strong style='color:red;'>Error escriba el nombe del Dominio</strong>");
}else{
$("#loader").html("<img src='indicator.gif'>");
$.ajax({
	url: 'buscador.php',
	type: 'POST',
	dataType: 'text',
	data: {Nomb: $("#Nomb").val(),"Ext":$("#Ext").val(),"Incremento":Incremento},
})
.done(function(data) {
	$("#loader").html("");
	$("#Mostrar").append(data);
})
.fail(function() {
	console.log("error");
})
.always(function() {
	console.log("complete");
});
}
});
</script>
</body>
</html>

Archivo:buscador.php

<?php 
/**
 * Autor:Rodrigo Chambi Q.
 * Script para la consulta de dominio
 * a un sevidor WHOIS
 */
function WOIS($WOIS='',$Dominio){
	$stringDatoWois="";
	$Mostrar=array();
	       $sock       = fsockopen($WOIS, 43);
	       if(!$sock){
	       	$Mostrar[0]=false;
	       }else{
	       	$Mostrar[0]=true;
			    fwrite($sock, $Dominio."\r\n");
				while(!feof($sock) ){
				  	$stringDatoWois .= fgetss($sock,128);
				}	
			    fclose($sock);
			$Mostrar[1]=$stringDatoWois;     
	       } 
return $Mostrar;	       
}
   $WoisNombre = array(
   	          '.com'   =>array('whois.crsnic.net','No match for'),//.com
   	          '.net'   =>array('whois.crsnic.net','No match for'),// .net
   	          '.bo'    =>array('whois.nic.bo','whois.nic.bo solo acepta consultas con dominios .bo'),//.bo
   	          '.mx'    =>array('whois.nic.mx','No_Se_Encontro_El_Objeto'),//.mx
   	          '.pe'    =>array('whois.nic.pe','No Object Found'),//.pe
   	          '.co'    =>array('whois.nic.co','Not found'));//.co
         $NombreDominio   =empty($_POST['Nomb']) ? false :  $_POST['Nomb'];
         $ExtesionDominio =empty($_POST['Ext'])  ? false :  $_POST['Ext'];
         $incremento       =empty($_POST['Incremento']) ? 0 :  $_POST['Incremento'];
    if(strlen($NombreDominio)>0){
    	$stringParser="";
       $NombreDominio   = preg_replace(array(
				'/www./','/http:\//','/\//','/.com/',
				'/.bo/','/.com.bo/','/edu.bo/',
				'/.org.bo/','/.net/','/.mx/',
				'/.pe/','/.co/'), '', $NombreDominio);
       	foreach ($WoisNombre as $key => $value) {
       		if($key==$ExtesionDominio){
            if (WOIS($value[0],$NombreDominio.$ExtesionDominio)[0]==true){
                  $DatoSWois= WOIS($value[0],$NombreDominio.$ExtesionDominio)[1];
                  $Disponible='<div class="alert alert-success alert-dismissible" style="margin-top:5px;" role="alert">
                          <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>                 
                           <span>El dominio <strong>'.$NombreDominio.$ExtesionDominio.'</strong> esta <strong>disponible.</strong> para la realizacion de compra. </span>
                           <button class="btn btn-success" id="Enviar" type="button"><i class="glyphicon glyphicon-shopping-cart"></i> Comprar</button>
                        </div>';
                    $NoDisponible='<div class="alert alert-danger alert-dismissible" role="alert" style="margin-top:5px;">
                          <button type="button" class="close" data-dismiss="alert" aria-label="Close"><span aria-hidden="true">&times;</span></button>                 
                           <span>El dominio <strong>'.$NombreDominio.$ExtesionDominio.'</strong> esta <strong>no esta disponible.</strong></span>
                           <a class="btn btn-linnk" role="button" data-toggle="collapse" href="#collapseExample'.$incremento .'" aria-expanded="false" aria-controls="collapseExample'.$incremento .'">
                                  Ver el autor registrante
                                </a>
                                <div class="collapsing" id="collapseExample'.$incremento .'">
                                  <div class="well">
                                   <pre>'.WOIS($value[0],$NombreDominio.$ExtesionDominio)[1].'</pre>
                                  </div>
                                </div>
                        </div>'; 
                       //Quitamos algunos caracteres
                       //del servidor WHOIS Boliviano    
                      if($key==".bo"){
                        $DatoSWois=str_replace(array("\r\n", "\n", "\r"), '', $DatoSWois);
                         if($DatoSWois==$value[1]){
                           echo $Disponible;
                        }else{
                            echo $NoDisponible; 
                        }
                      }else{
                        //Buscamos 
                        if (preg_match("/".$value[1]."/i",$DatoSWois)){
                            echo $Disponible ;
                          }else{
                            echo $NoDisponible; 
                          }
                      }
               }else{
               }
       		}
       	} 	  
     }
 ?>

Existe una librería llamada libcurl  que esta disponible a partir PHP 4.0.2. que permite conectarse y comunicarse con diferentes tipos de servidores y diferentes tipos de protocolos, la cual seria un mejor opción implementar un buscador de nombre de dominios en PHP. Espero que sea de mucha ayuda este artículo.

Ejemplo:

Descargar Ejemplo 15KB

Sobre el autor
Rodrigo Chambi Q.

Desarrollador de aplicaciones web y de escritorio, amante de la tecnología y autodidacta, me gusta conocer otras tecnologías, escribir artículos para compartir en la web y para estar al tanto en los nuevos paradigmas, respeto las políticas de software privativo y libre, ya que estas políticas son las normas que permite el desarrollo tecnológico social de la humanidad.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

Comentarios

  1. De Jean Castillo

    Responder

  2. De Jean Castillo

    Responder

  3. De Jean Castillo

    Responder

    • De Rodrigo

      Responder

  4. De Javier Ramos

    Responder

    • De Rodrigo

      Responder

  5. Responder

  6. De Carlos

    Responder

  7. Responder

  8. De Edgar

    Responder

  9. De Carlos

    Responder

    • De Roberto

      Responder

  10. De Carlos

    Responder

  11. Responder

  12. De ronni

    Responder

  13. De Billy

    Responder

    • De Rodrigo Chambi.

      Responder

      • De Victor

        Responder

  14. Responder

  15. De francisco toro

    Responder

  16. De francisco toro

    Responder

  17. De Juan Carlos Yepes Rua

    Responder

  18. De Javier

    Responder

    • Responder

  19. De Vincent Gabriel

    Responder

  20. De Ana

    Responder