Fontes, citações e detonando leechers com mod_rewrite

Uma coisa que irrita 3 em cada 10 blogueiros, são os outros 7 que vivem de chupar conteúdo e simplesmente reproduzi-los, achando que o fato de usar o termo “fonte: fulano” valha alguma coisa. Aliás, essa moçada que vive de copiar, deturpou completamente a palavra “fonte”.

Para que fique claro:

Fonte é o conteúdo que lhe inspirou a postagem, você pode até ter pinçado as idéias do site, pode até ter acatado o que aquele site escreveu, concordar e chegar a mesma conclusão, mas você está fazendo com SUAS palavras. Sem problemas é algo normal.

Citação é a cópia de um trecho da postagem, algo que seja irrisório frente ao tamanho total da mesma. Por exemplo, em um texto grande como este, dois ou três parágrafos seriam algo aceitável, mas em uma postagem de pouco texto como a do anel revólver, o ideal seria no máximo uma passagem, a parte de um parágrafo. Sim, a citação sempre deve ser escrita de forma diferente do resto do texto, seja usando um blockquote, seja usando aspas e itálico (aqui eu uso os três juntos). Duvido que alguém se incomode em ser citado da maneita correta, eu pelo menos não acho ruim.

Plágio, chupada, sangue-suga (leech), é copiar o post integralmente. E ainda têm aqueles que logo que a mãe deixa usar o computador do bordel fazem sites chupadores de feed.

Sim, caso alguém se inclua na última definição e sinta-se ofendido, e pense em processar, vai ser MUITO interessante usar a sua petição inicial como prova em uma ação de direitos autorais, que no Brasil são implícitos.

Mas fora os chupadores de conteúdo, temos também os chupadores de banda, que é a moçada que simplesmente faz hotlink das imagens que você guarda no seu servidor, sem a menor cerimônia. Não ligam para a possibilidade de estarem consumindo seus recursos nem nada, e é justamente para combater os plagiadores de feed, e essa moçada que faz leech de imagem, que segue abaixo um pequeno tutorial sobre uso de mod_rewrite, que visa em primeiro lugar trocar suas imagens normais por anuncios nos sites onde a moçada gosta de chupar banda, e em segundo lugar detonar sites que copiam seus feeds.

Sobre o mod_rewrite.

O mod_rewrite é um add on para o servidor Apache, trata-se de uma ferramenta MUITO poderosa, que pode ser utilizada em uma infinidade de maneiras, o pouco que falo aqui apenas arranha a superfície do que ele pode fazer. Por exemplo, no Uêba eu o uso para esconder TODAS as requisições que são feitas ao meu sistema, o que é excelente para dificultar exploits. Em servidores de mídia, eu o uso para evitar leech, e até mesmo para esconder os arquivos de vídeo do Xpock, cujo endereço sobrevive entre 20 e 30 minutos a contar do momento em que a página é de vídeo é gerada.

Mas antes você precisa saber um mínimo sobre navegadores, toda requisição de página ao servidor vem em algo chamado “header”, e para ficarmos no básico consideremos apenas que entre as informações que ele traz, vêm a url solicitada e a origem desta solicitação.

Ao receber a requisição o Apache pergunta ao mod_rewrite se o header atende alguma condição pré-definida. Estas condições se baseiam nas variáveis deste mesmo header, geralmente construídas com “expressões regulares”. Encontrando as condições, o mod_rewrite vai reescrever a requisição (daí o seu nome), e devolver para o Apache a versão modificada para que este a processe. Traduzindo para os neófitos, o programador pode criar várias condições a serem seguidas e regras a serem aplicadas, como por exemplo, fazer com que o mod_rewrite entregue B sempre que alguém pedir A.

É graças a este módulo que existem as URL amigáveis, o .htaccess do Wordpress que é o CMS deste blog, informa ao Apache que toda URL deve ser tratada pelo arquivo index.php. Desta forma o endereço desta postagem, que é http://cybervida.com.br/fontes-citacoes-e-detonando-leechers-com-mod_rewrite é modificado para fazer uma requisição ao index.php, que descobre através das configurações do sistema que a forma correta de procurar o post é através do “post slug” de cada entrada (o post-slug é único, quando dois títulos são iguais o WP adiciona um numeral), processando finalmente o pedido e fazendo com que o Apache entregue o conteúdo ao leitor.

