htaccess : Empécher l'aspiration
ou comment exclure l'accés à votre site par certains 'user_agent' et 'referer' !
Pour cela, on utilise le module mod_rewrite d'Apache :
il permet de réécrire une URL entrante en fonction de conditions exprimées dans le fichier htaccess.
Si ce module n'a pas été installé sur le serveur, voir une alternative.
Cette méthode ne permet pas d'éviter les logiciels qui se font passer pour Mozilla par exemple.
Ne mettez pas les moteurs de recherche sérieux, c'est-à-dire ceux qui viennent sur votre site pour vous référencer et non pas vous 'pomper' des adresses mails ou autres.
Vous pouvez pister les robots en cliquant
Quelqu'un a fait le travail de mise à jour à ma place. ⇒ lien.
( Examinez surtout les légendes R et S )
Allez voir ce site qui signale les dernières attaques et les parades éventuelles : web-robot-abuse
Pour ceux qui veulent des explications détaillées, voir botsvsbrowsers qui met en ligne une base de données constamment actualisée sur les Bots et les User Agent.
De même une liste des User Agents bannis.
Un utilitaire sous forme d'un script php pour refouler les 'spambots' : zbblock.
Voici le code à placer dans le fichier htaccess (La liste est non-exhaustive : vous pouvez en rajouter)Attention, la moindre erreur de syntaxe peut bloquer le serveur !
NaverBot a été ajouté en bloquant une gamme d'IP utilisées, car ce spider évite robots.txt
Si vous utilisez les flux RSS, enlevez la ligne qui contient fetch.
Modifiez la dernière ligne en indiquant l'URL de votre site
.
Cette ligne signifie : Si l'URL n'est PAS de la forme indiquée, retourne erreur 403.
Le premier RewriteRule renvoie une simple page HTTP 403 Forbidden.
Vous pouvez rediriger vers votre propre page en remplaçant
RewriteRule ^.* - [F] par RewriteRule !^403\.htm$ - [F]
sans oublier bien sûr de mettre au tout début du fichier ErrorDocument 403 /403.htm
La condition sur iaie.org sert à bloquer les gros rusés du Sud-Est asiatique qui se servent de ce site comme 'Referer'.
Attention :
→ une variable est accessible par %{nom_de_variable}
→ Pas de [NC,OR] à la fin de la ligne qui précède RewriteRule sinon le serveur est bloqué ( erreur 500)
→ il doit y avoir au moins un espace avant [NC,OR]
→ \. pour le caractère spécial 'point'.
→ Les espaces dans les expressions sont toujours précédés par \
→ ^ au début signifie 'commençant par' ; sinon, toute URL contenant l'expression sera concernée.
→ $ à la fin signifie se terminant par ( ex : machin$ )
→ - signifie 'Ne fait rien'.
→ .* signifie \"d'autres caractères\"
Si çà ne fonctionne pas, assurez-vous qu'avant RewriteEngine, l'instruction suivante soit placée :
Options +FollowSymLinks
Si çà ne marche toujours pas, c'est que vous avez AllowOverride None au lieu de AllowOverride All
( None interdit l'emploi des fichiers htaccess ) sinon allez dans votre table des Logs pour voir d'où provient l'erreur.
La cerise sur le gateau : si un site vous envoie du 'spam' continuellement, alors faites vous plaisir, redirigez le tout chez lui.
Rien n'est plus marrant que de voir les 'spammers' s'envoyer mutuellement du 'spam' !
Remplacez la ligne RewriteRule par RewriteRule ^.*$ http://www.site-qui-vous-spam-toujours.com [L,R][/1]
Et pour conclure, l'idéal serait de mettre le tout dans le httpd.conf du serveur car un fichier htaccess est lu à chaque fois que le site est visité par quelqu'un, tandis que httpd.conf est lu une seule fois.
Voir aussi la rubrique Bloquer Tor
Il existe un type de codage équivalent de ce fichier htaccess.
Par exemple :
SetEnvIfNoCase User-Agent ^$ bad_bot
SetEnvIfNoCase User-Agent .*almaden.* bad_bot
...
<Files *>
Order Allow,Deny
Allow from all
Deny from env=bad_bot
</Files>