Como ser um bom cidadão ao rastrear sites?

83

Vou desenvolver algumas funcionalidades que rastrearão vários sites públicos e processarão / agregarão os dados neles. Nada de sinistro como procurar endereços de e-mail - na verdade, é algo que pode realmente direcionar tráfego adicional para seus sites. Mas eu divago.

Além de honrar robots.txt , existem regras ou diretrizes, escritas ou não escritas, que eu deveria estar seguindo para (a) evitar parecer mal-intencionado e potencialmente banido, e (b) não causar problemas para os proprietários / webmasters do site?

Alguns exemplos que consigo pensar podem ou não ser importantes:

  • Número de solicitações paralelas
  • Tempo entre pedidos
  • Tempo entre rastreamentos inteiros
  • Evitando links potencialmente destrutivos (não queira ser o Spider of Doom - mas quem sabe se isso é mesmo prático)

Isso é realmente apenas cuspir, no entanto; Existe alguma sabedoria testada e testada que seja amplamente aplicável a qualquer pessoa que pretenda escrever ou utilizar uma aranha?

    
por Aaronaught 11.07.2011 / 03:25
fonte

7 respostas

85

Além de obedecer ao robots.txt, obedeça os elementos e links nofollow e noindex in <meta> :

  • Existem muitos que acreditam que o robots.txt é o caminho certo para indexação de blocos e, por causa disso, instruímos muitos proprietários de sites a confiar na tag <meta name="robots" content="noindex"> para informar aos rastreadores da Web que não indexem uma página.

  • Se você estiver tentando fazer um gráfico das conexões entre os sites (qualquer coisa semelhante ao PageRank), (e <meta name="robots" content="nofollow"> ) deve indicar que o site de origem não confia no site de destino o suficiente para dar um endosso apropriado. Então, enquanto você pode indexar o site de destino, você não deve armazenar a relação entre os dois sites.

O SEO é mais uma arte do que uma ciência real, e é praticado por muitas pessoas que sabem o que estão fazendo, e muitas pessoas que lêem os resumos executivos de pessoas que sabem o que estão fazendo. Você terá problemas com sites bloqueados para fazer coisas que outros sites acharam perfeitamente aceitáveis devido a alguma regra que alguém ouviu ou leu em uma postagem de blog no SEOmoz que pode ou não ser interpretada corretamente.

Por causa desse elemento humano, a menos que você seja Google, Microsoft ou Yahoo !, você é considerado malicioso, a menos que se prove o contrário. Você precisa ter cuidado extra para agir como se não fosse uma ameaça para o proprietário de um site, e agir de acordo com a forma como você gostaria que um rastreador potencialmente mal-intencionado (mas esperançosamente benigno) agisse:

  • pare de rastrear um site depois que você detectar que está sendo bloqueado: 403 / 401s em páginas que você conhece como trabalho, limitação, tempo limite etc.
  • evite rastreamentos detalhados em períodos de tempo relativamente curtos: rastreie uma parte do site e volte mais tarde (alguns dias depois) para rastrear outra parte. Não faça solicitações paralelas.
  • evite rastrear áreas potencialmente sensíveis: URLs com /admin/ , por exemplo.

Mesmo assim, será uma batalha de subida, a menos que você recorra a técnicas de black hat como spoofing de UA ou mascare seus padrões de rastreamento propositadamente: muitos proprietários de sites, pelas mesmas razões acima, bloquearão um rastreador desconhecido à vista em vez de correr o risco de alguém não tentar "hackear o site". Prepare-se para muito fracasso.

Uma coisa que você pode fazer para combater a imagem negativa que um rastreador desconhecido terá é deixar claro na sua string user-agent quem você é:

Aarobot Crawler 0.9 created by John Doe. See http://example.com/aarobot.html for more information.

Onde http://example.com/aarobot.html explica o que você está tentando realizar e por que você não é uma ameaça. Essa página deve ter algumas coisas:

  • Informações sobre como entrar em contato diretamente com você
  • Informações sobre o que o rastreador coleta e por que ele está sendo coletado
  • Informações sobre como recusar e ter dados coletados excluídos

Esse último é a chave: um bom opt-out é como uma garantia de devolução do dinheiro e ganha uma quantidade razoável de boa vontade. Deve ser humano: um passo simples (um endereço de e-mail ou, idealmente, um formulário) e abrangente (não deve haver nenhuma "gotcha": opt-out significa que você pára de rastrear sem exceção).

    
por 11.07.2011 / 05:44
fonte
32

Embora isso não responda a todas as suas perguntas, acredito que será útil para você e para os sites que você rastreia.

Semelhante à técnica usada para usar sites de força bruta sem chamar atenção, se você tiver um pool grande o suficiente de sites que precisa rastrear, não rastreie a próxima página do site até rastrear a próxima página de todos os sites. os outros sites. Bem, os servidores modernos permitirão a reutilização da conexão HTTP , então você pode querer fazer mais de um para minimizar a sobrecarga, mas a ideia Ainda está de pé. Não rastreie um site até a exaustão até você passar para o próximo . Compartilhe o amor.

