Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: RicRed en 17 Enero 2011, 12:19 pm



Título: Evitar que Bot de Google vote noticias en mi web
Publicado por: RicRed en 17 Enero 2011, 12:19 pm
Hola a todos los del foro, tengo un archivo de noticias en la cual tengo un enlace hacia votar.php que vota la noticia por id

Ahora los Bots de google votan las noticias, como evitaria esto?

Saludos..


Título: Re: Evitar que Bot de Google vote noticias en mi web
Publicado por: #!drvy en 17 Enero 2011, 14:32 pm
Código
  1. <?php
  2.  
  3. if(stristr($_SERVER['HTTP_USER_AGENT'],'google')) {die('Fuera google! no estas admitido xD');}
  4.  
  5. ?>
Ponlo en las primeras lineas.

Saludos


Título: Re: Evitar que Bot de Google vote noticias en mi web
Publicado por: Diabliyo en 17 Enero 2011, 17:06 pm
Hola a todos los del foro, tengo un archivo de noticias en la cual tengo un enlace hacia votar.php que vota la noticia por id

Ahora los Bots de google votan las noticias, como evitaria esto?

Saludos..

Viendo que no hacer reconocimeinto de los bots, entonces me imagino que no estas contabilizando bien las visitas a tu sitio, cierto ??

Lo primero que te recomiendo hacer, es crees un script que reconoce los diferentes bots en la red, posteriormente esto te ayudara para saber contabilizar las visitas, así podrás discernir entre un bot y un usuario y contabilizar visitas de usuarios reales.

Y ahora si podrás también tener un mejor control sobre votaciones, vistas de noticias, hacerte un top 10 mas real, etc, etc...

Saludos !


Título: Re: Evitar que Bot de Google vote noticias en mi web
Publicado por: wirelesswifi en 17 Enero 2011, 17:08 pm
Código
  1. <?php
  2.  
  3. if(stristr($_SERVER['HTTP_USER_AGENT'],'google')) {die('Fuera google! no estas admitido xD');}
  4.  
  5. ?>
Ponlo en las primeras lineas.

Saludos

Ok, gracias drvy | BSM ahora para yahoo seria asi?

Código
  1. <?php
  2.  
  3. if(stristr($_SERVER['HTTP_USER_AGENT'],'yahoo')) {die('No admitido');}
  4.  
  5. ?>

Tengo una duda, es google o googlebot

Código
  1. <?php
  2.  
  3. if(stristr($_SERVER['HTTP_USER_AGENT'],'googlebot')) {die('No admitido');}
  4.  
  5. ?>

Saludos..


Título: Re: Evitar que Bot de Google vote noticias en mi web
Publicado por: wirelesswifi en 17 Enero 2011, 17:11 pm
Viendo que no hacer reconocimeinto de los bots, entonces me imagino que no estas contabilizando bien las visitas a tu sitio, cierto ??

Lo primero que te recomiendo hacer, es crees un script que reconoce los diferentes bots en la red, posteriormente esto te ayudara para saber contabilizar las visitas, así podrás discernir entre un bot y un usuario y contabilizar visitas de usuarios reales.

Y ahora si podrás también tener un mejor control sobre votaciones, vistas de noticias, hacerte un top 10 mas real, etc, etc...

Saludos !

Si es cierto, ahora para las visitas en el archivo noticias.php insertaria el mismo codigo de arriba?

Saludos.


Título: Re: Evitar que Bot de Google vote noticias en mi web
Publicado por: Diabliyo en 17 Enero 2011, 17:19 pm
Si es cierto, ahora para las visitas en el archivo noticias.php insertaria el mismo codigo de arriba?

Saludos.

Mira para saber los nombres de los bots, no hay como primero hagas un LOG completo sobre quienes entran, vaya, detectes el navegador, lenguaje e ip, con esto conforme pase el tiempo notaras que existen personas (eso crees tu) que entran con un navegador que tiene por nombre: bing o google, es mas que logico que no es una persona, y se trata del bot webcrawler (un buscador), asi que, conforme vas observando tu log y te van callendo los Bots, vas descubriendo su nombre real.

Ahora, conforme vas reconociendo mas bots, yo te recomiendo te crees una funcion mas o menos asi:

