Como bloquear aranhas baidu

15

A maioria das minhas visitas são de aranhas baidu. Eu não acho que isso ajuda os mecanismos de pesquisa, então estou pensando em como bloqueá-los. Isso poderia ser feito via iptables? Estou usando o nginx como meu servidor da web.

Zhianc
fonte
2
por que não deveria? Eu não quero tráfego chinês.
Zhianc 9/07/12
6
Não estou dizendo que você não deveria, estou perguntando por que se preocupar. Eles estão machucando você de alguma forma? Não é mais fácil simplesmente ignorar? "Não querer tráfego chinês" não é realmente uma resposta aqui, apenas uma xenofobia limítrofe. E bloquear um mecanismo de pesquisa não é quase a mesma coisa que bloquear os chineses, então você nem está realmente fazendo sentido. Pareceu-me que você poderia estar procurando uma solução com base em um problema defeituoso. Mas aparentemente você quer arbitrariamente bloquear alguma aranha, então vá em frente, eu acho.
Su
7
@Su 'Descobri que a aranha baidu rastejava de forma extremamente agressiva no meu site, causando atrasos por tráfego legítimo. Além disso, também descobri que a aranha baidu não obedece a robots.txtregras.
starbeamrainbowlabs
2
Recebo cerca de 1-2 acertos por segundo de supostas aranhas do Baidu. Cada ocorrência gera um novo arquivo de sessão no meu servidor. Eu tenho um script para remover esses arquivos de sessão, mas essas aranhas também sobrecarregam meu servidor MySQL. Eu definitivamente quero bloqueá-los.
precisa saber é o seguinte
2
Pode confirmar que o baiduspider ou algo que se apresenta como baiduspider rastreia sites de forma antiética e ignora as diretivas robots.txt.
JMC

Respostas:

8

No seu robots.txt, adicione

#Baiduspider
User-agent: Baiduspider
Disallow: /

#Yandex
User-agent: Yandex
Disallow: /
Anagio
fonte
5
E se eles não respeitarem o robots.txt?
Zhianc 9/07/12
5
Por acaso, sei que os acessos "Baiduspider / 2.0" a partir de endereços IP chineses não obedecem ao robots.txt no meu site. Além disso, eles geralmente usam acessos coordenados (alguns minutos separados) do mesmo bloco de endereço IP que não usa o ID do agente do usuário "Baiduspider".
mgkrebbs
Yandex obedece ao robots.txt Eu os tranquei até percebermos que boa parte de nossos negócios vem da Rússia e tivemos que remover o bloco. Baidu, você tem que verificar os netblocks. Nem todos os UA anunciados pelo Baidu são na verdade Baidu, portanto, você precisa fazer um bloco robots.txt para o tráfego legítimo do Baidu e, em seguida, executar um bloco de string do UA no seu .htaccess pelo que resta e depois desperdiçar sua vida fazendo bloqueio por identificação e negação de bloco por. o resto que contorna o bloco de string do UA. É tanto trabalho quanto melhorar o servidor para receber o tráfego.
Fiasco Labs
2
Eu tenho User-agent: *e os acessos ao baiduspider continuam sendo feitos.
Reinierpost
3
O Yandex é um mecanismo de pesquisa diferente para o mercado russo; portanto, incluí-lo aqui quando a pergunta não perguntar sobre isso e sem escrever nada sobre isso é um tanto irresponsável.
Coletor
7

Acabei de bloquear com êxito o mecanismo de pesquisa chinês Baiduspiderde acessar qualquer conteúdo no meu site. Tomei a decisão de fazê-lo devido aos seguintes motivos.

Razões para decidir bloquear

  1. Aproximadamente cada 20ª solicitação para o meu servidor era de um bot do Baidu. Esse é um comportamento não educado. O Baidubot é responsável por 5% do uso da largura de banda dos meus sites.
  2. Esforço-me muito para manter os recursos no meu site pequenos e alavancar a tecnologia, como o cache do navegador, para obter pequenas vitórias em velocidade e largura de banda. É lógico considerar liberar esses 5% bloqueando o Baidubot.
  3. A possibilidade de perder algum tráfego chinês é um risco aceitável para os negócios, pois o conteúdo do site é geograficamente específico para o Reino Unido, não há versão em chinês e a receita é gerada pela publicidade direcionada ao mercado do Reino Unido.

Portanto, espero que Su 'e outras pessoas preocupadas com a Xenofobia entendam que essa decisão é uma resposta fria a um número não solicitado de solicitações.

Método

O Baiduspider acessa meu servidor usando muitos endereços IP diferentes, mas esses endereços se enquadram em determinados intervalos. Portanto, meu arquivo .htaccess agora contém as seguintes linhas:

order allow,deny 
allow from all
# Block access to Baiduspider 
deny from 180.76.5.0/24 180.76.6.0/24 123.125.71.0/24 220.181.108.0/24 

A linha inferior basicamente descreve 4 intervalos de IP nos quais eu sei que o Baiduspider e SOMENTE o Baiduspider acessam meu servidor. Cada um dos 4 intervalos é de 256 endereços consecutivos (total de 1024). Observe que a sintaxe para os intervalos de IP na deny from...linha pode ser muito confusa se você não tiver lido os intervalos de CIDR. Apenas entenda que isso 0/24significa que um intervalo de 256 tamanhos começando em 0 180.76.5.0/24significa realmente todos os endereços IP entre 180.76.5.0e 180.76.5.255. Sim, não é particularmente óbvio! Mas se você quiser saber o porquê ou apenas se sentir confuso, acesse http://www.mediawiki.org/wiki/Help:Range_blocks

Sumário

