Como ser um bom cidadão ao rastrear sites?

83

Vou desenvolver algumas funcionalidades que rastreiam vários sites públicos e processam / agregam os dados neles. Nada sinistro como procurar endereços de email - na verdade, é algo que pode realmente direcionar tráfego adicional para seus sites. Mas eu discordo.

Além de honrar robots.txt, existem regras ou diretrizes, escritas ou não escritas, que devo seguir para (a) evitar parecer malicioso e potencialmente ser banido e (b) não causar problemas aos proprietários / webmasters do site?

Alguns exemplos em que consigo pensar podem ou não importar:

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

No entanto, isso é apenas cuspir; existe alguma sabedoria testada e comprovada por aí que seja amplamente aplicável a qualquer pessoa que pretenda escrever ou utilizar uma aranha?

Aaronaught
fonte
1
Embora as respostas abaixo forneçam uma ótima resposta sobre como rastrear respeitosamente o conteúdo, lembre-se de usar o conteúdo aceitável depois que você o rastrear. A republicação total ou parcial pode ser uma violação dos direitos autorais dos proprietários.
Gavin Coates

Respostas:

85

Além de obedecer o robots.txt, obedeça nofollowe noindexnos <meta>elementos e links:

  • Muitos acreditam que o robots.txt não é a maneira correta de bloquear a indexação e, por causa desse ponto de vista, instruíram muitos proprietários de sites a confiar na <meta name="robots" content="noindex">tag para instruir os rastreadores da Web a não indexar uma página.

  • Se você está tentando fazer um gráfico de conexões entre sites (algo 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 o aval adequado. Portanto, enquanto você pode indexar o site de destino, 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 que lêem os resumos executivos de pessoas que sabem o que estão fazendo. Você vai se deparar com problemas nos quais será impedido de acessar sites por fazer coisas que outros sites consideravam perfeitamente aceitáveis ​​devido a alguma regra que alguém ouviu ou leu em um post no SEOmoz que pode ou não ser interpretado corretamente.

Devido a esse elemento humano, a menos que você seja Google, Microsoft ou Yahoo !, você é considerado malicioso, a menos que se prove o contrário. Você precisa tomar cuidado extra para agir como se não fosse uma ameaça para o proprietário de um site, e agir de acordo com o que você deseja que um rastreador potencialmente malicioso (mas que seja benigno) aja:

  • pare de rastrear um site depois de detectar que está sendo bloqueado: 403 / 401s em páginas que você conhece como trabalho, limitação, tempo limite etc.
  • evite rastreamentos exaustivos em períodos 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/eles, por exemplo.

Mesmo assim, será uma batalha difícil, a menos que você recorra a técnicas de chapéu preto, como a falsificação da UA ou o mascaramento proposital de seus padrões de rastreamento: muitos proprietários de sites, pelos mesmos motivos acima, bloquearão um rastreador desconhecido à vista, em vez de usar a chance de que alguém não esteja tentando "invadir o site". Prepare-se para muitas falhas.

Uma coisa que você pode fazer para combater a imagem negativa que um rastreador desconhecido terá é deixar claro na sua sequência de agente do usuário quem você é:

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

Onde http://example.com/aarobot.htmlexplica 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 está coletando
  • Informações sobre como desativar e excluir todos os dados coletados

Essa última é a chave: uma boa opção de exclusão é como a Money Back Guarantee ™ e obtém uma quantidade razoável de boa vontade. Deve ser humano: uma etapa simples (um endereço de e-mail ou, idealmente, um formulário) e abrangente (não deve haver nenhuma "dica": optar por não participar significa que você para de rastrear sem exceção).


fonte
18
Um +1 enorme para a sugestão de colocar informações claras no User-Agent. Eu tive a tarefa de examinar os logs do servidor da web para descobrir quem estava criando um site grande, e não é divertido tentar descobrir quem está executando todas as aranhas obscuras.
Carson63000
4
É bastante comum colocar o URL no formulário (+http://example.com/aarobot.html). Não sei qual é a finalidade do +sinal aqui, mas já o vi com frequência. O Web-Sniffer faz isso, e muitos outros.
TRiG
Essas são ótimas informações, mas estou confuso em uma coisa: você menciona rel="noindex"como se fosse um <a>atributo, mas a página à qual você vincula a descreve como parte <meta>do contentatributo da tag . São os dois, ou isso foi um erro de digitação na resposta?
Aaronaught 11/07
1
"SEO é mais uma arte do que uma ciência real" - não é verdade. Se você é um programador estatístico, o SEO é menos uma arte e mais uma habilidade de reconhecimento matemático. Os graduados em matemática qualificados em programação ou programadores em matemática estão em alta demanda no setor de criação de perfil de dados da web.
שינתיא אבישגנת
32

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

Semelhante à técnica usada para sites de força bruta sem chamar atenção, se você precisar rastrear um pool de sites grande o suficiente, não rastreie a próxima página no site até ter rastreado a próxima página de todos os outros sites . Bem, os servidores modernos permitirão a reutilização da conexão HTTP ; portanto, convém fazer mais de um para minimizar a sobrecarga, mas a idéia ainda permanece. Não rastreie um site até a exaustão até passar para o próximo . Compartilhe o amor.

Para você, no final do dia, você ainda pode ter rastreado o mesmo número de páginas, mas o uso médio da largura de banda em um único site será muito menor.

Se você quiser evitar ser a aranha da destruição, não existe um método infalível. Se alguém quiser enfiar o feijão no nariz , provavelmente o fará de maneiras que você nunca poderia prever. Dito isto, se você não se importa de perder uma página válida ocasional, tenha uma lista negra de palavras para um link que o impedirá de segui-la. Por exemplo:

  • Excluir
  • Retirar
  • Atualizar
  • Editar
  • Modificar

Não é à prova de idiotas, mas às vezes você simplesmente não pode impedir as pessoas de aprender da maneira mais difícil;)

Dan McGrath
fonte
3
Bons conselhos sobre "compartilhar o amor" - não haviam considerado isso, apesar de, obviamente, parecer óbvio em retrospecto.
Aaronaught 11/07
A sua resposta será quase perfeita se você mencionar robots.txt;)
deadalnix
7
@deadalnix, mas robots.txtjá é mencionado na pergunta, e pode ser assumido.
TRIG
20

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

  • O site é lento? Rastrear mais devagar para não fazer o DDOS. É rápido? Rastrear um pouco mais, então!

  • O site está com erro? Rastreie menos para não estressar um site que já está sob pressão. Use o aumento exponencial dos tempos de repetição, para repetir menos quanto mais tempo o site estiver com erros. Mas lembre-se de tentar mais tarde, eventualmente, para ver o que está faltando devido a, digamos, um erro de uma semana em um caminho de URL específico.

  • Recebendo muitos 404s? (lembre-se, nossas 404 páginas sofisticadas também levam tempo para o servidor!) Evite rastrear mais URLs com esse caminho por enquanto, pois talvez tudo esteja faltando; se file001.html- file005.htmlnão está lá, aposto que dólares em rosquinhas file999.htmltambém não! Ou talvez diminua a porcentagem de tempo que você recupera qualquer coisa nesse caminho.

