Anonim

Eu administro um site para um cliente no qual eles exibem um grande banco de dados de informações que eles coletaram com precisão e devagar ao longo dos anos. Eles estão encontrando seus dados na web em vários lugares. Provavelmente, isso se deve a um raspador percorrendo o site por página e extraindo as informações necessárias em um banco de dados próprio. E, caso você esteja se perguntando, eles sabem que são os dados deles por causa de um único dado plantado em cada categoria em seu site.

Pesquisei bastante sobre isso nos últimos dias e posso dizer que não existe uma solução perfeita. Eu encontrei várias coisas a fazer para tornar isso um pouco mais difícil para eles, no entanto. Isso é o que eu implementei para o cliente.

Dados paginados ajaxificados

Se você possui muitos dados paginados e está paginando seus dados, basta adicionar um número diferente ao final do seu URL, por exemplo, http://www.domain.com/category/programming/2 - Então você está criando o trabalho do rastreador muito mais fácil. O primeiro problema é que ele possui um padrão facilmente identificável, portanto, soltar um raspador nessas páginas é fácil. Segundo problema, independentemente do URL das páginas subseqüentes na categoria, é mais provável que exista um link próximo e anterior para o qual eles se agarrem.

Ao carregar os dados paginados por javascript sem recarregar a página, isso complica significativamente o trabalho de muitos raspadores por aí. O Google recentemente começou a analisar o javascript na página. Há pouca desvantagem em recarregar os dados dessa maneira. Você fornece algumas páginas a menos para o Google indexar, mas, tecnicamente, os dados paginados devem estar apontando para a página da categoria raiz via canonização de qualquer maneira. Ajaxify suas páginas paginadas de dados.

Aleatorizar saída do modelo

Os raspadores costumam ser levemente personalizados especificamente para seus dados. Eles se prendem a um determinado ID ou classe div para o título, a 3ª célula em cada linha para sua descrição, etc. Há um padrão facilmente identificável para a maioria dos raspadores trabalhar com a maioria dos dados provenientes da mesma tabela, é exibido pelo mesmo modelo. Escolha aleatoriamente seus IDs de divisão e nomes de classe, insira colunas da tabela em branco aleatoriamente com largura 0. Mostre seus dados em uma tabela em uma página, em divs estilizados e uma combinação em outro modelo. Ao apresentar seus dados de forma previsível, eles podem ser obtidos de forma previsível e precisa.

Pote de mel

Isso é bastante elegante em sua simplicidade. Encontrei esse método em várias páginas sobre como impedir a raspagem de sites.

  • Crie um novo arquivo no seu servidor chamado gotcha.html.
  • No seu arquivo robots.txt, adicione o seguinte:
    Agente de usuário: *
    Não permitir: /gotcha.html

    Isso indica a todos os robôs e aranhas que estão indexando seu site para não indexar o arquivo gotcha.html. Qualquer rastreador da Web normal respeitará os desejos do seu arquivo robots.txt e não acessará esse arquivo. ou seja, Google e Bing. Você pode realmente implementar essa etapa e aguardar 24 horas antes de avançar para a próxima etapa. Isso garantirá que um rastreador não seja bloqueado acidentalmente por você, porque ele já estava no meio do rastreamento quando você atualizou seu arquivo robots.txt.
  • Coloque um link para gotcha.html em algum lugar do seu site. Não importa onde. Eu recomendaria no rodapé, no entanto, verifique se esse link não está visível, em CSS, display: none;
  • Agora, registre as informações gerais / IP do criminoso que visitou esta página e bloqueie-as. Como alternativa, você pode criar um script para fornecer dados incorretos e de lixo. Ou talvez uma boa mensagem pessoal sua para eles.

Os visualizadores regulares da Web não poderão ver o link, por isso não serão clicados acidentalmente. Rastreadores respeitáveis ​​(Google, por exemplo), respeitarão os desejos do seu robots.txt e não visitarão o arquivo. Portanto, os únicos computadores que devem tropeçar nesta página são aqueles com intenções maliciosas, ou alguém visualizando seu código-fonte e clicando aleatoriamente (e tudo bem, se isso acontecer).

Existem algumas razões pelas quais isso nem sempre funciona. Primeiro, muitos raspadores não funcionam como rastreadores da Web normais e não apenas descobrem os dados seguindo todos os links de todas as páginas do seu site. Raspadores geralmente são criados para se fixar em determinadas páginas e seguir apenas certas estruturas. Por exemplo, um raspador pode ser iniciado em uma página de categoria e instruído apenas a visitar URLs com a palavra / dados na lesma. Segundo, se alguém estiver executando o raspador na mesma rede que outras pessoas e houver um IP compartilhado em uso, você proibirá toda a rede. Você precisaria ter um site muito popular para que isso seja um problema.

Grave dados em imagens rapidamente

Encontre um campo de dados menor, não necessariamente longas seqüências de texto, pois isso pode tornar o estilo da página um pouco mais difícil. Produzindo esses dados dentro de uma imagem, sinto-me bastante confiante de que existem métodos em quase todas as linguagens de programação para escrever texto em uma imagem dinamicamente (em php, imagettftext). Isso provavelmente é mais eficaz com valores numéricos, pois os números oferecem uma vantagem de SEO muito mais insignificante.

Alternativa

Esta não era uma opção para este projeto. Exigir um login após uma certa quantidade de exibições de página ou exibir uma quantidade limitada de dados sem estar conectado. Por exemplo, se você tiver 10 colunas, exiba apenas 5 para usuários não conectados.

Não cometa este erro

Não se preocupe em tentar encontrar algum tipo de solução com base no user agent do bot. Essa informação pode ser facilmente falsificada por um raspador que sabe o que está fazendo. O google bot, por exemplo, pode ser facilmente emulado. Você provavelmente não deseja proibir o Google.

Impedindo a raspagem do site