Código
  1. <?php
  2. function is_bot($navegador)
  3.      {
  4.      $m= strtolower($navegador); // convertimos el nombre a minuscular
  5.      $bots= array(
  6.            "google", "otro", "otro", "otro");
  7.  
  8.      # ahora comprobar si es un bot
  9.      foreach( $bots as $data )
  10.            {
  11.            if( !strcmp($data, $m) ) # si "m" es igual que "data", entonces es un bot
  12.                  return 1; # retornamos 1, es un bot
  13.            }
  14.      return 0; # exito, no es bot
  15.      }
  16.  
  17. if( !is_bot($_SERVER['HTTP_USER_AGENT']) ) # si no es bot
  18.      {
  19.      # guardamos datos ya sea log o votacion, o lo que sea...
  20.      }
  21. ?>

Asi ahorras codigo y solo invocas la funcion is_bot() pasandole como argumento el $_SERVER['HTTP_USER_AGENT'] y si devuelve 1 entonces es un bot, sino, entonces es un usuario real.

OJO: hay que ir observando tu LOG COMPLETO para que vayas conociendo los bots, de nada sirve busques en google nombre de bots o webcrawlers, estos a veces cambian de nombre cada varios a~os o cuando se les plasca, por ejemplo: el bot de google se llamaba antes como googlebot, ahora se llama google.

Saludos !


Título: Re: Evitar que Bot de Google vote noticias en mi web
Publicado por: Nakp en 17 Enero 2011, 17:23 pm
no bastaria con rel="nofollow" ? aunque si... si se pasa el nofollow habria que poner seguridad extra con los bots


Título: Re: Evitar que Bot de Google vote noticias en mi web
Publicado por: Diabliyo en 17 Enero 2011, 17:25 pm
no bastaria con rel="nofollow" ? aunque si... si se pasa el nofollow habria que poner seguridad extra con los bots

Si quieres evitar los bots y tienes un sitio web o blog, entonces es una tonteria :S... nadie indexaria tu sitio, solo tu y tus amigos conocerian tu pagina.

Eso del nofllow|noindex es solo para sitio donde requieres privacidad, por ejemplo Software para empresa (plataforma web), donde solo y unicamente quieres que accedan proveedores o personas especificas y no cualquier persona.

Pero ya estamos hablando que seria un plataforma, osea, que para ver el contenido necesitarias un user y clave.

Saludos !


Título: Re: Evitar que Bot de Google vote noticias en mi web
Publicado por: wirelesswifi en 17 Enero 2011, 17:34 pm
Mira para saber los nombres de los bots, no hay como primero hagas un LOG completo sobre quienes entran, vaya, detectes el navegador, lenguaje e ip, con esto conforme pase el tiempo notaras que existen personas (eso crees tu) que entran con un navegador que tiene por nombre: bing o google, es mas que logico que no es una persona, y se trata del bot webcrawler (un buscador), asi que, conforme vas observando tu log y te van callendo los Bots, vas descubriendo su nombre real.

Ahora, conforme vas reconociendo mas bots, yo te recomiendo te crees una funcion mas o menos asi:

Código
  1. <?php
  2. function is_bot($navegador)
  3.      {
  4.      $m= strtolower($navegador); // convertimos el nombre a minuscular
  5.      $bots= array(
  6.            "google", "otro", "otro", "otro");
  7.  
  8.      # ahora comprobar si es un bot
  9.      foreach( $bots as $data )
  10.            {
  11.            if( !strcmp($data, $m) ) # si "m" es igual que "data", entonces es un bot
  12.                  return 1; # retornamos 1, es un bot
  13.            }
  14.      return 0; # exito, no es bot
  15.      }
  16.  
  17. if( !is_bot($_SERVER['HTTP_USER_AGENT']) ) # si no es bot
  18.      {
  19.      # guardamos datos ya sea log o votacion, o lo que sea...
  20.      }
  21. ?>

Asi ahorras codigo y solo invocas la funcion is_bot() pasandole como argumento el $_SERVER['HTTP_USER_AGENT'] y si devuelve 1 entonces es un bot, sino, entonces es un usuario real.

OJO: hay que ir observando tu LOG COMPLETO para que vayas conociendo los bots, de nada sirve busques en google nombre de bots o webcrawlers, estos a veces cambian de nombre cada varios a~os o cuando se les plasca, por ejemplo: el bot de google se llamaba antes como googlebot, ahora se llama google.

Saludos !

Este codigo me serviria para guardar un log de bots de buscadores, y a la vez poner el proceso de votacion.

En el archivo robots.txt lo tengo asi:

Código:
# Negando el acceso a un archivo
Disallow: /votar.php

En el cual negaria el acceso al archivo votar.php

Gracias Diabliyo y a todos los que me ayudaron.

Saludos!


