Comunidad de diseño web y desarrollo en internet online

Los Robots de buscadores pueden complicar las estadisticas??

Citar            
MensajeEscrito el 05 Jun 2009 03:28 pm
Hola como estan..

Bueno yo tengo una página que contiene un blog que yo mismo desarrollé.
hace poquito le puse un script que contaviliza las visitas de cada post, es una simple consulta de sql que suma
1 al valor ya ingresado previamente .

Código PHP :

$sql= "UPDATE tabla SET vistas=vistas+1 WHERE id='".$id."'";
mysql_query($sql);


La pregunta es.. ¿¿los robots de buscadores que ejecutan codigo php, también los cuenta???
si es verdad.. como puedo evitar eso?.. que ese código no se ejecute cuando pasa un robot buscador..

Gracias.

Por phoxer

Claber

827 de clabLevel

4 tutoriales

Genero:Masculino  

Ing en Sistemas

firefox
Citar            
MensajeEscrito el 05 Jun 2009 09:24 pm

Por alfathenus

833 de clabLevel

5 tutoriales

 

buenos aires || Argentina

firefox
Citar            
MensajeEscrito el 05 Jun 2009 11:34 pm
revisa este no lo he testiado pero mira a ver si te puede servir

http://www.codigolandia.com/art-Mostrar+Contenido+depende+del+referido-php-77.tc

Por talcual

686 de clabLevel



 

Colombia

firefox
Citar            
MensajeEscrito el 06 Jun 2009 01:29 am
Gracias alfathenus y talcual por responder.. a ver si entiendo un poco..

ví los dos links y me interesó la función que checkea bots por bots, ahora mi pregunta es, no se puede detectar lo contrario no?.. osea cuando no es robot que ejecute la función sino no..

Actualmente en el dominio $_SERVER['HTTP_REFERER'] 0 $HTTP_REFERER esta tirando una cadena vacia..
lo que me hace pensar que quizas esa variable global no este activada..
¿¿que me tendria que devolver?.. y en caso de que fuera un robot ¿¿devolvería el nombre del robot??

Leyendo en la pagina de php.net encontré esto..

HTTP_REFERER escribió:

La dirección de la página (si la hay) la cual refirió al agente de usuario a la página actual. Este valor es definido por el agente de usuario. No todos los agentes de usuario lo definen, y algunos proveen la capacidad de modificar HTTP_REFERER como una característica del software. En resumen, no se puede confiar realmente en este valor.


Si la variable funcionara la función me quedaría asi verdad??.

Código PHP :

$robot[] = "googlebot";
$robot[] = "msnbot";
$robot[] = "overture";
$robot[] = "lycos";
$robot[] = "seek";
$robot[] = "inktomi";
$robot[] = "yahoo";
$robot[] = "altavista";
$robot[] = "alexa";
$robot[] = "crawler";
$esRobot=false;
foreach($robot as $bot){
    if(eregi($bot, $HTTP_USER_AGENT)){ 
       $esRobot=true;
       break;
    }
}
echo $esRobot;


Bueno seguiré investigando.. gracias :)

Por phoxer

Claber

827 de clabLevel

4 tutoriales

Genero:Masculino  

Ing en Sistemas

firefox
Citar            
MensajeEscrito el 06 Jun 2009 04:15 am
saludos

Por talcual

686 de clabLevel



 

Colombia

firefox
Citar            
MensajeEscrito el 08 Jun 2009 01:07 pm
Hola

Mmmmm talvez podrias guardar en una tabla de la bd todos los useragent, a ver q es lo q viene y si los nombres de los boot no cambiaron... de esa manera sabrias si en verdad esta funcionando esa instruccion. Yo la verdad nunca habia intentado hacer eso... igualmente, si usas google analytics??

Saludos!

Por alfathenus

833 de clabLevel

5 tutoriales

 

buenos aires || Argentina

firefox
Citar            
MensajeEscrito el 08 Jun 2009 01:37 pm

alfathenus escribió:

Hola