Para você no final de um dia, ainda é possível rastrear o mesmo número de páginas, mas o uso médio de largura de banda em um único site será muito menor.

Se você quiser evitar ser a aranha da desgraça, não há um método seguro. Se alguém quiser furar o seu nariz , eles irão e provavelmente farão por isso, em maneiras que você poderia nunca prever. Dito isto, se você não se importar em perder a página válida ocasional, tenha uma lista negra de palavras para um link que o impeça de segui-lo. Por exemplo:

  • Excluir
  • Remover
  • Atualizar
  • Editar
  • Modificar
Não é à prova de erros, mas às vezes você simplesmente não pode impedir que as pessoas tenham que aprender da maneira mais difícil;)

    
por 11.07.2011 / 04:24
fonte
20

Meu conselho é ouvir o que o site que você está rastreando está lhe dizendo e alterar dinamicamente seu rastreamento em reação a isso.

  • O site está lento? Rastreie mais devagar para que não seja DDOS. É rápido? Rasteje um pouco mais, então!

  • O site está com erro? Rasteje menos para não estressar um site que já está sob pressão. Use tempos de repetição exponencialmente maiores, para que você tente menos quanto mais tempo o site estiver cometendo erros. Mas lembre-se de tentar mais tarde, eventualmente, para que você possa ver qualquer coisa que estiver faltando devido a, digamos, um erro de uma semana em um caminho de URL específico.

  • Obtendo muitos 404s? (lembre-se de que as nossas páginas 404 também usam o tempo do servidor!) Evite rastrear mais URLs com esse caminho por enquanto, talvez tudo o que estiver faltando; se file001.html - file005.html não estiver lá, aposto que você também usa dólares em donuts file999.html ! Ou talvez diminua o percentual de tempo que você recupera qualquer coisa nesse caminho.

Acho que é nesse ponto que muitos rastreadores ingênuos são profundamente errados, por terem uma estratégia robótica em que eles fazem a mesma coisa, independentemente dos sinais que estão recebendo do site de destino.

Um rastreador inteligente é reativo ao (s) site (is) de destino que está tocando.

    
por 11.07.2011 / 12:38
fonte
19

Outros mencionaram alguns dos mantras, mas deixe-me adicionar alguns.

Preste atenção ao tipo e tamanho do arquivo. Não puxe esses binários enormes.

Otimize para algumas páginas típicas de "lista de diretórios" do servidor. Em particular, eles permitem classificar por tamanho, data, nome, permissões e assim por diante. Não trate cada método de classificação como uma raiz separada para rastreamento.

Peça por gzip (compressão em tempo real) sempre que estiver disponível.

Limite a profundidade ou detecte recursão (ou ambos).

Limite o tamanho da página. Algumas páginas implementam tarpits para impedir o uso de bots de e-mail. É uma página que carrega na velocidade do caracol e tem um comprimento de terabytes.

Não indexe páginas 404. Motores que possuem maiores índices fazem isso e recebem um ódio bem merecido em troca.

Isso pode ser complicado, mas tente detectar farms de balanceamento de carga. Se v329.host.com/pages/article.php?99999 retornar o mesmo que v132.host.com/pages/article.php?99999, não raspe a lista completa de servidores de v001.host.com até v999. host.com

    
por 11.07.2011 / 10:52
fonte
4

Vou adicionar apenas uma coisinha.

Direitos autorais & outras questões legais: Sei que você escreve, eles são sites públicos, então pode não haver direitos autorais, mas pode haver outros problemas legais para armazenar os dados.

Isso dependerá, é claro, dos dados do país em que você está armazenando (e de onde você os está armazenando). Caso em questão, os problemas com o Ato Patriótico dos EUA contra a Diretiva de Proteção de Dados da UE. Um resumo executivo do problema é que as empresas norte-americanas precisam fornecer seus dados para, por exemplo. o FBI se perguntado, sem informar os usuários disso, onde a Diretiva de Proteção de Dados afirma que os usuários têm que ser informados sobre isso. Se link

    
por 11.07.2011 / 10:37
fonte
3

Ligue para o seu webcrawler ou para spider, associado ao seu nome. Isso é importante. Motores analíticos e afins procuram por aqueles para associá-lo como uma ... aranha. ;)

A maneira que eu vi isso é através do cabeçalho de solicitação User-Agent

    
por 11.07.2011 / 05:20
fonte
2
  • Preserve cookies, quando necessário, para impedir que o site crie sessões desnecessárias.
  • Implemente o comportamento de análise de links, mais próximo do navegador. Nosso site ao vivo relata muitos "404s", devido a solicitações de bot por arquivos perdidos.
por 11.07.2011 / 15:26
fonte