Links indesejáveis e como retaliar

phibernet.jpgPor indesejáveis que sejam, e desagradáveis os seus autores, não podemos evitar que façam links para os nossos posts e blogues. Mas há formas de destruir grande parte do efeito de um link, frustrar as intenções de quem os faz e evitar a maior parte do tráfego induzido por pessoas cujas “recomendações” dispensamos.
Não se trata de fórmulas mágicas. A arquitectura da Internet — uma rede de redes — e a filosofia do hipertexto blindam por completo qualquer tentativa de manter quintas isoladas. Nem mesmo os mestres chineses conseguem bloquear por completo o acesso a servidores: na Internet há sempre formas alternativas de chegar a um dado ponto a partir de outro, não importa o que se faça para o evitar. Só há uma forma comprovada de o fazer: desligar a corrente.
Mas isto não impede que alguns filtros e técnicas tenham graus de eficácia aceitáveis. Sobretudo tendo em conta a relação custo (uns minutos gastos) / benefício (a maior parte das pessoas que viriam dali, já não vêm; o link é inutilizado).
Há mais de um ano que bloqueio o tráfego oriundo de três blogues (e ao fazer a pesquisa de rotina para este post tive, até, o grato prazer de verificar que um deles tirou o link para o Certamente!, o que considero uma vitória pessoal.)
E como faço tal coisa? Uso algumas linhas de código muito fáceis de empregar, tão fáceis que qualquer pessoa pode repetir no seu blogue ou página, como comprovei esta semana ao ceder o código a um amigo que por e-mail me perguntou: como é que eu consigo despistar o link que o meu troll de estimação fez no blog dele para o meu?
O mais curioso é que o e-mail chegou precisamente quando eu estava a iniciar este post, que já me andava na cabeça há meses!
Respondi-lhe e em menos de dez minutos resolvemos o assunto — infelizmente, não vemos as caras dos desarmados no momento em que percebem que o seu link deixou de funcionar.
Ou por outra: passou a funcionar de outra maneira.
No meu caso, simplesmente redirecciono os leitores para o site de onde vieram. Não pretendo publicitar que blogues excomunguei, pelo que farei a demonstração usando uma página que eu próprio criei. Ora vá aqui, leia, experimente — e regresse premindo o botão de voltar do seu browser.
Como viu, o link aparentemente não funcionou.
O que se passou na realidade, mas a uma velocidade imperceptível a olho nú, é que durante milisegundos o seu computador “visitou” o meu servidor, mas este analisou a sua proveniência e com base nela recusou mostrar-lhe o site, devolvendo-o à página de onde tinha vindo.
Repetindo o que disse acima, é claro que isto não evita que a pessoa visite mesmo o nosso endereço. Basta copiar o endereço e introduzi-lo manualmente, em vez de clicar. Mas a maioria das pessoas não o fará. E o sinal de indesejado fica claro num ambiente onde em regra os sinais são pouco elucidativos — a menos que sejam expressos directamente.
Nuances, também vivemos delas.

O melhor disto é que a explicação é mais complicada do que o código. Vamos lá.

ciberdefesa1.jpgComo proceder
(Esta técnica foi produzida em código PHP mas é traduzível para outras linguagens. O exemplo é de aplicação imediata, por copia+cola, a um blogue em WordPress)

Localize o ficheiro index.php na raiz do seu blogue. No WordPress é simples: menu Gerir -> Ficheiros e clique no Modelo do Índice Principal (ver figura).
O conteúdo actual do ficheiro deverá ser este ou muito similar:
<?php
/* Short and sweet */
define('WP_USE_THEMES', true);
require('./wp-blog-header.php');
?>