Abaixo, vão duas utilizações do mod_rewrite para tentar diminuir as ações mais comuns de plágio e até mesmo fazer uns anúncios gratuitos do seu blog ;-)

Sei que não sou das pessoas mais didáticas, então qualquer dúvida, postem nos comentários que eu tento ajudar a entender melhor.

Caso UM – proteção global, liberando apenas para leitores de feed e seus domínio amigos.

A técnica aqui funciona de maneira a excluir da regra usando as condições:

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

Explicando parte por parte.

RewriteCond – é a indicação de condição

%{HTTP_REFERER} – é a variável do header que vai ser analisada, no caso a página que faz a referência

!^ - é o condicionante, no caso o ponto de exclamação é a indicação de negatividade, o acento circunflexo, é a indicação de começo de linha, logo !^ quer dizer: “que não comece com”.

http://(www\.)?cybervida.com.br/.* - é bem óbvio mas valem duas explicações, o (www\.)? quer dizer “com ou sem www.”, já o .* é para indicar que não importa o que vem depois, tudo que importa é como começa a URL.

$ - indica o final de linha

[NC] – indica que não precisa ser sensível a maiúsculo

No caso as condições estão encadeadas, ou seja, a regra só vai funcionar se TODAS elas forem falsas.

Já a regra fica assim:

RewriteRule .*\.(jpg|jpeg|gif|png|bmp)$ /403/fat-sam.png [R,NC]

Novamente explicando:

RewriteRule – Regra de substituição

.*\.(jpg|jpeg|gif|png|bmp)$ - qualquer arquivo que tenha qualquer destas extensões.

http://media.cybervida.com.br/403/fat-sam.png – o que vai ser comunicado ao Apache para ser entregue como resposta da requisição.

[R,NC] – R de Redirecionar, NC não sensível a maiúsculos.

Para quem não quer ter trabalho, aqui vai um modelo bem fácil de ser implantado, basta seguir as instruções:

1. Crie ou edite o .htaccess da pasta onde estão suas imagens e adicione o texto abaixo.
2. Para não complicar sua vida, coloque a imagem com sua propaganda na em qualquer pasta, menos dentro daquela onde o anti-leech vai rodar (nem em subpasta dela, já que você precisaria criar ainda outro htaccess, e é complicação desnecessária).
3. Altere a regra, colocando o endereço de sua imagem.

<IfModule mod_rewrite.c>
RewriteEngine on
#Tem gente que bloqueia o envio do header, de repente é alguém legitimo!
RewriteCond %{HTTP_REFERER} !^$ [NC]
#Liberando os domínios que você permite compartilhar imagens
RewriteCond %{HTTP_REFERER} !^http://(www\.)?SEU_DOMINIO/.*$      [NC]
#Vamos deixa que apenas o feedburner do SEU blog veja as imagens
RewriteCond %{HTTP_REFERER} !^http://(www\.)?feeds.feedburner.com/cybervida.*$      [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?feedburner.com/cybervida.*$      [NC]
#Aqui os leitores mais populares de feed - infelizmente nos feeds dos leechers suas imagens aparecerão
RewriteCond %{HTTP_REFERER} !^http://(www\.)?google.com/reader/.*$      [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?e.my.yahoo.com/.*$      [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?bloglines.com.*$      [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?netvibes.com.*$      [NC]
RewriteCond %{HTTP_REFERER} !^http://(www\.)?newsgator.com.*$      [NC]
#Este aqui é opcional, para o caso de você resolver usar a parte dois
RewriteCond %{REQUEST_FILENAME} !.*pixel.gif$      [NC]
#Edereço da imagem pela qual você quer substituir
RewriteRule .*\.(jpg|jpeg|gif|png|bmp)$ ENDEREÇO COMPLETO DA SUA IMAGEM [R,NC]
</IfModule>

