Botverkeer beheersen

Botverkeer beheersen

Botverkeer beheersen

Met de ontwikkelingen in kunstmatige intelligentie (AI), zien wij steeds vaker dat verkeer op websites van AI-aangestuurde bots afkomstig is.

Achter de schermen zijn wij actief bezig met het voorkomen van niet-legitiem verkeer van dergelijke bots, maar ook legitieme bots kunnen soms een verhoogde serverbelasting veroorzaken, omdat zij zaken scrapen binnen de webapplicatie wat in de backend vrij intensief kan zijn.

Denk bijvoorbeeld aan het scrapen op verschillende webshop filters of categorieën, waar vaak database transacties voor worden uitgevoerd in de backend om de juiste producten te tonen. Als een scraper meerdere malen achter elkaar op filter URL’s scrapet, kunnen de opgestapelde database transacties de serverbelasting verhogen, waardoor klanten een tragere website ervaren.


Binnen je eigen webapplicatie zijn er bepaalde mogelijkheden om de activiteit van webscrapers, inclusief AI-gestuurde varianten, te beheersen. In dit artikel vind je een aantal voorbeelden die je binnen je webapplicatie zou kunnen implementeren.

Robots.txt voor scraperbeheer

Het ‘robots.txt’-bestand is een fundamenteel hulpmiddel om instructies te geven aan webcrawlers en -scrapers. Hoewel het geen absolute blokkade is (malafide scrapers kunnen dit negeren), wordt het door de meeste legitieme bots, waaronder AI-scrapers, gerespecteerd.

Crawlvertragingen instellen (Crawl-delay)

Je kunt in je ‘robots.txt’ een crawlvertraging opgeven om te voorkomen dat scrapers je server overbelasten. Dit vertelt de bot om een bepaalde tijd te wachten tussen opeenvolgende verzoeken.


Voorbeeld:


User-agent: *

Crawl-delay: 10


Dit voorbeeld instrueert alle bots om 10 seconden te wachten tussen elke paginavraag. Pas de ‘Crawl-delay’ waarde aan op basis van de capaciteit van je server en de gewenste frequentie van bot-verzoeken.

Specifieke paden uitsluiten

Je kunt bepaalde delen van je website die je niet gescrapet wilt hebben, uitsluiten.


Voorbeeld:


User-agent: *

Disallow: /admin/

Disallow: /zoekresultaten/

Disallow: /tijdelijke_pagina/


Dit voorkomt dat bots de gespecificeerde mappen bezoeken.

Sommige CMS systemen hebben de mogelijkheid om een dynamisch robots.txt bestand te serveren. Hierbij kun je gemakkelijk ‘on-the-fly’ aanpassingen maken, en het CMS systeem geeft je mogelijk ook aanbevelingen die je website ten goede komen.

Canonical URL's

Een veelvoorkomend probleem bij webshops is het scrapen van pagina's die gegenereerd worden door filters. Dit kan leiden tot dubbele inhoud en onnodige belasting. Door canonieke URL's correct in te stellen, geef je zoekmachines en slimme scrapers aan welke de "voorkeur pagina" is.


Sommige CMS systemen hebben een ingebouwde mogelijkheid, of beschikbare plug-ins, om canonical URL’s te definiëren in de HTML code van de filter pagina’s, of om een sitemap te genereren die de canonical URL’s aangeeft voor de filter pagina’s. Als deze niet beschikbaar zijn, kunnen canonical URL’s ook op de volgende wijzen worden ingesteld.


Canonical URL's in de HTML code

Een methode is om de canonical URL te definiëren in de HTML code van de desbetreffende pagina’s. Voeg de volgende regel toe aan de ‘<head>’ sectie van je filter pagina's, verwijzend naar de ongefilterde versie of de meest representatieve URL. In dit voorbeeld gaat het dan om de HTML code van de pagina “https://www.jouwdomein.nl/productenoverzicht/?filter=merkX”: 


<link rel="canonical" href="https://www.jouwdomein.nl/productenoverzicht/" />


In dit voorbeeld geef je aan dat de gefilterde URL “https://www.jouwdomein.nl/productenoverzicht/?filter=merkX” feitelijk dezelfde inhoud vertegenwoordigt als “https://www.jouwdomein.nl/productenoverzicht/”, en dat laatstgenoemde de voorkeur heeft voor indexering en scraping. Dit helpt zoekmachines en bots te begrijpen welke versie van de pagina de "originele" is, en vermindert de belasting op je server door onnodige scraping van dubbele content.

Canonical URL's in de sitemap

Als je CMS systeem geen mogelijkheid biedt om de HTML code direct aan te passen, kun je canonieke URL's ook definiëren in de sitemap van je website. Dit is vooral nuttig voor grotere websites met veel pagina's of wanneer directe HTML-aanpassing niet haalbaar is.


Hoe het werkt:
In je 'sitemap.xml' bestand kun je voor elke URL een '<loc>' tag opnemen die de primaire URL van de pagina aangeeft. Daarnaast kun je een '<xhtml:link>' tag toevoegen met 'rel="canonical"' om de canonieke versie van die pagina te specificeren.


Voorbeeld:


<url>

  <loc>https://www.jouwdomein.nl/productenoverzicht/?filter=merkX</loc>

  <xhtml:link rel="canonical" href="https://www.jouwdomein.nl/productenoverzicht/" />

</url>


Dit kun je voor alle filter pagina’s instellen binnen de sitemap. Gezien er vrij veel filters aanwezig kunnen zijn op een webshop, kan dit arbeidsintensief zijn. Er zijn tools beschikbaar om sitemappen te genereren, wat veel handwerk kan schelen. Op de volgende pagina van Google vind je verschillende suggesties voor dergelijke tools.

Noindex-tags gebruiken

Voor pagina's die je absoluut niet geïndexeerd wilt hebben door zoekmachines en die je minder interessant wilt maken voor scrapers, kun je de 'noindex'-meta-tag gebruiken.


<meta name="robots" content="noindex, nofollow" />


Plaats deze tag in de '<head>' sectie van de betreffende pagina. Dit kan nuttig zijn voor interne zoekresultatenpagina's, tijdelijke promotiepagina's of pagina's die alleen voor specifieke gebruikers zijn. Als er binnen je CMS systeem geen mogelijkheden zijn om HTML code aan te passen, zijn er wellicht ingebouwde functies of beschikbare plug-ins om deze tags in te stellen op gewenste pagina’s.

Dynamische content en CAPTCHA's

Voor geavanceerdere controle kun je overwegen om:


  • Content dynamisch te laden: Door content te genereren via JavaScript na de initiële pagina-load, kan het voor eenvoudige scrapers lastiger zijn om alle informatie te verkrijgen.

  • CAPTCHA's te implementeren: Bij verdachte activiteit (bijvoorbeeld een te hoog aantal verzoeken vanuit één IP-adres in korte tijd) kun je een CAPTCHA-uitdaging tonen. Dit kan effectief zijn tegen malafide bots.

Samenvatting van acties

  • 'robots.txt' aanpassen: Stel 'Crawl-delay' in en sluit ongewenste paden uit.

  • Canonieke URL's implementeren: Voor filter pagina's en andere variaties om dubbele content en serverbelasting te voorkomen.

  • 'noindex'-tags gebruiken: Voor pagina's die je niet geïndexeerd of gescrapet wilt hebben.

  • Overweeg dynamische content en CAPTCHA's: Voor geavanceerdere bescherming tegen bots.


Door deze methoden te implementeren binnen je webapplicatie, kun je de activiteit van webscrapers beter beheren en de prestaties van je website optimaliseren.