<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Linux, Java y programación &#187; hotlink</title>
	<atom:link href="http://casidiablo.net/tag/hotlink/feed/" rel="self" type="application/rss+xml" />
	<link>http://casidiablo.net</link>
	<description>Blog de Java, Programación y Linux</description>
	<lastBuildDate>Fri, 11 Nov 2011 05:41:21 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>[Tutorial] Evitar hotlinking y sacarle provecho</title>
		<link>http://casidiablo.net/tecnicas-para-prohibir-hot-linking/</link>
		<comments>http://casidiablo.net/tecnicas-para-prohibir-hot-linking/#comments</comments>
		<pubDate>Sat, 06 Sep 2008 04:01:11 +0000</pubDate>
		<dc:creator>Cristian</dc:creator>
				<category><![CDATA[artículos]]></category>
		<category><![CDATA[tips]]></category>
		<category><![CDATA[tutorial]]></category>
		<category><![CDATA[web]]></category>
		<category><![CDATA[evitar]]></category>
		<category><![CDATA[hotlink]]></category>
		<category><![CDATA[hotlinking]]></category>
		<category><![CDATA[htaccess]]></category>

		<guid isPermaLink="false">http://casidiablo.net/?p=1506</guid>
		<description><![CDATA[Muchos sitios que copian nuestro contenido, bien sea de manera automática o manual, cargan además las imagenes que tenemos alojadas en nuestro servidor, lo cual nos roba el ancho de banda que estamos pagando. La idea de esta pequeña guía es enseñarte cómo evitar que te hagan hotlinking, e ir un poco más allá. El [...]]]></description>
			<content:encoded><![CDATA[
<div class="topsy_widget_data topsy_theme_blue" style="float: right;margin-left: 0.75em; background: url(data:,%7B%20%22url%22%3A%20%22http%253A%252F%252Fcasidiablo.net%252Ftecnicas-para-prohibir-hot-linking%252F%22%2C%20%22style%22%3A%20%22big%22%2C%20%22title%22%3A%20%22%5BTutorial%5D%20Evitar%20hotlinking%20y%20sacarle%20provecho%22%20%7D);"></div>
<p>Muchos sitios que copian nuestro contenido, bien sea de manera automática o manual, cargan además las imagenes que tenemos alojadas en nuestro servidor, <strong>lo cual nos roba el ancho de banda que estamos pagando</strong>. La idea de esta pequeña guía es enseñarte cómo evitar que te hagan <a href="http://www.cherrysuite.com/hotlinking.htm">hotlinking</a>, e ir un poco más allá. El hotlinking es una práctica detestable, aunque reconozco que yo mismo lo hice en mis tiempos de <strong>ignorancia suprema</strong>&#8230;</p>
<p>La técnica que utilizaremos consiste en editar el archivo <em>.htaccess</em> que tenemos en la raiz de nuestro servidor. Para los que no saben qué es <em>.htaccess</em>, me permito citar una <a href="http://www.marcelopedra.com.ar/glosario_H.htm">definición</a>:</p>
<p class="avisolegal" style="padding-left: 30px;">es un archivo de configuración en un servidor Web, y contiene comandos en el lenguaje del servidor que le indican cómo debe comportarse en ciertas situaciones. Alguno de los usos más comunes de un archivo htaccess son la restricción del acceso a determinados archivos o carpetas en Internet (o en una intranet) mediante el uso de contraseñas. Adicionamente, los htaccess se usan para redirigir usuarios automáticamente, para bloquear o permitir el acceso al servidor a ciertas direcciones de IP, y para llamar páginas de error customizadas en lugar de las páginas de error 404 standard del servidor. Los servidores Web Apache, y otros servidores que cumplimentan las normas del NCSA pueden usar htaccess.</p>
<p>Además, es ampliamente utilizado por los bloggers, aún cuando no se den cuenta, puesto que es la manera en que WordPress hace que las URL puedan ser del tipo <em>http://ejemplo.com/url-muy-satanica</em>, en vez de <em>http://ejemplo.com/?p=666</em>. De eso ya había creado <a href="http://casidiablo.net/permalinks-personalizados/">un pequeño artículo</a>, que no esta demás nombrar.</p>
<p>Entonces, <strong>la idea de este artículo es configurar nuestro servidor a través del <em>.htacces</em></strong> para que realice algunas de las siguientes acciones:</p>
<ul>
<li><a href="#1">No cargar imágenes alojadas en nuestro servidor en otras páginas</a></li>
<li><a href="#2">Cargar imágenes alojadas en nuestro servidor, sólo en algunos sitios (por ejemplo, lectores de feeds)</a></li>
<li><a href="#3">Cargar una imagen diferente</a></li>
<li><a href="#4"><strong>Cargar la misma imagen pero modificada (distorsionada, en blanco y negro, o con una marca de agua)</strong></a></li>
</ul>
<h3 id="1">No cargar imágenes alojadas en nuestro servidor en otras páginas</h3>
<p>Vamos a tomar como ejemplo mi <em>.htaccess</em>, que de seguro será similar o igual al tuyo, si usas WordPress. El archivo en cuestión es el siguiente:</p>
<pre class="brush: xml; title: ; notranslate"># BEGIN WordPress
&lt;IfModule mod_rewrite.c&gt;
RewriteEngine On
RewriteBase /wordpress/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]
&lt;/IfModule&gt;</pre>
<p>Si deseamos que ninguna de nuestras imágenes puedan ser cargadas desde otro servidor, simplemente debemos añadir algunas líneas dejando el archivo en el siguiente estado:</p>
<pre class="brush: xml; title: ; notranslate"># BEGIN WordPress
&lt;IfModule mod_rewrite.c&gt;
RewriteEngine On
RewriteBase /wordpress/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://tuweb.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://tuweb.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.tuweb.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.tuweb.com/.*$ [NC]
RewriteRule .*\.(gif|jpg|jpeg|png|bmp)$ - [F,NC,L]
&lt;/IfModule&gt;</pre>
<p>Donde debes cambiar <em>tuweb</em>, por el nombre de dominio de tu site o blog. Pero nada mejor que entender lo que significan estas extrañas líneas:</p>
<ul>
<li>Las líneas del tipo <em>RewriteCond %{HTTP_REFERER} !^http://tuweb.com$ [NC]</em> básicamente le dicen al servidor que para una petición que no (NO = !) proceda de las URLs indicadas, debe crear una regla&#8230;</li>
<li>&#8230; la regla es <em>RewriteRule .*\.(gif|jpg|jpeg|png|bmp)$ &#8211; [F,NC,L]</em>, y lo que hace es prohibir (<em>F</em>) la carga de cualquier tipo de imagen <em>(gif|jpg|jpeg|png|bmp)</em>, ignorar la diferencia entre mayúsculas y minúsculas (<em>NC</em>) de tal manera que sea igual una petición <em>http://ejemplo.com/imagen.jP<strong>g</strong></em> que <em>http://ejemplo.com/imagen.jP<strong>G</strong></em>, y por último la <em>L</em> indica que esa será la última regla en ejecutarse en caso de que se cumplan las condiciones.</li>
</ul>
<h3 id="2">Solo permitir que algunos sitios carguen nuestras imágenes</h3>
<p>Para este caso, la idea es crear una lista blanca de los sitios que pueden cargar nuestras imágenes. Esto es útil, por ejemplo, para permitir a los lectores que nos sigan <a href="http://casidiablo.net/subscripcion-feed/">por medio del feed</a> cargar las imágenes en Google Reader, NetVibes, etc.</p>
<p>Siguiendo con el ejemplo anterior nuestro <em>.htaccess</em> ahora deberá lucir de la siguiente manera:</p>
<pre class="brush: xml; title: ; notranslate"># BEGIN WordPress
&lt;IfModule mod_rewrite.c&gt;
RewriteEngine On
RewriteBase /wordpress/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /wordpress/index.php [L]

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://tuweb.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://tuweb.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.tuweb.com$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.tuweb.com/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.google.com/reader/view/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.google.com/reader/m/view/.*$ [NC]
RewriteRule .*\.(gif|jpg|jpeg|png|bmp)$ - [F,NC,L]
&lt;/IfModule&gt;</pre>
<p>Como ves, lo único que cambia es que añadimos las URL de los sitios permitidos, debajo del nuestro.</p>
<h3 id="3">Cargar una imagen diferente</h3>
<p>Lo típico a hacer aquí, es cargar una imagen que tenga nuestro logo y URL, de tal manera que los lectores del blog que nos hace hotlinking, se vean obligados a entrar a nuestro sitio si quieren ver nuestra imagen.</p>
<p>En este caso, lo que cambia es la última línea (<em>RewriteRule</em>), que es donde ordenamos al servidor a hacer una redirección:</p>
<pre class="brush: xml; title: ; notranslate"># BEGIN WordPress
&lt;IfModule mod_rewrite.c&gt;
RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]

RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://casidiablo.net$ [NC]
RewriteCond %{HTTP_REFERER} !^http://casidiablo.net/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.casidiablo.net$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.casidiablo.net/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.google.com/reader/view/.*$ [NC]
RewriteCond %{HTTP_REFERER} !^http://www.google.com/reader/m/view/.*$ [NC]
RewriteRule .*\.(gif|jpg|jpeg|png|bmp)$ http://casidiablo.net/hotlink.png [R,NC,L]
&lt;/IfModule&gt;</pre>
<p>El único flag por explicar, teniendo en cuenta que ya explique el resto en el primer ejemplo, es <em>R</em>: redirecciona la petición a la URL indicada. Con esto cuando alguien intente poner la imagen en su Web, el resultado será el siguiente:</p>
<p style="text-align: center;"><img title="hotlinking-frustrado" src="http://casidiablo.net/wordpress/wp-content/uploads/2008/09/hotlinking-frustrado.png" alt="hotlinking frustrado" /></p>
<h3 id="4">Cargar la misma imagen pero modificada (distorsionada, en blanco y negro, o con una marca de agua)</h3>
<p>Este es mi método favorito, aunque requiere algo de programación en PHP. Puesto que el <strong>lector</strong> de la <em>web que nos hace hotlinking</em> <strong>no tiene la culpa</strong>, la idea es que hagamos algo más profesional: mostrar la imagen pero con modificaciones. Así, si nos robaran <a href="http://casidiablo.net/wordpress/wp-content/uploads/2008/08/truecrypt2.png">ésta imagen</a> (de <strong>103.95 KB</strong>), el navegador mostraría esto (una imagen de <strong>9.01 KB</strong>):</p>
<p style="text-align: center;"><img title="hotlinking-frustrado" src="http://casidiablo.net/wordpress/wp-content/uploads/2008/09/hotlinking-frustrado2.png" alt="hotlinking frustrado" /></p>
<p>Lo que se hizo fue lo siguiente:</p>
<ul>
<li>Transformar la imagen JPG, <strong>lo cual hace que el ancho de banda utilizado sea menor</strong></li>
<li>Reducir el tamaño la imagen, <strong>lo cual hace que el ancho de banda utilizado sea menor</strong></li>
<li>Poner la imagen en blanco y negro, <strong>lo cual hace que el ancho de banda utilizado sea menor</strong></li>
<li>Poner una marca de agua, para hacerle saber al lector a donde debe dirigirse</li>
<li><strong>Mostrar un preview de la imagen original</strong></li>
</ul>
<p>Para lograr esto, debemos tener las librerías <a href="http://es.php.net/gd">GD para PHP</a> instaladas en el servidor (la mayoría los trae por defecto). Si deseas aprender a hacerlo, <a href="http://casidiablo.net/tecnicas-para-prohibir-hot-linking/2/">continúa leyendo la siguiente página&#8230;</a></p>

]]></content:encoded>
			<wfw:commentRss>http://casidiablo.net/tecnicas-para-prohibir-hot-linking/feed/</wfw:commentRss>
		<slash:comments>39</slash:comments>
		</item>
	</channel>
</rss>