A internet deve ser livre, aberta e justa. Mas isso significa que organizações como o Baidu aprendem a obedecer ao Robots.txt e são menos gananciosas com a regularidade de seus rastreamentos. Minha solução envolve mexer com configurações muito poderosas; portanto, antes de mexer no arquivo .htaccess, faça backup do original, pronto para reverter se você derrubar o servidor em um incêndio de glória. Prossiga por sua conta e risco.

Martin Joiner
fonte
seus blocos de endereços IP podem mudar, por isso precisa de tempo de manutenção em tempos
ASGs
5

Você pode usar a seguinte diretiva robots.txtpara impedir o rastreamento do seu site.

# robots.txt
User-agent: Baiduspider
Disallow: /

No entanto, os rastreadores podem decidir ignorar o conteúdo do seu robots.txt. Além disso, o arquivo pode ser armazenado em cache pelos mecanismos de pesquisa e leva tempo para que as alterações sejam refletidas.

A abordagem mais eficaz é usar os recursos do servidor. Adicione a seguinte regra ao seu nginx.confarquivo para bloquear o Baidu no nível do servidor.

if ($http_user_agent ~* ^Baiduspider) {
  return 403;
}

Lembre-se de reiniciar ou recarregar o Nginx para aplicar as alterações.

Simone Carletti
fonte
3

Acabamos de decidir bloquear o Baidu, pois a quantidade de tráfego que estava nos dando era muito insignificante para a verificação agressiva. Além disso, agora eles executam um agente que se faz passar por um navegador e inicia o código JavaScript (como o Google Analytics) e estragam nossas estatísticas.

A boa versão está atualizando seu robots.txt com os seguintes

User-agent: Baiduspider
Disallow: /
User-agent: Baiduspider-video
Disallow: /
User-agent: Baiduspider-image
Disallow: /

Mas, considerando o que os outros escreveram aqui e eles usando um agente de usuário que oculta sua presença, eu bloquearia completamente seus endereços IP. A seguir, é como é feito no nginx

# Baidu crawlers
deny 123.125.71.0/24;
deny 180.76.5.0/24;
deny 180.76.15.0/24;
deny 220.181.108.0/24;
Colecionador
fonte
2

Solução Wordpress (não é a melhor, mas ajuda)

Mesmo problema com o Biadu spider, tão agressivo que minha caixa ficou acima de 35 no meu console usando top. Obviamente, mesmo um computador veloz não pode lidar com solicitações externas efetivamente executadas em 35 ....

Rastreei o número de IPs (daquele prédio da Universidade ????) em várias centenas, principalmente com dois useragents)

Consequência direta? Como tenho um servidor em nuvem, tive que atualizar o mesmo para uma memória mais alta para permitir uma resposta decente.

Resposta anterior:

#Baiduspider
User-agent: Baiduspider
Disallow: /

O Baidu parece totalmente incapaz de respeitar a indicação robot.txt.

O que eu fiz:

Instalei o plugin WP-Ban para Wordpress (gratuito) e bani o seguinte:

AGENTES DO USUÁRIO:

  • Baiduspider+(+http://www.baidu.com/search/spider.htm)

  • Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)

Além disso, usando o Wp Super Cache, refiro a página de erro relativa a uma página estática, assim toda a instalação do wordpress não faz / ou pelo menos apenas os usuários banidos verificam a tabela de dados Mysql.

(Esta é uma blablabla padrão do Wordpress, para que todos possam instalar um plug-in do Wordpress possam fazê-lo, pois não é necessário nenhum acesso de codificação ou ftp para este procedimento)

Concordo com todos: a Internet é gratuita, banindo quem ou o que for absolutamente a última coisa que alguém deve fazer, mas hoje o Baidoo me custa US $ 40 a mais por mês, apenas para criar um site escrito em português e tenho algumas dúvidas se houver muitos chineses e visitantes capazes de ler e entender esse idioma.

Claudio Klemp
fonte
1

Você pode bloquear pelo endereço IP usando o ngx_http_access_modulede nginx. Para bloquear um único IP, você pode adicionar uma linha ao arquivo conf como

deny 12.34.567.1;

Para bloquear um intervalo, use a notação CIDR , como 12.34.567.1/24no bloco de sub-rede de 24 bits (de 256 endereços IP), que inclui o endereço IP 12.34.567.1. Para mais detalhes, consulte, por exemplo, esta página .

mgkrebbs
fonte
1

Use .htaccess com

RewriteEngine On
RewriteCond %{HTTP_USER_AGENT} ^.*MJ12bot [NC,OR]
RewriteCond %{HTTP_USER_AGENT} ^.*Baidu [NC]
RewriteRule .*  - [L,F]

O "RewriteEngine On" permite que as seguintes linhas sejam analisadas corretamente. O HTTP_USER_AGENT é a linha em que as aranhas estão se identificando. A condição é verdadeira se a linha contiver "MJ12bot" ou "Baidu". NC significa "não diferencia maiúsculas de minúsculas" e você pode encadear condições com OU. A última linha não deve conter "OU" ou a regra não funciona.

O Baidu é particularmente desagradável porque tenta ler as entradas do Wordpress ("fckeditor", "wp-content"), pelas quais não há absolutamente nenhuma razão. O MJ12bot também é um dos maus bichos.

A regra de regravação significa bloquear a aranha com 403 Proibido ([F]) para acessar todos os arquivos (. * É uma expressão regular de qualquer arquivo) e interromper a avaliação ([L]) do htaccess.

Thorsten S.
fonte
11
A Fbandeira implica L, então você não precisa incluir explicitamente a Lbandeira aqui. Além disso, um padrão como ^.*Baidué o mesmo que simplesmente Baidu.
precisa saber é o seguinte