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. filvovmax@gmail.com -- info@gitmedio.com

    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.

    33 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

      • De Rodrigo

        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

        • De Jeni

          Responder

          • De Rodrigo

            Responder

            • De lion ilustre

    19. De Vincent Gabriel

      Responder

    20. De Ana

      Responder

    21. Responder

    22. Responder

    23. De Esteban Trinidad

      Responder