Para adicionar mais sites permitidos, tudo que você precisa fazer, é adicionar mais linhas:

RewriteCond %{HTTP_REFERER} !^http://(www\.)?ENDEREÇO_DO_LEITOR_DE_FEED.*$ [NC]

Pronto, esta parte vai resolver o problema básico do roubo de banda do seu site, aliás, se roubarem banda, pelo menos estarão contribuindo para você fazendo propaganda de graça. Outra coisa, muito provavelmente, o cara que pegar suas imagens e publicar em qualquer lugar, vai estar com as originais guardadas em cachê, então ele não vai ver o anti-leech em ação tão cedo ;-)

Caso DOIS – apontando as armas para um domínio especídifico.

Esse daqui é uma receitinha de bolo especial para detonar aquela moçada que logo que a mãe deixa usar o computador do bordel cria um site que se alimenta com conteúdo roubado de feeds diversos.

A abordagem do problema neste caso é mais trabalhosa, envolve a adição de um plugin ao seu Wordpress que adicione pixels transparentes ao feed, criação de uma ultra-super-mega-imagem (eu uso uma de 800×30000 pixels), além da filtragem domínio por domínio.

O plugin que eu uso é o “Simple Feed Copyright”, modificado para ficar da maneira que está abaixo, adicionando um linha com 10 pixels transparentes ANTES da postagem, outra abordagem é adicionar manualmente estes pixels no meio do texto, fica ainda mais eficiente.

$precontent = '<img src="http://DOMINIO.EXTENSAO/pixel.gif" border="0" /><img src="http://DOMINIO.EXTENSAO/pixel.gif" border="0" /><img src="http://DOMINIO.EXTENSAO/pixel.gif" border="0" /><img src="http://DOMINIO.EXTENSAO/pixel.gif" border="0" /><img src="http://DOMINIO.EXTENSAO/pixel.gif" border="0" /><img src="http://DOMINIO.EXTENSAO/pixel.gif" border="0" /><img src="http://DOMINIO.EXTENSAO/pixel.gif" border="0" /><img src="http://DOMINIO.EXTENSAO/pixel.gif" border="0" /><img src="http://DOMINIO.EXTENSAO/pixel.gif" border="0" /><img src="http://DOMINIO.EXTENSAO/pixel.gif" border="0" />';
$poscontent = '<hr />©2007-2011 <a href="' . get_bloginfo('url') . '">' . get_bloginfo('name') . '</a>. Os feeds em RSS fornecido pelo CyberVida têm por destino os leitores do blog que prefiram fazê-lo através desta tecnologia. Se você está vendo esta mensagem em algum blog ou site, saiba que se trata de reprodução não autorizada...';
function add_notice( $content ) {
global $precontent, $poscontent;
if( is_feed() ) {
return $precontent.$content.$poscontent;
} else {
return $content;
}
}
add_filter('the_content', 'add_notice');

Segundo passo é editar o .htacess desta vez a condição vai procurar domínios que atendam-na, e aplicar a regra em caso positivo. A grande diferença aqui, é só mesmo a ausência do “!” na construção da linha condicionante:

RewriteCond %{HTTP_REFERER} ^http://(www\.)?DOMINIO.PLAGIADOR.*$ [NC]
RewriteRule .*\.(jpg|jpeg|gif|png|bmp)$ http://SEUDOMINIO/403/superleech.png [R,NC]

Estas duas linhas devem ser adicionadas depois do esquema de proteção anti-leech regular. Novamente, para cada domínio que você detectar estar chupando conteúdo, você adiciona uma nova linha de condição.

Quando o site plagiador puxar o seu RSS, junto virão os 10 pixels transparentes, que no meu caso se transforma em uma gigantesca fila de imagens de 30.000 pixels de altura, totalizando 300.000 pixels de altura, deixando o conteúdo quase inutilizável, e transformando o site do pastel em um grande outdoor do seu ;-)

