Module 1 · 1.2
Crawlen: hoe een zoekmachine je site vindt
Module 1: Hoe zoekmachines werken · Leestijd: 11 minuten
Leerdoel: Na deze les kun je beschrijven hoe een crawler nieuwe pagina's ontdekt, welke statuscodes hij tegenkomt en wat die betekenen, en wat een crawler tegenhoudt.
Kernbegrippen: crawler (Googlebot, Bingbot), links volgen, sitemap, HTTP-statuscode (200, 301, 302, 404, 410, 429, 5xx), doorsturing, crawlbudget, JavaScript en renderen, wezen-pagina, robots.txt
Wat een crawler is
Een crawler (ook wel spider of bot) is een programma dat webpagina's ophaalt, net zoals jouw browser dat doet, maar dan automatisch en op enorme schaal. Google heeft Googlebot, Bing heeft Bingbot. Ze vragen een adres op, krijgen de HTML terug, lezen welke links erin staan en zetten die nieuwe adressen op hun lijst om later op te halen.
Google zegt dat Googlebot een site gemiddeld niet vaker dan eens per paar seconden bezoekt, en dat de meeste verzoeken van de smartphone-versie van Googlebot komen. Google bekijkt je site dus vooral zoals een telefoon hem ziet. Daar komt les 4.2 op terug.
Een crawler kan zich ook voordoen als Googlebot: de naam (de user-agent) is makkelijk na te maken. Google raadt aan een verdacht bezoek te controleren met een omgekeerde DNS-opzoeking van het IP-adres. Dat is handig als je in je serverlogboek "Googlebot" ziet die vreemde dingen doet.
Hoe een crawler nieuwe pagina's vindt
Google noemt drie manieren:
- Pagina's die hij al kent opnieuw bezoeken. Daar ziet hij wijzigingen en nieuwe links.
- Links volgen. Een link vanaf een pagina die Google al kent naar een nieuwe pagina is de belangrijkste manier om gevonden te worden. Dat geldt voor links binnen je eigen site (je menu, een link in een tekst) en voor links vanaf andere sites.
- Een lijst die jij aanlevert: de sitemap. Een sitemap is een bestand met de adressen van je pagina's. Je meldt hem aan in Search Console of zet hem in robots.txt (les 3.4). Een sitemap is volgens Google niet verplicht, maar wel handig, vooral voor nieuwe sites met nog weinig links, grote sites en pagina's die diep in de site zitten.
Links moeten echte links zijn
Google kan een link alleen volgen als het een gewoon <a>-element met een href is:
<a href="/bruidsboeketten">Bruidsboeketten</a> <!-- goed -->
<span onclick="ga('/bruidsboeketten')">Bruidsboeketten</span> <!-- geen link voor Google -->Een knop die alleen met JavaScript naar een andere pagina springt, is voor een crawler geen link. Een pagina die nergens vandaan gelinkt wordt, heet een wezen-pagina (orphan page). Die vindt een crawler alleen via de sitemap, en ook bezoekers vinden hem moeilijk. Een nieuwe pagina hoort dus altijd ergens in je menu of in een tekst gelinkt te worden.
JavaScript: eerst ophalen, later uitvoeren
Veel moderne sites bouwen de pagina met JavaScript op in de browser. Google kan dat aan: het voert JavaScript uit met een recente versie van Chromium, de basis van de Chrome-browser. Dat heet renderen. Google beschrijft het als drie fasen voor zulke pagina's: crawlen, renderen en indexeren. Pagina's met status 200 komen in een wachtrij om gerenderd te worden.
Twee gevolgen:
- Wat pas na JavaScript op de pagina komt, ziet Google later dan wat direct in de HTML staat.
- Niet elke crawler voert JavaScript uit. Google zegt dat zelf ook. Tekst, titels en links die direct in de HTML staan, zijn dus voor alle zoekmachines het veiligst. Google noemt HTML die op de server wordt gemaakt "nog steeds een goed idee".
De automatische controles in deze cursus lezen de HTML zoals de server hem stuurt, zonder JavaScript. Wat jij in je browser ziet, kan daarvan afwijken.
Statuscodes: wat de server terugzegt
Bij elke pagina stuurt de server een statuscode mee. Die zie je niet op het scherm, maar een crawler leest hem als eerste:
| Code | Betekenis | Wat Google ermee doet |
|---|---|---|
| 200 | OK, hier is de pagina | Inhoud gaat door naar het indexeren (opname is niet gegarandeerd) |
| 301 / 308 | Blijvend verhuisd naar een ander adres | Sterk signaal dat het nieuwe adres het juiste is |
| 302 / 307 | Tijdelijk ergens anders | Zwak signaal; het oude adres blijft vaak het hoofdadres |
| 404 / 410 | Bestaat niet (meer) | Een eerder opgenomen adres gaat uit de index; Google komt er steeds minder vaak langs |
| 429 | Te veel verzoeken | Google gaat tijdelijk langzamer crawlen |
| 5xx | Fout op de server | Google gaat tijdelijk langzamer crawlen; blijft een adres steeds een serverfout geven, dan valt het uiteindelijk uit de index |
Let op de soft 404: een pagina die "niet gevonden" toont maar status 200 geeft. Voor de crawler lijkt het een echte pagina, voor de bezoeker niet. Search Console meldt zulke pagina's apart. Een verwijderde pagina hoort dus een echte 404 of 410 te geven, of met een 301 door te sturen naar een vervanger.
Een doorstuurketen (http naar https naar www naar de nieuwe pagina) volgt Google wel, tot ongeveer tien stappen, maar elke stap kost tijd. Les 4.1 laat zien hoe je dat in één stap doet.
Wat een crawler tegenhoudt
Google noemt als oorzaken dat een pagina niet gecrawld wordt: problemen met de server, netwerkproblemen, en regels in robots.txt die Googlebot de toegang verbieden. In de praktijk zie je daarnaast:
- een site die nog in "onderhoudsmodus" staat of achter een wachtwoord zit;
- in WordPress het vinkje "Zoekmachines ontmoedigen", dat een noindex zet (dat is stap 2, maar het effect is hetzelfde: niet te vinden);
- een beveiliging of firewall die onbekende bots weigert met 403 of 429;
- een site die alleen via JavaScript-knoppen te navigeren is.
robots.txt krijgt een eigen les (3.3). Voor nu is genoeg: het is een tekstbestand op https://www.example.com/robots.txt dat zegt welke delen van je site een crawler niet mag ophalen.
Crawlbudget: voor de meeste sites geen zorg
Je leest online veel over crawlbudget: hoeveel pagina's Google op je site wil en kan ophalen. Google zegt dat de handleiding daarover bedoeld is voor grote sites, met als ruwe schatting meer dan een miljoen pagina's, of meer dan tienduizend pagina's die dagelijks veranderen. Worden je nieuwe pagina's op de dag van publicatie al opgehaald, dan hoef je je er niet mee bezig te houden. Voor een site als die van Bloemenatelier Lotte met dertig pagina's is het geen onderwerp. Een actuele sitemap en af en toe een blik in het indexeringsrapport zijn genoeg.
In de praktijk: je serverlogboek
In DirectAdmin en vergelijkbare panelen kun je het toegangslog van je site bekijken. Zoek op "Googlebot" of "bingbot" en je ziet welke pagina's ze opvroegen en welke statuscode ze kregen. Zie je daar veel 404's of 5xx-fouten, dan weet je waar je moet beginnen. Bij andere aanbieders vind je de logboeken meestal onder een vergelijkbare naam in het klantpaneel.
Samenvatting
- Een crawler haalt pagina's op en vindt nieuwe adressen via links en via je sitemap.
- Alleen echte
<a href>-links worden gevolgd; een pagina zonder links ernaartoe is een wezen. - Google voert JavaScript uit, maar later; andere crawlers vaak niet. Belangrijke inhoud hoort in de HTML.
- De statuscode bepaalt wat een crawler doet: 200 verwerken, 301 verhuizen, 404/410 verwijderen, 5xx en 429 langzamer crawlen.
- Crawlbudget speelt alleen bij zeer grote of zeer snel veranderende sites.
Quiz
Opdracht
Opdracht A1.2: Wat ziet een crawler op je homepage? Vul het adres van je site in (of www.wikipedia.org als je geen eigen site hebt). Vul daarna in wat je verwacht: de statuscode van de uiteindelijke pagina, het adres waar je na doorsturen uitkomt, en of er een noindex op staat. Het programma haalt de homepage op zoals een crawler, zonder JavaScript, en laat de doorstuurketen zien, de statuscode, het aantal echte links naar je eigen site in de HTML, en of de tekst van de pagina zonder JavaScript leesbaar is.
Verder lezen
De stappen in deze artikelen gelden voor de panelen van WebOké; bij andere aanbieders werkt het vergelijkbaar.
- DirectAdmin handleiding 4.7: Site Omleiden: een domein of pagina doorsturen
- DirectAdmin handleiding 17.2: Siteoverzicht en logboeken: het foutlog en het toegangslog
- Bezoekers verplicht doorsturen naar https
- Google, Hoe HTTP-statuscodes en netwerkfouten Google Zoeken beïnvloeden: https://developers.google.com/search/docs/crawling-indexing/http-network-errors
- Google, Basis van JavaScript-SEO: https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics
- Google, Crawlbudget voor grote sites: https://developers.google.com/crawling/docs/crawl-budget
- Gratis WordPress-cursus 3.2: www, doorsturen en gemengde inhoud
