«

»

Bloquear acceso a Bots no deseados

Si tienes una página web y alguna vez te da por comprobar las estadísticas de visitas o el log de acceso al servidor web podrás comprobar que hay muchísimos bots que acceden al contenido de la misma, siguiendo todos sus links y recopilando toda la información que quieran.

Cuando se trata del Googlebot o Bingbot es aceptable, puesto que no queremos que los buscadores dejen de indexar nuestras paginas, pero hay otros muchos cuyas intenciones no están tan claras.

Robots.txt

El método habitual para bloquear los bots que no queremos que visiten nuestras páginas es mediante el archivo robots.txt identificando el bot e indicando que queremos que no acceda.

User-agent: Baiduspider
Disallow: /

Con esto debería ser suficiente, pero desgraciadamente no suele ser así. En muchos casos los bots siguen entrando igualmente .

.httaccess

Otro método para bloquear los bots no deseados consiste bloquearlos desde el archivo de configuración .htaccess

SetEnvIfNoCase User-Agent "^Baiduspider/2.0" bad_bot
Order Deny,Allow
Deny from env=bad_bot

Php

Mediante php también podemos bloquear el acceso de bots a nuestras páginas. Se puede hacer tanto bloqueando al bot por la información que muestre su UserAgent como por la ip desde la que accede.

Hay bots que tienen un gran número de ip diferentes, así que la forma de bloquearlos sería mediante el nombre de UserAgent que tengan asociado.

$userA = $_SERVER['HTTP_USER_AGENT'];

$detectar = array('Baiduspider','AhrefsBot');
if(!empty($userA))
{
  foreach($detectar as $d)
  {
    if(stripos($userA,$d) !== false)
    {
      exit("Contenido bloqueado");
    }
  }
}

En otras ocasiones los bots no utilizan un nombre real al acceder a las páginas, dejando el valor del UserAgent en blanco o poniendo el identificador de algún navegador.
Estos casos suelen ser fáciles de detectar al utilizar identificadores de navegadores en versiones antiguas y por hacer barridos a las páginas a una velocidad sospechosamente alta, como puede ser el acceder a las páginas a un ritmo de 3 o 4 páginas por segundo, o a menor velocidad pero a invervalos fijos de pocos segundos.

$ip=$_SERVER['REMOTE_ADDR'];
$detectar = array('xxx.xxx.xxx.xxx','yyy.yyy.yyy.yyy');
foreach($detectar as $d){
   if($ip==$d){
       exit("Contenido bloqueado");
   }
}

Deja un comentario

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

Puedes utilizar las siguientes etiquetas y atributos HTML: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>