As limitações do sistema:
1. Quem ver a imagem “anti-leech” no outro site e entrar no seu, muito provavelmente vai continuar vendo a imagem “anti-leech”, por isso é bom adicionar um aviso mandando o usuário dar um CTRL+F5 (que força recarregar a página desconsiderando o cachê do navegador).
2. Só funciona com sites em hospedagem própria *E* que estejam rodando Apache (não sei se funciona em Apache for Windows).

Material útil para quem quiser se aprofundar:

Fundação Apache: mod_rewrite
Cheat Sheets de mod_rewrite e de expressões regulares



Sem postagens relacionadas.
Se você está vendo as imagens "anti-leech", force o recarregamento da página com CTRL+F5 (no caso de Firefox ou Internet Explorer - Windows) ou CTRL+R no Linux.

8 Comentário(s)

  1. Vinicius K-Max | Jan 27, 2008 | Reply

    Excelente implementação!
    Vi tua indicação rolando no twitter :)

    Esmolinha dada (adsense)

    []’s

    [Reply]

  2. Jonny | Jan 27, 2008 | Reply

    Ótima dica!! utilizei no caso da publicação integral dos meus textos no “infoblogs”.

    Não custa lembrar que infelizmente o modo mod_rewrite não funciona default no apache do windows (mas quem hospeda no apache com windows?)

    [Reply]

  3. Andre L. Soares | Jan 28, 2008 | Reply

    E têm os plagiadores que, além de copiar, tentam mesmo se apoderar de tudo, colocando o nome como autores do texto. No meu caso, esses são os que mais me irritam.

    Mas, no geral, é terrível ver como a internet se tornou o ‘paraíso’ dos sem capacidade criativa, dos sem caráter e dos que têm preguiça de pensar e escrever.

    Excelente sua postagem. Um abraço!

    [Reply]

  4. théo | Feb 14, 2008 | Reply

    RewriteCond %{HTTP_REFERER} !^http://(www\.)?google.com/reader/.*$

    Cara, neste caso, a última barra não influencia? Por exemplo, se o noob acessar o endereço sem a barra no fim, não dá pau? Não seria mais “seguro” fazer uma lista do tipo:

    RewriteCond %{HTTP_REFERER} !^http://url.com.br/.*$ [NC]
    RewriteCond %{HTTP_REFERER} !^http://url.com.br$ [NC]
    RewriteCond %{HTTP_REFERER} !^http://www.url.com.br/.*$ [NC]
    RewriteCond %{HTTP_REFERER} !^http://www.url.com.br$ [NC]

    Ou dá no mesmo?

    [Reply]

  5. Gilberto "Knuttz" | Feb 14, 2008 | Reply

    Théo,

    você pode fazer assim tbm:

    RewriteCond %{HTTP_REFERER} !^http://url.com.br.*$ [NC]

    Não tem, em tese, problemas

    [Reply]

  6. théo | Feb 14, 2008 | Reply

    Saquei. Ah, faltou um google.com.br/reader ali, eles têm a versão nacional agora. Ou há um tempo, eu só descobri nesses dias.

    [Reply]

  7. théo | Feb 15, 2008 | Reply

    Esqueci de perguntar: dá pra linkar a imagem anti-leech?

    [Reply]

  8. Gilberto "Knuttz" | Feb 15, 2008 | Reply

    Théo,

    a imagem anti-leech não deve ser protegida, por isso que eu aconselho usa-la em outra pasta.

    [Reply]

1 Trackback(s)

  1. Feb 4, 2008: Minha paciência acabou - Ponto final no hotlink | Plugbr

Comente!

Ninguém é obrigado a concordar com o que está escrito neste blog, aliás, eu até encorajo opiniões contrárias, uma vez que acredito aprender com quem discorda ARGUMENTANDO, mas adianto que os seguintes tipos de comentários não serão aprovados:
  1. Que contenham discriminação de cunho racial, sexual ou religioso
  2. Que venham pregar religiões, qualquer uma
  3. Que falem mal sem argumentar
  4. Que incidam em crimes de injúria, calúnia ou difamação
  5. Esquerda pop ou qualquer outra coisa de recheio sofista
O objetivo disto não é cercear a opinião, serve apenas para garantir um bom nível às discussões.