Eu acho que é aqui que muitos rastreadores ingênuos dão errado, por terem uma estratégia robótica que eles executam da mesma forma, independentemente dos sinais que estão voltando do site de destino.

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

Jeff Atwood
fonte
19

Outros mencionaram alguns dos mantras, mas deixe-me acrescentar 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 "listagem de diretórios" de servidores da web. 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 gzip (compactação em tempo real) sempre que disponível.

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

Limite o tamanho da página. Algumas páginas implementam tarpits para impedir bots de remoção de email. É uma página que carrega na velocidade do caracol e tem terabytes de comprimento.

Não indexe 404 páginas. Os motores que possuem os maiores índices fazem isso e recebem ódio 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

SF.
fonte
Estojos de canto importantes!
M. Dudley
Atualmente, você pode detectar conteúdo duplicado intencionalmente (por exemplo, farms de balanceamento de carga) verificando tags canônicas.
18716 Brian As
4

Vou apenas adicionar uma coisinha.

Direitos autorais e outros problemas legais: eu sei que você escreve que eles são sites públicos; portanto, pode não haver direitos autorais, mas pode haver outros problemas legais no armazenamento dos dados.

Obviamente, isso dependerá dos dados de qual país você está armazenando (e de onde você os armazena). Caso em questão, os problemas com a Lei do Patriota dos EUA versus a Diretiva de Proteção de Dados da UE. Um resumo executivo do problema é que as empresas americanas precisam fornecer seus dados, por exemplo. se solicitado pelo FBI, sem informar os usuários disso, onde a Diretiva de Proteção de Dados declara que os usuários devem ser informados disso. Se http://www.itworld.com/government/179977/eu-upset-microsoft-warning-about-us-access-eu-cloud

Holger
fonte
2
"Eu sei que você escreve que eles são sites públicos, então pode não haver direitos autorais". Todo site na Internet é público e todo site é protegido por direitos autorais, a menos que indique explicitamente o contrário.
Gavin Coates
3

Ligue para o seu webcrawler ou spider, associado ao seu nome. Isso é importante. Os mecanismos de análise e similares procuram aqueles que o associam como uma ... aranha. ;)

O jeito que eu vi isso é através do cabeçalho da solicitação User-Agent

jcolebrand
fonte
Eu pensei que era geralmente um "bot" ou "robô" - eu sei que o Google é o Googlebot.
Aaronaught
Bom ponto. Contanto que possa ser distinguido. Provavelmente há um post sobre SO, que os expõe.
11133 jcolebrand
2
  • Preserve os cookies, quando necessário, para impedir que o site crie sessões desnecessárias.
  • Implemente o comportamento de análise de link, mais próximo do navegador. Nosso site ao vivo relata muitos '404s', devido a solicitações de bot para arquivos ausentes.
Valera Kolupaev
fonte