El otro día haciendo mi rutinaria y matutina revisión de blogs, pase por uno que en general me gusta mucho, se llama “Código Geek”… Ese día en especifico me tope con una entrada de un código que notificaba por email una y otra vez, cada vez que un ingreso de Google ocurría; y pese a que ya había visto un código similar hace años, me pareció que sería interesante comentarlo a futuro en esta categoría de PHP.
Pasado el tiempo, la semana pasada volví a revisar mis marcadores y me encontré con la famosa entrada, titulada “Recibe un email cuando GoogleBot visite tu blog”, y ya un poco más avanzados los comentarios, los usuarios se habían percatado, que el código es realmente de uso muy artesanal, pues saturaría tu correo enviándote notas sin variaciones, cada vez que Google decida ingresar.
Teniendo claro el panorama anterior, me decidí a crear el siguiente código, que en resumidas cuentas desarrolla las siguientes funciones:
Con las características anteriores, creo que veremos un script mucho más interesante, que con el que partimos, y así podremos decidir si utilizar la versión sencilla que compartían los colegas de Codigo Geek, o bien la versión con “extras” que hemos hecho con todo cariño.
Versión original:
<?php
if ( strpos( $_SERVER['HTTP_USER_AGENT'], 'Googlebot' ) !== false )
{
// Tu direccecion de correo
$email_address = 'tu@tudominio.com ';
// Enviate el email
mail($email_address,'Alerta de Googlebot', 'El Googlebot ha visitado tu pagina: '.$_SERVER['REQUEST_URI']);
}
?>
NOTA 1: No hemos modificado de ninguna manera el código original.
NOTA 2: Leyendo la entrada de Código Geek, vemos que ellos obtuvieron la idea, del blog de “LeeMiBlog”, por lo que de igual manera extendemos los créditos del caso, para el código original.
Ahora, en la siguiente página veremos el código que nos ha traído hasta aquí.
Ok, llegados a la página dos de esta entrega, comenzamos a fuego con el material nuevo.
El código que hemos implementado lo hemos titulado botspy.php.
botspy.php:
<?php
/*
*
* Recibe un email al día, informándote cuando un motor de búsqueda visito tu sitio web.
*
* Idea original: http://www.codigogeek.com/2008/06/22/recibe-un-email-cuando-googlebot-visite-tu-blog/
* http://www.leemiblog.com/Articulos/Programacion/Recibe-un-email-cada-vez-que-Google-visita-tu-pgina.html
*
* 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['demo'] == 1){
$_SERVER['HTTP_USER_AGENT'] = 'demo-googlebot';
}
//Correo electrónico
$abdy = 'tu@correo.com';
//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['HTTP_USER_AGENT'], $val ) !== false ){
$found_bot = true;
break;
}
}
// Si es un Bot reconocido, procesiguimos.
if($found_bot){
//Escribimos en el log los detalles
$cadena = $_SERVER['HTTP_USER_AGENT']. ' || '. $_SERVER['REMOTE_ADDR'] .' || '. 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','');
}
?>
A lo largo del código añadimos comentarios, en las partes más determinantes del proceso, el cual en general no incluye funciones demasiado complicadas, que pueden ser fácilmente detalladas, visualizando el manual oficial de cada una de ellas.
Como es normal, al ser este un script que trabaja por días, realizamos las pruebas correspondientes en un sitio web amigo de Hacking Ball Z, y en la página siguiente, mostramos a manera de bitácora, los resultados de 3 días de utilización, y los datos de instalación del script.
<?Y debemos además recordar, que el tanto el directorio contenedor, como el archivo PHP, como el directorio de trabajo, deben tener asignado CHMOD 777.
include("path/demo_robotsspider/botspy.php");
?>