Pegue os engraçadinhos que fazem hotlink de imagens

Você está cansado dessas pessoas que pegam a URL das suas imagens e lascam no blog/site delas e acabam usando a sua banda sem que você tenha dado permissão? Copiar as imagens do meu blog para outros sites eu não vejo problema, mas usar a banda do meu servidor eu não gosto.

Pois bem, a tirinha de hoje do Nerdson ilustra muito bem o problema dos hotlinks de imagens. Ela é, como sempre, muito didática.

(Como a tirinha é muito grande, adianto que depois dela coloco a solução para o problema do hotlink de imagens)

(A propósito, eu não estou fazendo hotlink da tirinha, copiei a imagem para o meu servidor 🙂 )

Para resolver esse problema, você pode editar o .htaccess do seu servidor (caso ele seja Apache), e incluir as seguintes regras:

RewriteEngine On
RewriteCond %{HTTP_REFERER} !^$
RewriteCond %{HTTP_REFERER} !^http://([^.]*\.)?meusite\.com\.br
RewriteCond %{HTTP_REFERER} !^http://([^.]*\.)?(google|yahoo|hotmail)\.com
RewriteRule (minha_pasta_de_imagens.*\.(gif|jpg|jpeg|png)$) http://www.meusite.com.br/forbid.jpg [L]

Vamos entender linha por linha o código acima:

RewriteEngine On

Obviamente ativa o Módulo Rewrite do Apache para que ele possa re-escrever os endereços de acordo com as regras. (maiores informações sobre o mod_rewrite)

As próximas regras só ativarão a reescrita se todas forem cumpridas. Caso uma delas não seja verdadeira, o apache vai retornar a página solicitada.

RewriteCond %{HTTP_REFERER} !^$

Retorna verdadeiro se o Referer não for vazio. Se for vazio, é sinal de que vem do próprio site o pedido.

RewriteCond %{HTTP_REFERER} !^http://([^.]*\.)?meusite\.com\.br

Retorna verdadeiro se o Referer não for do domínio do seu site/blog. A expressão ([^.]*\.)? quer dizer “qualquer sequência de caracteres que não seja ponto seguida de um ponto”. A interrogação no final da expressão indica que ela é opcional. Neste caso você libera o acesso a http://www.meusite.com.br ou http://qualquercoisa.meusite.com.br ou http://meusite.com.br

RewriteCond %{HTTP_REFERER} !^http://([^.]*\.)?(google|yahoo|hotmail)\.com

Retorna verdadeiro se o Referer não for dos domínios *.google.com, *.yahoo.com, *.hotmail.com.
Faço isso para excluir da regra esses domínios para evitar que pessoas que lêem seu site/blog pelo feed ou por webmail não sejam afetadas pela regra. Você pode adicionar outras regras parecidas com essas para excluir outros domínios.

RewriteRule (minha_pasta_de_imagens.*\.(gif|jpg|jpeg|png)$) http://www.meusite.com.br/forbid.jpg [L]

Finalmente a regra que redireciona o pedido para a imagem que você quiser.

IMPORTANTE: Substitua minha_pasta_de_imagens pela pasta do seu servidor que contém as imagens. No caso dos blogs baseados em WordPress, é a pasta wp-content/uploads. Essa regra só vale para os arquivos gif, jpeg, jpg e png.

O [L] do final da regra indica que o apache não deve usar outra regra depois dessa, muito útil para quem tem outras regras no seu mod_rewrite.

No caso do meu blog, coloquei uma imagem marota (pode copiar à vontade, mas sem fazer hotlink, 🙂 ) para aparecer nos sites/blogs dos que ficam fazendo hotlink das minhas imagens.

te peguei

Seja criativo, mas não baixe o nível. 🙂

6 comentários sobre “Pegue os engraçadinhos que fazem hotlink de imagens”

  1. Buenas!
    Mas tu sabes que eu desconhecia por completo esse tal de hotlink !
    E o pior cansei de fazer isso na maior das inocência !
    Muito bom o artigo,bastante claro e didático!
    Assim o qüera aqui não fica fazendo mer** !

  2. Muito bom! Já usei muito esse rewrite, só que eu colocava um horário também, ou seja, dependendo do horário posso permitir ou não o hotlink das minhas imagens.

    Para adicionar a restrição de horário, bastam mais duas linhas:

    RewriteCond %{TIME_HOUR}%{TIME_MIN} >0800
    RewriteCond %{TIME_HOUR}%{TIME_MIN} <1700

    Ou seja, entre 08h e 17h não permito o hotlink, nos demais horários, não tem problema.

    Estas duas linhas devem ser adicionadas antes da RewriteRule..

    Forte abraço.

  3. Boa tarde José Antonio
    Primeiro queria parabenizar, ótimo POST

    Só tenho algumas dúvidas
    Eu estou fazendo trabalho de SEO na pagina http://www.guiadaembalagem.com.br e tentei utilizar essa regra no arquivo .htacess

    Copiei uma imagem do site, e fiz um “<img src" com um hotlink direto para uma outra pagina de teste que esta em outro servidor
    Funcionou perfeitamente

    Ele simplimsente não mostra a imagem…

    Só que aconteceu o seguinte… a imagem do site original tambem sumiu! É assim mesmo ? Tem como reverter isso ?
    Ao tentar acessar a url da imagem novamente apareceu apenas o caminho da imagem "textualmente"

    Eu fiz alguma coisa errada ?

    RewriteCond %{HTTP_REFERER} !^$
    RewriteCond %{HTTP_REFERER} !^http://(www.)?guiadaembalagem.com(/)?.*$ [NC]
    RewriteRule .*.(gif|jpg|jpeg|bmp|zip|rar|mp3)$ – [F,NC]

    Abraços

  4. Gabriel, você precisa acertar a expressão regular da segunda condição:

    Experimente trocar:
    RewriteCond %{HTTP_REFERER} !^http://(www.)?guiadaembalagem.com(/)?.*$ [NC]

    por:
    RewriteCond %{HTTP_REFERER} !^http://(www\.)?guiadaembalagem\.com\.br [NC]

Os comentários estão fechados.