Mmmmm talvez podrias guardar en una tabla de la bd todos los useragent, a ver q es lo q viene y si los nombres de los boot no cambiaron... de esa manera sabrias si en verdad esta funcionando esa instruccion. Yo la verdad nunca habia intentado hacer eso... igualmente, si usas google analytics??

Saludos!


Que onda alfathenus, mira en mi pagina puse este script.. ovbiamente donde dice mimail esta mi mail, pero la verdad no llego hasta ahora ninguno.

Código PHP :

$robot[] = "googlebot"; 
$robot[] = "msnbot"; 
$robot[] = "overture"; 
$robot[] = "lycos"; 
$robot[] = "seek"; 
$robot[] = "inktomi"; 
$robot[] = "yahoo"; 
$robot[] = "altavista"; 
$robot[] = "alexa"; 
$robot[] = "crawler"; 
$isRobot=false; 
foreach($robot as $bot){ 
    if(eregi($bot, $HTTP_USER_AGENT)){
       $isRobot=true; 
       break; 
    } 
} 
echo $isRobot;
//visitas
if($isRobot){
   $body = "<b>Date: </b>".date("F j, Y, g:i a")."<br>";
   $body .="<b>Robot Name:</b> ".$HTTP_USER_AGENT." or ".$_SERVER['HTTP_USER_AGENT']."<br>";
   $body .="<b>Robot Address:</b> ".$REMOTE_ADDR." or ".$_SERVER['REMOTE_ADDR'];
   
   mail("[del]mimail[/del]", "Detected Bot", $body); 
}else{
   $vql= "UPDATE bg_articulos SET visitas=visitas+1 WHERE art_id='".$artid."'";
   mysql_query($vql);
}


Como ya comenté quizas el problema es que mi servidor tira en la variable $HTTP_USER_AGENT una cadena vacia.. ¿que deberia estar tirando normalmente?

saludos.

Por phoxer

Claber

827 de clabLevel

4 tutoriales

Genero:Masculino  

Ing en Sistemas

firefox
Citar            
MensajeEscrito el 08 Jun 2009 08:15 pm
el nombre del crawler

Por talcual

686 de clabLevel



 

Colombia

firefox
Citar            
MensajeEscrito el 08 Jun 2009 08:50 pm

talcual escribió:

el nombre del crawler


Mmm entonces la variable no esta andando :( habría que checar a ver si hay otra manera mas efectiva de detectar los bots..

Por phoxer

Claber

827 de clabLevel

4 tutoriales

Genero:Masculino  

Ing en Sistemas

firefox
Citar            
MensajeEscrito el 08 Jun 2009 11:45 pm
debe ser por parte de tu server es lo mas probable que sea eso

Por talcual

686 de clabLevel



 

Colombia

firefox
Citar            
MensajeEscrito el 09 Jun 2009 12:43 am

Por alfathenus

833 de clabLevel

5 tutoriales

 

buenos aires || Argentina

firefox
Citar            
MensajeEscrito el 09 Jun 2009 03:00 am

alfathenus escribió:

Hola
Proba con $_SERVER["HTTP_USER_AGENT"] mira aca: http://ar.php.net/manual/es/reserved.variables.server.php
Saludos!


como estas, fijate que uso las dos, pero las dos devuelven una cadena vacia

Código PHP :

$body .="<b>Robot Name:</b> ".$HTTP_USER_AGENT." or ".$_SERVER['HTTP_USER_AGENT']."<br>";


voy a contactarme con el hosting a ver que onda..

Por phoxer

Claber

827 de clabLevel

4 tutoriales

Genero:Masculino  

Ing en Sistemas

firefox
Citar            
MensajeEscrito el 09 Jun 2009 04:54 am
Hola

Saca el foreech, saca por un tiempo esa comparaction y siempre envia un mail. Ahi vas a ver q es lo q esta llegando. Por otro lado si dejas la comparacion, no la hagas con expresiones regulares con un simple if bastaria y en la comparacion usa la variable de $_SESSION y convertilo a minusculas asi la comparacion es correcta.


Saludos!

Por alfathenus

833 de clabLevel

5 tutoriales

 

buenos aires || Argentina

firefox
Citar            
MensajeEscrito el 09 Jun 2009 05:45 am

alfathenus escribió:

Saca el foreech, saca por un tiempo esa comparaction y siempre envia un mail. Ahi vas a ver q es lo q esta llegando. Por otro lado si dejas la comparacion, no la hagas con expresiones regulares con un simple if bastaria y en la comparacion usa la variable de $_SESSION y convertilo a minusculas asi la comparacion es correcta.


Si tenés razón.. voy a sacarle por unos dias el foreach y ver que pasa. también pasar todo a minúsculas.. apenas tenga novedades las subo aca.

Gracias :)

