Inicio Servidor Apache .htaccess Bloquear Robots, Bots y Arañas con .htaccess

Bloquear Robots, Bots y Arañas con .htaccess

Domingo, 02-01-2011 23:06 - Leer comentarios - Comentar

Existen muchos robots, bots o arañas (spiders) que viajan a traves de la web buscando informacion. Son programas lanzados por diferentes empresas o individuos, y que buscan realizar alguna tarea especifica para sus creadores. Algunos de ellos son buenos o beneficos, en el sentido que nos brindan visitantes a nuestros sitios, pero hay muchos que no tienen en mente nuestras mejores intenciones. Buscan por ejemplo, robarse el contenido que tengas en tu portal, "cosechar" cuantas direcciones de correo electronico, o explorar vulnerabilidades conocidas del software que tengas instalado.

La mejor manera de hacerlo es bloquearlos a nivel servidor. Para ello, el htaccess es muy flexible, puesto que nos permite utilizar inclusive expresiones regulares para lograrlo. Expresiones regulares son una codificación especial para buscar o hacer match de un patrón de búsqueda determinado. Para entenderlo mejor, veamos unos ejemplos:

Texto plano
RewriteCond %{HTTP_USER_AGENT} ^(HTTrack) [NC]
RewriteRule ^.*$ - [F,L]

"Traduciendo" esto nos dice:

Si el "user agent" EMPIEZA con la palabra HTTrack (sin importar las mayúsculas y minúsculas), niegale el acceso.

Me olvidaba comentar que debes tener activado el Mod_Rewrite para que las técnicas mostradas a continuación funcionen. Para ello, basta con que añadas éstas dos líneas al comienzo de tu archivo htaccess:

Texto plano
RewriteEngine on
RewriteBase /

Veamos otro ejemplo de bloqueo de un mal robot:

Texto plano
RewriteCond %{HTTP_USER_AGENT} ^(.*Girafabot) [NC]
RewriteRule ^.*$ - [F,L]

La diferencia entre éste y el anterior, está en el .* (punto asterisco). Si lo traducimos dice:

Si el “user agent” CONTIENE la palabra Girafabot (sin importar las mayúsculas y minúsculas), niegale el acceso.

Podemos también combinar ambas de la siguiente manera:

Texto plano
RewriteCond %{HTTP_USER_AGENT} ^(HTTrack) [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^(.*Girafabot) [NC]
RewriteRule ^.*$ - [F,L]

Si cumple la primera regla O cumple la segunda, entonces niégale el acceso.

Otra manera de combinarlo (mi preferida), es de la siguiente manera:

Texto plano
RewriteCond %{HTTP_USER_AGENT} ^(.*Girafabot|HTTrack) [NC]
RewriteRule ^.*$ - [F,L]

Ambas maneras de escribir la información son enteramente válidas, pero obviamente una ocupa mucho menos que la otra. Podemos añadir una cantidad indefinida de patrones adicionales así.

Comentarios

Rena - Martes, 08-11-2011 18:07

Smack-dab what I was lkoiong for-ty!


No se permiten comentarios en este momento.