Weg met de ongewenste crawlers! Tijd voor een snellere website
Geplaatst op: - Laatste aanpassing:

Misschien komt ook jou dit bekend voor? Door een vloedgolf van aanvragen op je server loopt alles vast en is je website ineens heel traag geworden. Heeft de massa dan eindelijk je website ontdekt? Helaas… het blijken aanvragen van crawlers te zijn welke je website opvragen met enkele honderden verzoeken per seconde. Dit ten kosten van de laadtijd en de ervaring die echte bezoekers met de website hebben.
Begrijp me niet verkeerd… sommige crawlers zoals die van Google zien we graag zodat veranderingen aan onze websites geïndexeerd worden én in zoekmachines verschijnen, maar er bestaan vele soorten crawlers die gewenst en ongewenst je website benaderen. Sommige crawlers misdragen zich en zijn niet bepaald nuttig vanuit de ogen van de website eigenaar die vaak niet doorheeft dat deze crawlers er zijn en de website negatief beïnvloeden.
Het blokkeren van crawlers wordt dus vaak vergeten en hierdoor gaan er server resources verloren wat weer van invloed is op de snelheid van de website. In dit artikel vertellen we je wat crawlers precies zijn, welke goed en slecht zijn en hoe je ze kunt blokkeren.
Inhoudsopgave
Wat zijn crawlers?
Crawlers worden soms ook wel spiders genoemd en zijn bots die het internet afstruinen en webpagina’s bezoeken. Ze doen dit met verschillende doeleinden. Zoekmachines gebruiken crawlers bijvoorbeeld om te bepalen welke pagina’s in de zoekresultaten opgenomen worden – maar er zijn ook crawlers afkomstig van allerlei online tools en verzamelsites. De intenties zijn niet altijd goed – zo kunnen gegevens verzameld worden voor acquisitie of gebruikt worden door de concurrentie.
Daarnaast kun je je afvragen of alle crawlers van zoekmachines per definitie nuttig zijn, want wat hebben de crawlers van Chinese en Russische zoekmachines te zoeken op een Nederlandstalige website?
Voorbeelden van gewenste crawlers
- GoogleBot – de crawler van Google zoekmachine
- BingBot – de crawler van de Bing zoekmachine
- DuckDuckBot – de crawler van de Duck Duck Go zoekmachine
- YandexBot – de crawler van de Yandex zoekmachine*
* Yandex is een populaire Russische zoekmachine en daardoor misschien alleen relevant voor websites met een internationaal publiek.
Voorbeelden van ongewenste crawlers
- MJ12 – de crawler van commerciële link-intelligence database uit de UK
- PetalBot – een agressieve crawler van de Petal zoekmachine
- AhrefsBot – de crawler van een SEO link database voor marketeers
- SEMrushBot – de crawler van een SEO tool
- DotBot – de crawler van een SEO tool
- MauiBot – een agressieve crawler (eigenaar en doel onbekend)
Uiteraard zijn er nog veel meer crawlers maar ik hoop dat de bovenstaande voorbeelden je een idee geven van de verschillende soorten spiders die ook jouw website bezoeken.
Hoe kunnen we crawlers blokkeren?
Veel crawlers zijn te herkennen via de User-agent
string welke met ieder verzoek naar de server wordt meegestuurd. We kunnen dit gebruiken om crawlers te blokkeren. Hieronder lees je op welke manieren dit kan.
Optie 1. met een robots.txt bestand
Met een robots.txt bestand kunnen we crawlers vragen de website (of delen ervan) niet te bezoeken. We benadrukken “vragen” omdat niet alle crawlers naar dit bestand zullen kijken en honoreren. Toch is deze methode wel aan te bevelen omdat veel bekende crawlers hier wel goed mee om gaan.
Een robots tekstbestand moet direct te vinden zijn op het hoofdniveau van de website, dus direct achter de domeinnaam en dan /robots.txt. Vaak doe je dit door het in de root van je website te plaatsen.
Hieronder volgt een voorbeeld van hoe zo’n bestand eruit kan zien:
User-agent: *
Disallow: /wp-admin/
Allow: /wp-admin/admin-ajax.php
User-agent: AhrefsBot
User-agent: Baiduspider
User-agent: Baiduspider-video
User-agent: Baiduspider-image
User-agent: DotBot
User-agent: ichiro
User-agent: MauiBot
User-agent: MJ12bot
User-agent: moget
User-agent: NaverBot
User-agent: PetalBot
User-agent: SEMrushBot
User-agent: SeznamBot
User-agent: sogou spider
User-agent: Yandex
User-agent: Yeti
User-agent: YoudaoBot
Disallow: /
Regel 1 t/m 3
Met deze regels geven we aan dat we liever niet hebben dat welke crawler dan ook naar de pagina’s van de wp-admin kijkt. Het is onnodig om deze te indexeren want ze zijn niet bepaald waardevol voor mensen zonder toegang en we hebben liever ook niet dat ze in zoekmachines verschijnen.
Regel 4 t/m 22
We vragen alle aangegeven crawlers geen enkele pagina te indexeren (en onze website dus volledig over te slaan) dit doen we door de /
op de laatste regel wat betekent onze homepagina en alles wat daarna komt.
Door de regels op de juiste manier te groeperen snappen de crawlers hoe ze het bestand moeten interpreteren. Wil je meer weten over de werking van robots.txt bestanden? Bekijk dan de website robotstxt.org.
Een robots.txt via een SEO plugin
Sommige SEO plugins laten je een robots.txt beheren vanuit de instellingen van de plugin. Dit kan dus handig als je niet weet hoe je zelf bestanden op de server plaatst of dit liever vanuit WordPress beheert. Dit kan bijvoorbeeld met de PRO versie van SEOPress.
Optie 2. met Apache en een .htaccess bestand
Wanneer je server gebruikt maakt van Apache kun je crawlers ook blokkeren met een .htaccess bestand. Dit bestand is vaak in de root van je website te vinden en als het goed is niet rechtstreeks op te vragen vanuit de browser.
Mocht je de permalinks van WordPress hebben aangepast dan is het goed mogelijk dat dit bestand al aanwezig is en er enkele regels in staan. Een .htaccess bestand om crawlers te blokkeren kan er zo uit zien:
RewriteEngine On
RewriteCond% {HTTP_USER_AGENT} ^.*(Ahrefs|Baiduspider|DotBot).*$ [NC,OR]
RewriteCond% {HTTP_USER_AGENT} ^.*(ichiro|Mauibot|MJ12bot|moget|NaverBot).*$ [NC,OR]
RewriteCond% {HTTP_USER_AGENT} ^.*(PetalBot|SEMrushBot|SeznamBot|sogou).*$ [NC,OR]
RewriteCond% {HTTP_USER_AGENT} ^.*(Yandex|Yeti|Youdao).*$ [NC,OR]
RewriteRule .* - [F,L]
Het voordeel van deze methode is dat het ook werkt voor crawlers die niet naar het robots.txt bestand kijken maar het is wel iets ingewikkelder.
Optie 3. met NGINX configuratie
Wanneer je server gebruikt maakt van NGINX kunnen we ook kijken naar de “user-agent” en een bepaalde response vanuit de server sturen wanneer we een crawler herkennen. Wanneer je veel crawlers wilt gaan blokkeren is het handig om dit via een map
te doen. Hieronder zie je uit hoe dit er ongeveer uit zou kunnen zien:
http {
map $http_user_agent $limit_bots {
default 0;
~*(Ahrefs|Baiduspider|DotBot) 1;
~*(ichiro|Mauibot|MJ12bot|moget|NaverBot) 1;
~*(PetalBot|SEMrushBot|SeznamBot|sogou) 1;
~*(Yandex|Yeti|Youdao) 1;
}
}
Binnen een server block kunnen we deze configuratie vervolgens op de volgende manier gebruiken:
server {
location / {
if ($limit_bots = 1) {
return 444;
}
}
}
Houd er rekening mee dat je NGINX na een wijziging altijd moet herstarten.
Een 444 is een “No response” status waarmee we de server vertellen dat dit verzoek niet afgehandeld mag worden en de crawler de website niet te zien krijgt. Net als bij de .htaccess methode is het voordeel dat dit ook werkt voor crawlers die niet naar de robots.txt kijken maar tegelijkertijd ook een ingewikkeldere configuratie.
Tot slot
Als laatste wil ik nog benoemen dat het controleren op user-agent niet het enige middel is, je zou crawlers bijvoorbeeld ook kunnen blokkeren op basis van IP-adres. Beide hebben hun eigen voor- en nadelen; een user-agent kan eenvoudig vervalst worden waardoor deze methode niet altijd even betrouwbaar is en een crawler kan vele IP-adressen hebben of regelmatig van IP-adres veranderen waardoor dit moeilijk bij te houden valt.
Ook zijn er naast de bekende crawlers die we hierboven benoemen zijn er ook een heleboel onbetrouwbare en malafide crawlers welke deze methoden proberen te omzeilen. Op het grote internet is het onmogelijk om met alle crawlers rekening te houden maar toch kun je de informatie uit dit artikel gebruiken om efficiënter om te gaan met de bekende crawlers, server resources te besparen en geen informatie te lekken naar externe SEO partijen.