Desenvolvimento de um sistema de detecção de rastreador bot / web

5

Estou tentando criar um sistema para minha empresa que queira verificar padrões incomuns / abusivos de usuários (principalmente web scrapers).

Atualmente, a lógica que implementei analisa os registros de acesso HTTP e leva em consideração os seguintes parâmetros para calcular o potencial de um usuário ser um scraper ou bot:

  1. Verifica a relação de solicitações v / s HTTP 'POST / GET' para cada IP

  2. Calcula a proporção de URLs exclusivos e o número total de ocorrências (dispersão) por cada IP

Com base nos dois parâmetros acima, tentamos bloquear qualquer IP que mostre um comportamento incomum, mas esses dois parâmetros, por si só, não foram suficientes para a detecção de bots. Assim, gostaria de saber:

  1. Existem outros parâmetros que podem ser incluídos para melhorar a detecção?

  2. Encontrei um artigo publicado na biblioteca do ACM que segue a abordagem Bayesiana para detectar um rastreador. Alguém já usou isso? Quão eficaz é isso?

  3. O Stack Overflow e outros sites de alto tráfego têm esse tipo de sistema implantado, que lógica eles seguem para manter os spammers / rastreadores indesejados em tempo real?

por bilkulbekar 23.12.2011 / 07:11
fonte

4 respostas

5

O que você está tentando proteger? A preocupação é de que o bot usará excessiva largura de banda ou que obterá uma cópia de todo o conteúdo do seu site?

Em qualquer um dos casos, uma análise do arquivo de log após o fato não fará nada para impedir qualquer um deles. Se você está preocupado com alguém roubando seu conteúdo, que bem ele sabe que alguém fez isso ontem à noite? Um pouco como trancar a porta depois de ter sido roubado.

Muito melhor simplesmente implementar a otimização da largura de banda, limitar o número de páginas por unidade de tempo (minuto / hora) que o site fornecerá a um endereço IP específico ou, melhor ainda, um bloco de endereços IP.

Lembre-se de que alguém tentando roubar seu conteúdo pode ser muito inteligente. O mais provável é usar vários endereços IP.

Esteja ciente também de que há dispositivos de hardware que podem ser instalados em um data center para fazer isso em tempo real.

    
por 23.12.2011 / 14:13
fonte
1

Basta inserir alguns links invisíveis no seu html. Qualquer um que segue um é um robô ou um raspador.

    
por 23.12.2011 / 07:43
fonte
1

Eu gosto de solicitações por sessão por segundo, sessões por IP e solicito ritmo ao longo do tempo.

O primeiro - pedido por sessão por segundo - será quase invariavelmente diferente entre humanos e bots.

A segunda - sessões por IP - pode aparecer para ser fácil de fazer, mas você provavelmente não será capaz de dizer a diferença entre um grande número de usuários por trás de um NAT / firewall - e - um bot multithreaded. É provavelmente um bom "indicador adicional", no entanto.

O terceiro - solicitar ritmo ao longo do tempo - requer um pouco de explicação. Os robôs tendem a ter seu próprio ritmo de análise, o processamento de "atraso" e o tempo de retorno entre as solicitações de página. Dependendo do que eles estão fazendo, um bot pode recuperar e analisar dezenas de kilobytes de conteúdo de páginas da Web sem hesitar, e voltar e fazer outra solicitação. No entanto, isso não difere do que um ser humano pode fazer quando, por exemplo, vê imediatamente um link que deseja e clica nele antes que o restante da página seja carregado.

No entanto, um ser humano, mesmo um que acessa seu site com frequência, provavelmente só se lembrará de como navegar rapidamente nos primeiros níveis de seu site usando esse método. Depois de alguns níveis, o ser humano provavelmente "desacelerará" e lerá mais conteúdo / levará mais tempo para processar o que solicitou. Um bot, por outro lado, continuará no ritmo original durante toda a interação com o site.

Com base nisso, eu diria que qualquer sessão que processe rapidamente (mais do que humanamente possível?) o conteúdo recuperado deve inicialmente ser categorizado como um bot, mas não cortado. Se, depois de dois, talvez três níveis de navegação em seu site, a sessão ainda continuar fazendo solicitações "mais rápidas que o humano", definitivamente, chamá-lo de bot e cortá-lo.

Se um ser humano puder realmente alcançar uma interação tão alta e sustentada com seu site, você provavelmente precisará reformular seu site mesmo assim (lol) e fornecer atalhos para o usuário em partes profundas do site ou "achatar" seu site completamente.

    
por 23.12.2011 / 18:30
fonte
0

Examine a frequência com a qual as solicitações estão chegando e, se estiver excessivamente alta, acelere as solicitações. Dessa forma, você não está bloqueando ninguém e, no entanto, ninguém pode consumir muita largura de banda.

    
por 23.12.2011 / 09:34
fonte