Cómo evitar el robo de imágenes
Hace unas cuantas semanas me llevé una sorpresa al revisar las estadísticas de visitas de micrographic. Resulta que las visitas estaban aumentando a un ritmo constante de un 15-20% desde hacía meses, pero el consumo de ancho de banda se había disparado desde el mes de abril hasta triplicarse en sólo dos meses. Lo lógico habría sido que este consumo hubiese aumentado de forma pareja a las visitas, pero indagando un poco en el origen de las visitas encontré al causante del desaguisado: Google Images. Por lo visto, de un día para otro el buscador de imágenes de Google se dio cuenta de que este blog existía y empezó a enviarme a centenares de personas que llegaban al blog en busca de las fotos de músicos que acompañaban a las letras de canciones que publiqué durante los exámenes de febrero. De todas formas, esto no justificaba un consumo de ancho de banda tan alto. Había algo más… Y fue ese el momento en el que aprendí lo que era el hotlinking.

Os cuento. Entre los centenares de internautas que llegaban al blog vía Google Images había un buen puñado de foreros y usuarios de diarios para adolescentes como Xanga, LiveJournal o MSN Spaces. Esta gente estaba enlazando directamente alguna de las imágenes alojadas en micrographic, utilizándolas como avatares, firmas en foros, etc, etc. Todo esto, que puede parecer algo de lo más inocente, representa para mí que me estén chupando parte del ancho de banda que pago religiosamente cada mes a mi hosting, sin ni tan siquiera recibir unas míseras visitas al blog a cambio. Lo correcto sería que copiaran la imagen que les interesa y la subieran a su propio servidor (existen decenas de webs para alojar imágenes de forma gratuíta). Pues bien, esta práctica abusiva se denomina hotlinking. Y afortunadamente existe un antídoto contra estos foreros chupópteros: .htaccess
Modificando .htaccess (un pequeño archivo de texto que sirve para configurar el servidor donde tenemos alojado el blog) podemos conseguir que las imágenes de nuestro blog sólo se vean desde dentro de nuestro dominio. De esta forma, los enlaces externos a nuestras imágenes dejarán de funcionar. Estos serían los pasos a seguir, según se pudo leer hace un tiempo en Isopixel :
Comprobamos si tenemos un archivo .htaccess en nuestro servidor (carpeta www, donde está el index). Si no lo tenemos, sólo tenemos que crear un archivo de texto en el bloc de notas y llamarlo .htaccess. Copiamos estas líneas en él:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://PON-EL-NOMBRE-DE-TU-DOMINIO.com [NC]
RewriteCond %{HTTP_REFERER} !^http://www.PON-EL-NOMBRE-DE-TU-DOMINIO.com [NC]
RewriteRule .*\.(gif|jpg|jpeg|swf|png)$ – [NC,F]
Claro que también se puede tener más mala leche y configurar .htaccess para que en lugar de mostrar la imagen enlazada aparezca una imagen de 2000×2 píxeles (por ejemplo) que destroce la maquetación del blog o foro que te está robando la imagen. Sólo tendríamos que cambiar la última línea del ejemplo de arriba por esta otra:
RewriteRule .*\.(gif|jpg)$ http://PON-EL-NOMBRE-DE-TU-DOMINIO/bad-image.gif [R,NC]
siendo bad-image.gif la imagen con la que pensamos causar el pequeño sabotaje
Los usuarios de Textpattern debemos tener cuidado a la hora de manipular .htaccess porque nos podemos cargar el acceso a nuestro blog con bastante facilidad. Tal y como explican en Joshuaink (el blog con más amor dentro que una furgoneta llena de hippies: recomendado), debemos añadir dos líneas (la 2 y la 3) al .htaccess que nos viene por defecto con TXP de forma que quede así:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?PON-EL-NOMBRE-DE-TU-DOMINIO.com(/)?.*$ [NC]
RewriteRule .*\.(gif|jpe?g|png|bmp)$ [F,NC]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+) – [PT,L]
RewriteRule ^(.*) index.php
De todas formas, esta solución no es perfecta porque impide que se puedan ver las imágenes del blog en bloglines, por ejemplo, y hace que los búscadores de imágenes se olviden de nuestro blog, y no es eso lo que nos interesa. Sólo buscamos parar los pies a algunos usuarios de Google Images, no a todos. Así pues, una solución más acertada sería tener un .htaccess así:
RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://(www\.)?tu-dominio.com(/)?.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?otro-dominio-permitido.org(/)?.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?bloglines.com(/)?.*$ [NC]
RewriteCond %{HTTP_REFERER} !google\. [NC]
RewriteCond %{HTTP_REFERER} !msn\. [NC]
RewriteCond %{HTTP_REFERER} !yahoo\. [NC]
RewriteCond %{HTTP_REFERER} !altavista\. [NC]
RewriteCond %{HTTP_REFERER} !ask\. [NC]
RewriteCond %{HTTP_REFERER} !archive\.org [NC]
RewriteRule .*\.(gif|jpe?g|png|bmp)$ [F,NC]
RewriteCond %{REQUEST_FILENAME} -f [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^(.+) – [PT,L]
Hacía mucho que no te visitaba más que a través del lector de feeds. ¿Cuándo has vuelto a cambiar de imagen?
{ Camarada Bakunin } 30 julio 2005, 10:16 #
Por cierto, qué os parece el nuevo logo?
{ txarly } 30 julio 2005, 17:53 #
{ Camarada Bakunin } 31 julio 2005, 03:11 #
{ Mars Attacks } 31 julio 2005, 07:41 #
Es una solución drástica (que yo no utilizo), pero puede ser muy útil en casos graves de hotlinking.
Mal gusto? Me parece de peor gusto no respetar las reglas básicas de netiquette
{ txarly } 31 julio 2005, 07:57 #
He visto que el cPanel de nuestro servidor tiene una opción para evitar el hotlinking. Aunque no lo he sufrido (pongo muy pocas imágenes) lo he activado…
Lo de la imagen asesina también lo permite… estoy pensando si poner alguna.
{ Camarada Bakunin } 4 agosto 2005, 04:12 #
{ txarly } 4 agosto 2005, 07:06 #