
Cet article fait suite à l’article sur la préprod : comment faire pour éviter que votre plateforme de développement se retrouve indexée sur Google ou autre moteur de recherche ?
En effet, rien de plus désagréable pour votre client que de trouver son site en cours de construction (donc avec potentiellement du contenu) dans les résultats de Google… alors, me direz-vous, tant qu’on a pas dit à Google d’indexer le site, y a pas trop de chance que ce dernier se retrouve sur le “net”… euh, “Google est ton ami”, mais pas forcément dans ce cas là 🙂
Donc, prenons le taureau par les cornes et attachons nous à “blacklister” en quelque sorte ces bots.
La première chose, est d’indiquer dans toutes vos réponses qu’il ne faut pas indexer la page. Pour cela, il suffit d’ajouter l’instruction ci-dessous dans votre virtual host nginx :
add_header X-Robots-Tag "noindex, nofollow, nosnippet, noarchive";
Mais ok, ça n’est que de l’instruction au bot qui est libre ou pas de le suivre… donc on va être un peu plus parano et virer purement et simplement les bots en leur renvoyant un code HTTP 403.
Pour se faire, toujours dans le virtual host, avant la balise server, on va enregistrer une map listant l’ensemble des user-agents des bots “indésirables” (enfin, sur une préprod) :
map $http_user_agent $limit_bots { default 0; ~*(google|bing|yandex|msnbot) 1; ~*(AltaVista|Googlebot|Slurp|BlackWidow|Bot|ChinaClaw|Custo|DISCo|Download|Demon|eCatch|EirGrabber|EmailSiphon|EmailWolf|SuperHTTP|Surfbot|WebWhacker) 1; ~*(Express|WebPictures|ExtractorPro|EyeNetIE|FlashGet|GetRight|GetWeb!|Go!Zilla|Go-Ahead-Got-It|GrabNet|Grafula|HMView|Go!Zilla|Go-Ahead-Got-It) 1; ~*(rafula|HMView|HTTrack|Stripper|Sucker|Indy|InterGET|Ninja|JetCar|Spider|larbin|LeechFTP|Downloader|tool|Navroad|NearSite|NetAnts|tAkeOut|WWWOFFLE) 1; ~*(GrabNet|NetSpider|Vampire|NetZIP|Octopus|Offline|PageGrabber|Foto|pavuk|pcBrowser|RealDownload|ReGet|SiteSnagger|SmartDownload|SuperBot|WebSpider) 1; ~*(Teleport|VoidEYE|Collector|WebAuto|WebCopier|WebFetch|WebGo|WebLeacher|WebReaper|WebSauger|eXtractor|Quester|WebStripper|WebZIP|Wget|Widow|Zeus) 1; ~*(DnsQueries|Twengabot|htmlparser|libwww|Python|perl|urllib|scan|Curl|email|PycURL|Pyth|PyQ|WebCollector|WebCopy|webcraw) 1; }
Il suffit ensuite d’indiquer dans la location correspondante que si le user-agent matche notre map, de lui bloquer l’accès :
location / { if ($limit_bots = 1) { return 403; } }