O que vamos lá colocar é isto (a negrito os acrescentos e a vermelho o que deverá mudar):
<?php
$idepassear = 0;
if (preg_match(”/lnksts/”, $_SERVER['HTTP_REFERER'])) {
$idepassear = 1;
}
if ($idepassear == 1) {
header(”HTTP/1.1 307 Temporary Redirect”);
header(”Location: http://lnkths.com/certamente-teste“);
exit;
}

/* Short and sweet */
define(’WP_USE_THEMES’, true);
require(’./wp-blog-header.php’);
?>

A explicação do código
$idepassear é uma variável. O nome dela… foi suavizado para publicação e trata-se de homenagem a um hacker que me ensinou umas artimanhas e que tem um gosto particular pelo calão. Podia chamar-se $variavelum. É inicializada a zero (era dispensável; mas incluí-a por uma questão de clareza — e não só; num post lá mais para a frente voltaremos a esta variável para mais acções de ciberdefesa).
A linha seguinte verifica se o cliente vem de alguma página através de um link e se sim, verifica se o sítio de origem contém a expressão lnkths. Se contiver, a variável $idepassear passa a ter o valor 1. Com essa expressão, qualquer link produzido em lnkths.com será dinamitado. (Cuidado com a expressão a escolher para colocar aqui; se for demasiado abrangente, pode bloquear mais endereços do que gostaria. Imagine que lá metia “blogspot”…)
A seguir, o coração do sistema (como eu gosto desta expressão): se o conteúdo de $idepassear for igual a 1, o cabeçalho (header) que o index.php envia para o browser contém a nova localização para onde o cliente deve ir. Como já disse, eu devolvo-os à procedência mas podemos aí colocar qualquer endereço! Como Location: http://google.com/search?q=troll :)
A parte do código 307 destina-se a eventuais motores de pesquisa que venham por ali: indica um redireccionamento temporário, pelo que o nosso domínio não será afectado (sem a indicação, não é claro se poderia perder algum “sumo” em termos de Google, que desconfia dos redireccionamentos, sobretudo dos condicionais. Não considerei no âmbito deste post qual o melhor código de redireccionamento — que, estou certo, alguns leitores gostarão de debater, e eu também.)
Se a variável $idepassear contiver o valor 0, o index.php salta para a instrução seguinte e desenvolve-se o pedido de página normal.

É importante
1. fazer primeiro uma cópia de segurança do conteúdo do index.php
2. copiar o código tal e qual, basta uma aspa a menos ou a mais, ou a omissão de um ponto e vírgula, para o index.php não funcionar! (pode sempre repor o conteúdo salvaguardado e repetir as instruções com mais cuidado)
3. colocar o bloco de alterações ANTES do resto do conteúdo do index.php.

Nota final
No meu caso, o uso destas simples linhas é uma acção ciberdefensiva activa — sobretudo sanitária, devo dizer, tendo em conta os “blogues” que bloqueei. Mas no caso do amigo que já beneficiou do código — que aplicou sem problema algum, embora eu suspeite que foi a primeira vez que mexeu em PHP — trata-se de mais do que isso. Sendo vítima de cyberbullying, evitar os links do seu troll, como carinhosamente o trata, tornou-se também num conforto moral.
Saber que podemos fazer algo, por pouco que seja, que afecte as intenções do perseguidor, é por um lado um sinal interior de resistência e por outro representa uma vitória num jogo onde nos avisaram que só teríamos derrotas.

Adendas
1. Este código é fornecido na versão it works for me — isto é, funciona comigo, é uma prova de conceito despretenciosa e não foi feito a pensar em uso por profissionais, que estão convidados desde já a apresentar versões mais robustas e decentes, que possam filtrar também por agente (browser), por exemplo.
2. Não sou versado em Javascript, pelo que atrever-me a escrever a versão nessa linguagem seria consumidora de tempo e o mais certo era não ficar obra decente às primeiras. Mas certamente algum leitor meu é, pelo que fica o repto para a versão Javascript — que tem a vantagem de alargar a utilização a muito mais plataformas, nomeadamente às plataformas de blogging comerciais como o Blogspot, ou o WordPress.com.
3. A mesma técnica pode ser usada, com eficácia forte e feia, para minorar os efeitos de ataques pontuais, ou súbitos, de spam. Foi, aliás, por aí que começou a vida do meu index.php reforçado com a variável $idepassear. Só mais tarde vi este seu potencial escondido e o modifiquei em conformidade (e o spam combate-se melhor a um nível mais perto da máquina.)

Debate

25 opiniões no artigo “Links indesejáveis e como retaliar”

    1 Sérgio em 29 Fev 08 10:01

    Bem interessante. Mas eu seria mais agressivo e redireccionaria para os trolls do troll (que também haverão) ou para um qualquer programa afiliado (podia ser que rendesse uns trocos) :)

    2 José Fontainhas em 29 Fev 08 10:12

    Excelente artigo, mas cuidado. A base de decisão é o HTTP_REFERER, que em princípio não é impossível disfarçar. Eu recomendaria ainda a leitura deste artigo: http://tinyurl.com/2usssj

    3 Links indesejáveis e como retaliar | WordPress-PT em 29 Fev 08 10:22

    [...] aqui um excelente artigo para quem se está a iniciar na protecção do conteúdo do seu blog. Apresenta uma técnica eficaz [...]

    4 Alcides Fonseca em 29 Fev 08 10:39

    É um truque muito engraçado :) Eu tenho usado outra técnica, ignoro, e vejo o link contribuir para o meu pagerank/authority/adsense :)

    5 Links indesejaveis, como retaliar | MUIOMUIO.NET em 29 Fev 08 12:01 6 RIcardo Almeida em 29 Fev 08 16:47

    “Excelente artigo, mas cuidado. A base de decisão é o HTTP_REFERER, que em princípio não é impossível disfarçar. Eu recomendaria ainda a leitura deste artigo: http://tinyurl.com/2usssj

    O HTTP_REFERER é possivel disfarçar/spoofar. Uma extenção do firefox permitem fazer isto, é só seguir este link: http://sebastians-pamphlets.com/referrer-spoofing-with-prefbar-341/

    7 RIcardo Almeida em 29 Fev 08 16:49

    O HTTP_REFERER é possivel disfarçar/spoofar. Uma extenção do firefox permitem fazer isto, é só seguir este link: http://sebastians-pamphlets.com/referrer-spoofing-with-prefbar-341/

    8 Paulo Querido em 29 Fev 08 17:39

    José e Ricardo, claro que é possível disfarçar ou spoofar o HTTP_REFERER. Este truque não tem, como disse, nenhuma pretensão de resolver algo que é insolúvel dada a natureza do meio, é mais uma prova de conceito para estimular acções activas de ciberdefesa, do que propriamente código de exemplo.
    Li alguma coisa do Sebastians Pamphlets mas sobre os códigos 301, 302 e 307. Muito bom.
    Os plugins citados nese link, José, parecem-me potentes, thanks for notice. Quando voltar ao tema citá-los-ei, fica para já a recomendação aqui.

    Alcides, eu ligo cada vez menos às questões da autoridade tal como ela é medida mecanicamente. Quer dizer: eu ligo, mas ligo menos, isto é, ando a revalorizar o factor humano e a sobrepor questões como a reputação e o conhecimento de audiências à “autoridade” como ela é medida pelos links.
    O hipertexto não é um sistema de hierarquizar conteúdos e de dar prémios a quem cumpre as regras da Google — é uma ferramenta de ligar páginas com assuntos relacionados.
    Mas percebo-te ;)

    9 Rui Cruz em 29 Fev 08 19:01

    Se me permites, deixando-nos de tanta coisa, basta por no footer um link back para nós.

    E porque é que não nos devemos preocupar com estas pessoas, perguntas tu.
    Por três motivos:
    - dão tráfego (se tiver o link que te falei)
    - dão mais links para o nosso blog, suponto que usamos frequentemente, como eu, links internos.
    - dá gozo ser-se copiado, porque é sinal que gostam de nós.

    Sobre o link no RSS Footer existem dois plugins curiosamente de dois autores portugueses que fazem isso. Mais info: http://www.linkspt.com/como-evitar-o-plagio-do-teu-rss.html

    Rui

    10 Rui Cruz em 29 Fev 08 19:02

    *supondo

    Rui

    11 Paulo Querido em 29 Fev 08 19:14

    Rui,
    não percebi essa do link back no footer? Este artigo destina-se a evitar qualquer link de determinado(s) site(s), não diferenciei links de blogrolls de links em posts. Ter um link de volta para um site que me é indesejável? What’s the point?

    Esta metodologia destina-se a quem:
    1. NÃO queira tráfego a qualquer custo
    2. NÃO ande nisto para contabilizar links
    3. Queira evitar tanto quanto for possível, por baixíssimo custo, tráfego oriundo de fontes que considere indesejáveis
    4. Queira emitir um sinal de que prefere ignorar certa(s) fonte(s)

    Não mencionei uma única vez o plágio, não percebi o contexto.

    12 pedro em 29 Fev 08 19:41

    Já pensou usar uma imagem? Por exemplo…’goatse.jpg’ ou algo do género.
    Just kidding :)

    13 Paulo Querido em 29 Fev 08 19:46

    LOL! Não pensei mas é excelente ideia.
    No entanto… uso algo parecido mas com outra finalidade. Como disse acima para justificar a colocação daquela variável, “num post lá mais para a frente voltaremos a esta variável para mais acções de ciberdefesa”… Nessa altura mostrarei o que um grupo *muito* reduzido de “leitores” (2, para ser preciso) costumava ver em determinada altura quando cá vinha procurar briga.
    Mas não é uma imagem. Uma imagem é mais código a meter do que algumas pessoas merecem.

    14 João Silas em 29 Fev 08 21:33

    Muito Interessante Paulo

    15 Rui Cruz em 1 Mar 08 00:12

    Mas quem é que NÃO quer tráfego a qualquer custo e NÃO ande nisto para contabilizar links?
    Ninguém. Ou quase ninguém.

    A solução que dei foi a de poderem copiar o nosso conteúdo, façam-no à vontade, espalhem, linkem, e ainda ganhamos mais ainda com isso.

    Mas ok, está um bocado off-topic. :P

    Rui

    16 Paulo Querido em 1 Mar 08 00:15

    Rui, desculpa — acho que estás enganado. Há muita gente, muita mesmo, que não quer tráfego a qualquer custo e não faz, sequer, ideia que os links se podem contabilizar, quanto mais se têm valor e quanto.

    Espalhar a mensagem é outra coisa, muito diferente. Mesmo aí, há sítios onde tu preferirias que não te reproduzissem os posts. Mesmo tu ;)

    17 Sérgio Rebelo em 1 Mar 08 00:17

    Rui, além de off-topic (eu diria que comentaste sem leres o post até ao fim) essa tua solução só funciona para os copiadores preguiçosos que copiam automaticamente. Também os há menos preguiçosos que se dão ao trabalho de retirar eventuais links que lá coloques.

    18 Fernando Vasconcelos em 1 Mar 08 18:06

    Vim parar aqui através do MuioMuio. espero que não seja um dos referrers de que fala :-) :-) Penso que não, até porque caso contrário não estaria a ler isto. Artigo interessante. Ainda não precisei mas vai para a biblioteca dos truques. Bom e ganhei mais um blog para ler regularmente.

    19 Paulo Querido em 1 Mar 08 18:09

    Caro Fernando Vascocelos, grato pela sua visita — e espero ter o prazer da sua leitura periódica.
    Seria bom sinal não vir a precisar deste tipo de truques no seu blogue.
    Abraço

    20 hacker que conheces em 4 Mar 08 23:18

    E pah, simplifica…

    21 troll desconhecido em 5 Mar 08 01:34

    Neste novo blog perdeu-se o interessante artigo de 2004: http://pauloquerido.net/2004/10/credibilidade_e_anonimato

    22 Paulo Querido em 5 Mar 08 01:44

    troll desconhecido, obrigado pela dica. O artigo está novamente disponível. Um esquecimento, aquando da mudança da semana passada, indisponibilizou os arquivos de 2005 e 2004.

    23 Fernando Vasconcelos em 5 Mar 08 11:05

    Paulo
    Ainda bem que se perderam os arquivos porque caso contrário nunca teria lido o seu post sobre anonimato e credibilidade. Está absolutamente perfeito. E tenho mesmo de reconhecer que mudou a forma como pensava o anonimato. Tem razão em tudo o que afirma. Absolutamente perfeito.
    Fernando

    24 Eduardo Maio em 5 Mar 08 18:13

    Apenas uma reformulação ao código, já que não se torna necessário definir uma viarável.

    if (preg_match(’/lnksts/’, $_SERVER['HTTP_REFERER'])) {
    header(’HTTP/1.1 307 Temporary Redirect’);
    header(’Location: http://lnkths.com/certamente-teste‘);
    exit;
    }

    25 Paulo Querido em 5 Mar 08 18:32

    Eduardo, yeap. Se quisermos ser puros, basta isso. Como disse, deixei a variável porque no meu exemplo a tenho, uma vez que uso vários condicionais e voltarei a falar de “truques” acessíveis a qualquer pessoa ao nível do index.php.

Deixe a sua opinião




Textos mais recentes