Tasca #3498
tancatAturar o frenar els robots de Baidu
Descripció
A partir del divendres 12 de juny del 2015, els robots de Baidu (Baiduspider) van tornar a navegar lliurement per tot el DDD sense aturador. En el seu moment, fa alguns anys, ja ho havien fet, i vam trobar la manera de moderar el seu comportament a partir d'una regla del fitxer robots.txt que feia:
User-agent: Baiduspider Disallow: /search
Aquesta regla permetia que Baidu es pogués descarregar els documents (pdfs, jpegs) però no navegués lliurement pel catàleg (Invenio) a base de visitar tots els links del DDD, i per tant, sobresaturar la base de dades i, per tant tot el sistema. Això provoca lentitut del sistema i reinicis del servidor Apache quan sobrepassa el límit de sessions preestablertes.
Internet és ple de missatges d'ajuda d'administradors que s'han trobat amb situacions iguals que la nostra. I des de fa molts anys. Sabem, per tant, que Baidu no fa gaire cas del fitxer robots.txt, malgrat que diu que sí.
Cal trobar una alternativa més dràstica per frenar Baidu.
FJ Actualitzat per Ferran Jorba fa quasi 11 anys
- Estat ha canviat de Creada a Tancada
Després de provar diferents alternatives, he trobat que aquesta sí que funciona. Es tracta d'insertar aquest paràgraf als fitxers de configuració d'Apache (~/invenio/etc/apache/invenio-apache-vhost.conf i ~/invenio/etc/apache/invenio-apache-vhost-ssl.conf):
<Location /search>
SetEnvIfNoCase User-Agent "Baiduspider" bad_bots
Order allow,deny
Allow from all
Deny from env=bad_bots
</Location>
El que fa és aplicar el mateix criteri que havíem fet via el fitxer robots.txt, però per regla d'Apache. Es tracta que quan Apache es troba una petició de cerca (una URL amb /search), mira si el nom del client té Baiduspider. I, si el té, el posa a la llista bad_bots i li barra el pas. Aquesta regla és un refregit de diferents pàgines i receptes que he estat consultant i provant:
- http://searchenginewatch.com/sew/news/2067357/bye-bye-crawler-blocking-parasites
- http://stackoverflow.com/questions/14944780/blocking-bots-by-modifying-htaccess
- http://httpd.apache.org/docs/2.2/mod/core.html#location
He pogut comprovar que funciona amb el wget, simulant ser un robot de Baidu. En primer lloc, baixar-se un document o fitxer normal, funciona sense problemes:
$ wget --user-agent="Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)" "http://ddd.uab.cat/favicon.ico" --2015-06-16 07:41:38-- http://ddd.uab.cat/favicon.ico S'està resolent ddd.uab.cat (ddd.uab.cat)... 158.109.2.236 S'està connectant a ddd.uab.cat (ddd.uab.cat)|158.109.2.236|:80...connectat. HTTP: s'ha enviat la petició, s'està esperant una resposta...200 OK Mida: 2962 (2,9K) [image/x-icon] S'està desant a: «favicon.ico» 100%[========================================================================================>] 2.962 --.-K/s en 0,001s 2015-06-16 07:41:38 (2,62 MB/s) - s'ha desat «favicon.ico» [2962/2962]
En canvi, una cerca ja no:
$ wget --user-agent="Mozilla/5.0 (compatible; Baiduspider/2.0; +http://www.baidu.com/search/spider.html)" "http://ddd.uab.cat/search?f=author&p=Kant" --2015-06-16 07:42:35-- http://ddd.uab.cat/search?f=author&p=Kant S'està resolent ddd.uab.cat (ddd.uab.cat)... 158.109.2.236 S'està connectant a ddd.uab.cat (ddd.uab.cat)|158.109.2.236|:80...connectat. HTTP: s'ha enviat la petició, s'està esperant una resposta...403 Forbidden 2015-06-16 07:42:35 ERROR: 403 Forbidden.
Si trec o canvio Baiduspider per una altra cosa, torna a funcionar:
wget --user-agent="Mozilla/5.0 (compatible; BaiduXspider/2.0; +http://www.baidu.com/search/spider.html)" "http://ddd.uab.cat/search?f=author&p=Kant" --2015-06-16 07:43:25-- http://ddd.uab.cat/search?f=author&p=Kant S'està resolent ddd.uab.cat (ddd.uab.cat)... 158.109.2.236 S'està connectant a ddd.uab.cat (ddd.uab.cat)|158.109.2.236|:80...connectat. HTTP: s'ha enviat la petició, s'està esperant una resposta...200 OK Mida: no especificada [text/html] S'està desant a: «search»
QED.