Avisos por email cuando te visiten los Buscadores

Curioso este truco creado por Protycoon y que he conocido por Lee mi Blog, aunque luego (a mi modo de ver) mejoró HackingBallz mediante el cual puedes recibir un email cuando cualquier bot visite tu blog.

¿Utilidad de este truco?, pues puede ser interesante en los inicios de un blog, para saber si Google te está indexando con la frecuencia necesaria, por ejemplo.

La idea es insertar el siguiente código en el fichero footer.php de tu plantilla activa para recibas un email diario que te avise de que una araña (o bot) de Google ha visitado tu blog. La idea original era recibir un email por cada visita pero igual eso es demasiado, de ahí que me parezca mas sensato el código retocado por HackingBallz. No obstante te pongo los dos para que tu decidas.

Código original (un email en cada visita)

<?php
if ( strpos( $_SERVER&#91;'HTTP_USER_AGENT'&#93;, 'Googlebot' ) !== false )
{
// Tu direccion de email
$email_address = '[email protected]';

// Enviate a ti mismo un email
mail($email_address,'Alerta de Googlebot', 'El Bot de Google ha visitado tu blog: '.$_SERVER&#91;'REQUEST_URI'&#93;);
}
?>

Lo primero que hace el script es comprobar que el ‘agente’ (user agent) sea ‘Googlebot’. Y si lo es, entonces te envía un email a la dirección que hayas definido.

Código mejorado (un email diario)

Este código, al que han llamado botspy añade algunas mejoras:

  1. Ofrece una alternativa, en versión demo, para registrar una entrada en el log, y de esta forma asegurarnos que todo quedo bien instalado.
  2. Utiliza un directorio de trabajo, basado en archivos de texto, por lo que no necesita ninguna base de datos.
  3. No solo permitir incluir a GoogleBot, sino a cualquier cantidad más de spiders, entre los cuales incluimos a Microsoft y a Yahoo, y otros tantos más.
  4. Busca coincidencias en las “user-agents”, para determinar si el robot es quien queremos, sin limitarnos a una coincidencia exacta.
  5. En cada visita de algún robot, genera una entrada en el log de texto, para posteriormente tramitar el envió del historial, el día siguiente.
  6. Cuando existe un reporte previo, realiza el envió correspondiente, y elimina el log del día anterior
<?php

/*
*
* Recibe un email al día, informándote cuando un motor de búsqueda visito tu sitio web.
* Hacking Ball Z 
* http://www.hackingballz.com/articulos/40/1/Espia-los-ingresos-de-motores-de-busqueda-a-tu-sitio/Page1.html
*/ 

//Opción demo
if($_GET&#91;'demo'&#93; == 1){
    
    $_SERVER&#91;'HTTP_USER_AGENT'&#93; = 'demo-googlebot';
    
} 

//Correo electrónico
$abdy = '[email protected]';

//Directorio de trabajo
$botspy = '/path/completo/demo_robots_spider/botspy'; # CHMOD 777 a todos los archivos.

// Bots "reconociodos"
$bots   = array('googlebot','msnbot','yahoo','teoma','gigabot','robozilla','nutch','ia_archiver','baiduspider');

/*
      Google            googlebot
      MSN Search        msnbot
      Yahoo             yahoo
      Ask/Teoma         teoma
      GigaBlast         gigabot
      DMOZ Checker      robozilla
      Nutch             nutch
      Alexa/Wayback     ia_archiver
      Baidu             baiduspider
*/

// Definimos HOY
$hoy = date('d-m-Y');

// Procesamos el USER_AGENT para verificar si es un bot reconocido.
while (list($key, $val) = each($bots)) {
    
   if ( stripos( $_SERVER&#91;'HTTP_USER_AGENT'&#93;, $val ) !== false ){
   
        $found_bot = true;
        break;
   
   } 
    
}

// Si es un Bot reconocido, proseguimos.

if($found_bot){

    //Escribimos en el log los detalles
    $cadena = $_SERVER&#91;'HTTP_USER_AGENT'&#93;. ' || '. $_SERVER&#91;'REMOTE_ADDR'&#93; .' || '. date('h:i:s A') . "\r\n";
    file_put_contents($botspy.'/'.$hoy.'.log',$cadena,FILE_APPEND);
   
}

// Enviamos un mensaje al día con el Blog del día anterior

if(!file_exists($botspy.'/'.$hoy.'.mail.log')){
    
if ($gestor = opendir($botspy)) {
    while (false !== ($archivo = readdir($gestor))) {
        if ($archivo != "." && $archivo != ".." && $archivo != $hoy.'.log') {   

            $log = fopen ($botspy.'/'.$archivo, "r"); 
            while (!feof ($log)) {
            //si extraigo una línea del archivo y no es false
            if ($contenido .= fgets($log)){
            //acumulo una en la variable número de líneas
            $num_lineas++;
         
         }
         }
         fclose($log); 
            

            unlink($botspy.'/'.$archivo);
        }
    }
    closedir($gestor);
}


$mensaje = ("

FECHA ACTUAL: $hoy

REPORTE DEL DÍA DE AYER
===============================

Total de visitas de bots reconocidos: $num_lineas

LOG
===============================
$contenido

Un hacking saludo...

HACKING BALL Z
http://www.hackingballz.com
");

if(trim($num_lineas)!=''){

    mail($abdy,'Informe de visitas de los robots ayer.',$mensaje);

}

file_put_contents($botspy.'/'.$hoy.'.mail.log','');

}

?>

Como ves es bastante mas completo pero igual con el otro te apañas o te da ideas para algún desarrollo propio.

VALORA Y COMPARTE ESTE ARTÍCULO PARA MEJORAR LA CALIDAD DEL BLOG…
(1 votos, promedio: 5)

¿Te gustó este artículo? ¡Ni te imaginas lo que te estás perdiendo en YouTube!

AVISO: Esta publicación es de hace 3 años o más. Si es un código o un plugin podría no funcionar en las últimas versiones de WordPress, y si es una noticia podría estar ya obsoleta. Luego no digas que no te hemos avisado.

5 comentarios en “Avisos por email cuando te visiten los Buscadores”

  1. Muy interesante :B

    Lo pondré en mi blog, ya que en realidad no se si google me visita, ya que se demora mucho en indexar los posts nuevos D:

    Nos vemos ^^

  2. Pingback: dmoz mafia « dmozmafia.com

  3. Hola Fernando

    He implementado el código básico y después de varios días enloquecedores de correos y correos cada minuto, hemos eliminado el código del footer.php para dejar de recibir tantos correos, sin embargo, los correos siguen llegando.

    Cómo desactivo definitivamente esta función. Gracias

Deja un comentario

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

 

Ir arriba Ir al contenido