Por phoxer

Claber

827 de clabLevel

4 tutoriales

Genero:Masculino  

Ing en Sistemas

firefox
Citar            
MensajeEscrito el 09 Jun 2009 05:55 am
Hola.. bueno lo probé entrando yo y me mando este mail

Robot Name: or Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.0.10) Gecko/2009042316 Firefox/3.0.10

osea que la variable $HTTP_USER_AGENT no detecto nada pero la variable $_SERVER['HTTP_USER_AGENT'] detecto el navegador.

Por phoxer

Claber

827 de clabLevel

4 tutoriales

Genero:Masculino  

Ing en Sistemas

firefox
Citar            
MensajeEscrito el 09 Jun 2009 01:31 pm
Hoy en la mañana reciví mas mails..

Robot Name: or Mozilla/5.0 (compatible; Yahoo! Slurp/3.0; http://help.yahoo.com/help/us/ysearch/slurp)
Robot Address: or 74.6.8.100

Robot Name: or Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1)
Robot Address: or 114.77.102.156

Robot Name: or Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1)
Robot Address: or 190.247.214.153

calculo que el primero es un bot.. ahora como hago una comparación contra una cadena asi "Mozilla/5.0 (compatible; Yahoo! Slurp/3.0; http://help.yahoo.com/help/us/ysearch/slurp)" mm que raro que no haya otro método mas efectivo.

Por phoxer

Claber

827 de clabLevel

4 tutoriales

Genero:Masculino  

Ing en Sistemas

firefox
Citar            
MensajeEscrito el 09 Jun 2009 02:37 pm
Hola

Si, ese es el spyder de yahoo. Lo mejor es q hagas un strpos buscando "Yahoo! Slurp" en esa cadena y listo

Código PHP :

$posibleRobot = 'Mozilla/5.0 (compatible; Yahoo! Slurp/3.0; http://help.yahoo.com/help/us/ysearch/slurp)':

if ( strpos($posibleRobot, "Yahoo! Slurp") !== false )
{
     //si es robot, mando mail
}



Espero q te ayude eso

Saludos!

Por alfathenus

833 de clabLevel

5 tutoriales

 

buenos aires || Argentina

firefox
Citar            
MensajeEscrito el 09 Jun 2009 03:31 pm

alfathenus escribió:

Si, ese es el spyder de yahoo. Lo mejor es q hagas un strpos buscando "Yahoo! Slurp" en esa cadena y listo


Mmm podría ser una solucion veo que me estan llegando bastantes mails como estos también, lo malo de todo es que
todas bienen diferentes

Robot Name: or msnbot/1.1 (+http://search.msn.com/msnbot.htm)
Robot Address: or 65.55.211.115

Robot Name: or Mediapartners-Google
Robot Address: or 66.249.71.152

Robot Name: or Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 1.1.4322; .NET CLR 2.0.50727; .NET CLR 3.0.4506.2152; .NET CLR 3.5.30729)
Robot Address: or 187.153.83.80

Pero creo que entonces voy a tener que hacer lo que decís vos, buscar los posibles cadenas dentro de todo eso que biene :S

Por phoxer

Claber

827 de clabLevel

4 tutoriales

Genero:Masculino  

Ing en Sistemas

