Blog de David Masclet - Mot-clé - mod_evasive2020-02-11T15:05:04+00:00urn:md5:bd7c47a89c3b735a7167e4bd4cde9285DotclearConfigurer et utiliser Google bot comme outil de testsurn:md5:8409ad81ee023e6044474926d8c764c02010-01-18T14:16:00+01:002015-06-07T11:24:20+02:00MD3804-GANDIGoogleBotsmod_bandwithmod_evasiveTests<p>Lorsque l'on parle de Google bot, on pense souvent à "référencement", mais
il existe une autre utilisation : les tests. Je ne parle pas de tests
fonctionnels ou unitaires mais de tests pour améliorer la qualité de votre
site, comme les tests de liens morts, de pages indisponibles, d'erreurs HTTP
etc.</p>
<p>Il y a quelques semaines, je postais plusieurs billets sur comment gérer un
serveur de download :</p>
<ul>
<li><a href="https://davidmasclet.gisgraphy.com/post/2009/11/12/Limiter-la-bande-passante-d-un-serveur-de-download">Limiter
la bande passante d'un serveur de download</a></li>
<li><a href="https://davidmasclet.gisgraphy.com/post/2009/11/05/Limiter-l-acces-%C3%A0-un-site-/-service-%C3%A0-un-certain-nombre-de-requ%C3%AAtes">
Limiter l'accès à un site / service pour un certain nombre de requêtes par
IP</a></li>
</ul>
<p>Mais cette configuration peut poser des problèmes pour les bots des moteurs
de recherches. C'est pourquoi je voudrais expliquer comment mieux configurer
les serveurs pour faciliter le travail des bots.</p> <h3>Utiliser les bots comme outils de tests</h3>
<p>Le rôle premier d'un bot est bien sur d'indexer votre site, mais il en
existe un autre qui consiste à l'utiliser pour tester et améliorer vos
pages :</p>
<p>La procédure est la suivante :</p>
<ul>
<li>Vous faites une sitemap avec toutes les pages de votre site. Ayant
plusieurs millions de pages, j'ai préféré, pour ma part, faire un <a href="http://code.google.com/p/gisgraphy/source/browse/trunk/gisgraphy/src/main/python/sitemap_generator.py" hreflang="en">générateur de sitemaps personnel</a> en Python. Il permet de
générer plusieurs fichiers sitemaps (la taille et le nombre d'URLs par fichier
étant limités) et un fichier sitemap d'index contenant toutes les URLs des
fichiers sitemaps générés.</li>
<li>Puis vous soumettez à Google le fichier d'index.</li>
</ul>
<p>Rien ne vous empêche de soumettre des pages dont vous voulez qu'elles
génèrent une erreur. exemple : http://monsite.com/private/ qui est censé
générer une erreur 403.</p>
<p>Vous pouvez ainsi voir des informations sur le passage de Google bot, comme
le nombre de kilo-octets téléchargés, le temps de réponse moyen, et le nombre
de pages explorées par jour, sur cette <a href="https://www.google.com/webmasters/tools/crawl-stats?hl=fr" hreflang="fr">page</a> et consulter les pages en erreurs (timeout, erreur HTTP, pages
inaccessible, pages contenant des liens morts, etc), sur cette <a href="https://www.google.com/webmasters/tools/crawl-errors?hl=fr&siteUrl=http%3A%2F%2Fservices.gisgraphy.com%2F" hreflang="en">page</a>. Merci Google :)</p>
<h3>Autoriser les bots à indexer votre site</h3>
<p>Lors de mon billet sur <a href="https://davidmasclet.gisgraphy.com/post/2009/11/05/Limiter-l-acces-%C3%A0-un-site-/-service-%C3%A0-un-certain-nombre-de-requ%C3%AAtes">
mod_evasive</a>, j'évoquais le moyen de limiter un site à un nombre de requêtes
défini. Il faut toutefois préciser que mod_evasive ne peut (à ma connaissance)
pas ce configurer par vhost : c'est donc tous les vhosts de votre Apache
qui seront limités. Si comme pour <a href="http://www.gisgraphy.com" hreflang="en">Gisgraphy</a>, vous disposez d'un <a href="http://download.gisgraphy.com" hreflang="en">vhost</a> pour le download et d'un <a href="http://www.gisgraphy.com/" hreflang="en">autre</a> pour le site web, et que
vous limitez le nombre de requêtes du serveur de download, vous limitez le
nombre de requêtes du site web également.</p>
<p>Si vous avez créé un fichier <a href="http://www.google.com/support/webmasters/bin/topic.py?topic=8476" hreflang="fr">sitemap</a> afin de mieux référencer votre site, se pose alors le problème
des bots : si vous disposez de beaucoup d'URLs à indexer (9 millions pour
Gisgraphy), lors du passage d'un bot, votre site peux détecter une attaque et
renvoyer une erreur HTTP 403.</p>
<p>Plusieurs solutions sont possibles :</p>
<ul>
<li><a href="https://www.google.com/webmasters/tools/settings?hl=fr" hreflang="fr">Modifier la vitesse d'exploration</a> dans la configuration des outils
pour webmasters, afin de limiter le nombre de pages indexées par jour.</li>
<li>Installer deux serveurs Apache : Si vous ne disposez que d'une seule
machine, il vous faut mettre le serveur de download sur un port particulier, ou
dans le cas contraire, avoir deux serveurs séparés.</li>
<li>Ajouter la liste des adresses IP des bots à la White liste de
mod_evasive :</li>
</ul>
<pre>
DOSWhiteList 127.0.0.1
DOSWhiteList 66.249.64.*
DOSWhiteList 66.249.65.*
DOSWhiteList 66.249.66.*
DOSWhiteList 66.249.71.*
</pre>
<p>La liste des IP ci dessus n'est donnée qu'a titre d'exemple, car la liste
des IP des bots change tout le temps. Vous pouvez utiliser * pour remplacer
jusqu'a 3 octets. (Sinon essayez avec un hostname comme 'googlebot.com', mais
je n'ai pas testé)</p>
<h3>Ajouter un robots.txt</h3>
<p>Si vous avez limité le nombre de requêtes simultanées avec mod_bandwith,
vous ne voulez peut être pas qu'un bot vous prenne un téléchargement au
détriment d'un utilisateur ou que votre bande passante soit diminuée. Il vous
faut alors ajouter un fichier robots.txt :</p>
<pre>
User-agent: *
Disallow: /
</pre>
<p>En faisant cela, vous ne permettez pas aux bots de télécharger les fichiers
et de les indexer. Dans mon cas il s'agit de fichiers ZIP ou TAR et leurs
indexations n'ont pas d'importance pour moi, mais il peut en être autrement
pour d'autres types de fichiers, car Google n'indexe pas que du HTML, il indexe
aussi, les PDF, document Word, Excel, texte, images, etc. Dans ce cas vous
devez mettre des règles de gestion plus fines et ne permettre l'indexation, que
de certains fichiers. Notez que dans l'exemple ci dessus, '*' est une valeur
particulière et que ni <code>Disallow</code> ni <code>User-agent</code> ne
supporte les expressions régulières. Pour vous aider, un outil est disponible
dans les <a href="https://www.google.com/webmasters/tools" hreflang="fr">outils
pour webmasters</a> afin de générer un fichier robots.txt et un <a href="https://www.google.com/webmasters/tools/robots-analysis-ac?hl=fr" hreflang="fr">autre</a> pour le tester</p>
<h3>Voir ce que Google bot voit</h3>
<p>Si vous avez des règles d'affichage de votre site un peu complexes, comme
une différenciation de l'affichage selon le User-Agent, ou que vous
géolocalisez d'après l'adresse IP, il peut être intéressant de savoir comment
Google bot voit votre site. Il existe un <a href="http://googlewebmastercentral.blogspot.com/2009/10/fetch-as-googlebot-and-malware-details.html" hreflang="en">outil</a> qui se situe dans la console des <a href="https://www.google.com/webmasters/tools" hreflang="fr">outils pour
webmasters</a>. Il est actuellement sous la rubrique labs, car en test.</p>
<p>Je déconseille fortement d'utiliser cette outil pour faire un rendu
particulier afin de tromper Google, car c'est le meilleur moyen de se faire
exclure du moteur de recherche.</p>
<p>je conclurai par dire qu'utiliser Google bot pour tester votre site n'est
pas illégal du tout, bien au contraire, les outils mis à votre disposition sont
justement là pour vous aider à améliorer la qualité de votre site.</p>