Título: Re: Evitar que Bot de Google vote noticias en mi web
Publicado por: Diabliyo en 17 Enero 2011, 17:53 pm
Este codigo me serviria para guardar un log de bots de buscadores, y a la vez poner el proceso de votacion.

En el archivo robots.txt lo tengo asi:

Código:
# Negando el acceso a un archivo
Disallow: /votar.php

En el cual negaria el acceso al archivo votar.php

Gracias Diabliyo y a todos los que me ayudaron.

Saludos!

La idea es buena y existen muchos que tal vez lo hagan asi, pero segun mi experiencia te recomiendo trates de hacerlo tambien por codigo, porque no todos los robots tienen un nombre :D, vaya, muchos acceden mas de 10 veces por dia (lo he visto en mi log), indexan el sitio, tienen un IP muy corta (por ejemplo: 67.45.89.14), la variable $_SERVER['HTTP_USER_AGENT'] esta vacia, no se detecta el S.O, ni el lenguaje.

Y hay otros que no se detecta el $_SERVER['HTTP_USER_AGENT'], pero si el S.O, el lenguaje y su ubicacion geografica, por ejemplo los buscadores Rusos y todos aquellos nuevos que igual ni conocemos.

Todos estos, si se diera el momento, estarian accediendo a tu archivo y haciendote un show otra vez :D

Saludos !


Título: Re: Evitar que Bot de Google vote noticias en mi web
Publicado por: wirelesswifi en 17 Enero 2011, 19:03 pm
La idea es buena y existen muchos que tal vez lo hagan asi, pero segun mi experiencia te recomiendo trates de hacerlo tambien por codigo, porque no todos los robots tienen un nombre :D, vaya, muchos acceden mas de 10 veces por dia (lo he visto en mi log), indexan el sitio, tienen un IP muy corta (por ejemplo: 67.45.89.14), la variable $_SERVER['HTTP_USER_AGENT'] esta vacia, no se detecta el S.O, ni el lenguaje.

Y hay otros que no se detecta el $_SERVER['HTTP_USER_AGENT'], pero si el S.O, el lenguaje y su ubicacion geografica, por ejemplo los buscadores Rusos y todos aquellos nuevos que igual ni conocemos.

Todos estos, si se diera el momento, estarian accediendo a tu archivo y haciendote un show otra vez :D

Saludos !

Si, yo los logs los guardo por mysql cuando votan a una noticia se guarda la IP en una tabla y casi todas son IPS 66.249.72.XXX 66.249.71.XXX 66.249.65.XXX etc...

Ya lo he puesto por el codigo que me has dado y por robots.txt.

Saludos! y Gracias.


Título: Re: Evitar que Bot de Google vote noticias en mi web
Publicado por: Nakp en 17 Enero 2011, 19:36 pm
Si quieres evitar los bots y tienes un sitio web o blog, entonces es una tonteria :S... nadie indexaria tu sitio, solo tu y tus amigos conocerian tu pagina.

Eso del nofllow|noindex es solo para sitio donde requieres privacidad, por ejemplo Software para empresa (plataforma web), donde solo y unicamente quieres que accedan proveedores o personas especificas y no cualquier persona.

Pero ya estamos hablando que seria un plataforma, osea, que para ver el contenido necesitarias un user y clave.

Saludos !

se usan en el link :rolleyes:

<a rel="nofollow"></a>

una tonteria es pensar que solo es va en el meta del documento


Título: Re: Evitar que Bot de Google vote noticias en mi web
Publicado por: tragantras en 18 Enero 2011, 21:17 pm
como ya dijeron antes, el archivo "robots.txt" se inventó para algo, no?

ponle un disallow y a correr, sin aún así quieres... tratar con crawlers indeseables (suponemos, como han dicho tambien, que no mandan headers de fiar y que no hacen uso del robots.txt), tienes varias opciones:


-pon un captcha para votar: lo veo lo más logico, si estas haciendo una votación tampoco querrás que te monten un script de autovotar y te jodan el sistema
-validación por javascript: casi ningun crawler implementa javascript, de manera que puedes crear el link a la votación de manera dinámica con javascript
-sistema de usuarios: sobre añadir nada, no?


Título: Re: Evitar que Bot de Google vote noticias en mi web
Publicado por: Nakp en 19 Enero 2011, 00:20 am
hacer la poll en un formulario por post? :P


Título: Re: Evitar que Bot de Google vote noticias en mi web
Publicado por: tragantras en 20 Enero 2011, 10:39 am
hacer la poll en un formulario por post? :P

ahi le has dado, simple y eficaz ;)