firefox
Citar            
MensajeEscrito el 09 Jun 2009 03:39 pm
A ver modifiqué la funcion como me dijiste a ver si asi esta bien.. y vamos a ver si funciona..

Código PHP :

$robot[] = "googlebot"; 
$robot[] = "google";
$robot[] = "mediapartners";
$robot[] = "msnbot"; 
$robot[] = "msn";
$robot[] = "overture"; 
$robot[] = "lycos"; 
$robot[] = "seek"; 
$robot[] = "inktomi"; 
$robot[] = "yahoo"; 
$robot[] = "slurp";
$robot[] = "altavista"; 
$robot[] = "alexa"; 
$robot[] = "crawler"; 
$isRobot=false; 
foreach($robot as $bot){
   $str = strtolower($_SERVER['HTTP_USER_AGENT']);
   if (strpos($str, $bot) !== false ){
       $isRobot=true; 
       break; 
    } 
} 
//visitas
if($isRobot){
   $heads = "MIME-Version: 1.0 \r\n";
   $heads .= "Content-type: text/html; charset=utf-8 \r\n";
   
   $body ="<b>Robot Name:</b> ".$str."<br>";
   $body .="<b>Robot Address:</b> ".$_SERVER['REMOTE_ADDR'];
   
   mail(mimail, "Detected Bot", $body, $heads); 
}else{
   $vql= "UPDATE bg_articulos SET visitas=visitas+1 WHERE art_id='".$artid."'";
   mysql_query($vql);
}


bien con eso por lo menos debería de filtrar un poco no?¿.. :?

Por phoxer

Claber

827 de clabLevel

4 tutoriales

Genero:Masculino  

Ing en Sistemas

firefox
Citar            
MensajeEscrito el 09 Jun 2009 04:40 pm
no te funcionaba porq tienes las register globals en off por seguridad es mejor saludos

pues claro que te llegaran muchos mensajes porque hay varias versiones de bots y muchos bots para cada dueño google por ejemplo tiene el google bot y mediaparter este segundo es el bot de adsense y adwords ahora yahoo y altavista usan el mismo con algunas diferencias en el nombre pero busca las particulariadades yahoo es slurp google es googlebot y mediapartner y los demas pues la unica idea que se me ocurre es que realizes busqueda de informacion sobre el nombre de los agentes de bot's una idea seria por medio de el webstat de cpanel el toma los nombres eso o simplemente no los mandes a tu mail tedioso no crees saludos de nuevo

Por talcual

686 de clabLevel



 

Colombia

firefox
Citar            
MensajeEscrito el 09 Jun 2009 04:46 pm

talcual escribió:

la unica idea que se me ocurre es que realizes busqueda de informacion sobre el nombre de los agentes de bot's una idea seria por medio de el webstat de cpanel el toma los nombres eso o simplemente no los mandes a tu mail tedioso no crees saludos de nuevo


Esa es buena, tendría que fijarme los nombres raros que salen en webstats.. gracias

Por phoxer

Claber

827 de clabLevel

4 tutoriales

Genero:Masculino  

Ing en Sistemas

firefox
Citar            
MensajeEscrito el 09 Jun 2009 08:12 pm
El Script esta andando por lo menos con el bot de Google.. pero hay algo que realmente me preocupa..

Miren en el tiempo y la cantidad de bots que pasan


cada aproximadamente media hora pasa uno!!! :twisted: ¿¿No es un poco exagerado??

Por phoxer

Claber

827 de clabLevel

4 tutoriales

Genero:Masculino  

Ing en Sistemas

firefox
Citar            
MensajeEscrito el 09 Jun 2009 08:35 pm
eso lo puedes arreglar con el robots.txt y la configuracion de las cabezeras para q los bots no pasen tanto ademas eso depende tbn de la cantidad de paginas que este leyendo el bot, yo te recomiendo que mejor armes un log mensual o semana y este si lo envies porq como no lo hagas podras enviar directamente la ip a las blacklist :-)

Por talcual

686 de clabLevel



 

Colombia

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.