Modul 1 · 1.2
Crawling: sådan finder en søgemaskine dit website
Modul 1: Sådan fungerer søgemaskiner · Læsetid: 11 minutter
Læringsmål: Efter denne lektion kan du beskrive, hvordan en crawler opdager nye sider, hvilke statuskoder den møder, og hvad de betyder, og hvad der stopper en crawler.
Nøglebegreber: crawler (Googlebot, Bingbot), følge links, sitemap, HTTP-statuskode (200, 301, 302, 404, 410, 429, 5xx), viderestilling, crawlbudget, JavaScript og rendering, forældreløs side, robots.txt
Hvad en crawler er
En crawler (også kaldet spider eller bot) er et program, der henter websider, ligesom din browser gør, bare automatisk og i enorm skala. Google har Googlebot, Bing har Bingbot. De beder om en adresse, får HTML'en tilbage, læser, hvilke links der står i den, og sætter de nye adresser på deres liste, så de kan hentes senere.
Google oplyser, at Googlebot i gennemsnit ikke besøger et website oftere end én gang hvert par sekunder, og at de fleste forespørgsler kommer fra smartphone-versionen af Googlebot. Google ser altså primært dit website, som en telefon ser det. Det vender vi tilbage til i lektion 4.2.
En crawler kan også udgive sig for at være Googlebot: navnet (user-agent) er nemt at efterligne. Google anbefaler, at du kontrollerer et mistænkeligt besøg med et omvendt DNS-opslag af IP-adressen. Det er nyttigt, hvis du i din serverlog ser "Googlebot" gøre mærkelige ting.
Sådan finder en crawler nye sider
Google nævner tre måder:
- Den besøger sider, den allerede kender, igen. Der ser den ændringer og nye links.
- Den følger links. Et link fra en side, Google allerede kender, til en ny side er den vigtigste måde at blive fundet på. Det gælder links inden for dit eget website (din menu, et link i en tekst) og links fra andre websites.
- En liste, som du selv leverer: sitemappet. Et sitemap er en fil med adresserne på dine sider. Du indsender det i Search Console eller skriver det i robots.txt (lektion 3.4). Ifølge Google er et sitemap ikke et krav, men det er nyttigt, især for nye websites med få links, store websites og sider, der ligger dybt inde i websitet.
Links skal være rigtige links
Google kan kun følge et link, hvis det er et almindeligt <a>-element med en href:
<a href="/bruidsboeketten">Bruidsboeketten</a> <!-- godt -->
<span onclick="ga('/bruidsboeketten')">Bruidsboeketten</span> <!-- ikke et link for Google -->En knap, der kun springer til en anden side med JavaScript, er ikke et link for en crawler. En side, som der ikke linkes til nogen steder fra, kaldes en forældreløs side (orphan page). Den finder en crawler kun via sitemappet, og besøgende har også svært ved at finde den. En ny side bør derfor altid linkes fra din menu eller fra en tekst.
JavaScript: først hentes, senere udføres
Mange moderne websites bygger siden op med JavaScript i browseren. Det kan Google håndtere: den udfører JavaScript med en nyere version af Chromium, grundlaget for Chrome-browseren. Det kaldes rendering. Google beskriver det som tre faser for den slags sider: crawling, rendering og indeksering. Sider med status 200 kommer i kø for at blive renderet.
To konsekvenser:
- Det, der først kommer på siden efter JavaScript, ser Google senere end det, der står direkte i HTML'en.
- Ikke alle crawlere udfører JavaScript. Det siger Google også selv. Tekst, titler og links, der står direkte i HTML'en, er derfor det sikreste for alle søgemaskiner. Google kalder HTML, der dannes på serveren, "stadig en god idé".
De automatiske tjek i dette kursus læser HTML'en, som serveren sender den, uden JavaScript. Det, du ser i din browser, kan afvige fra det.
Statuskoder: hvad serveren svarer
Med hver side sender serveren en statuskode. Den kan du ikke se på skærmen, men en crawler læser den som det første:
| Kode | Betydning | Hvad Google gør med den |
|---|---|---|
| 200 | OK, her er siden | Indholdet går videre til indeksering (optagelse er ikke garanteret) |
| 301 / 308 | Flyttet permanent til en anden adresse | Stærkt signal om, at den nye adresse er den rigtige |
| 302 / 307 | Midlertidigt et andet sted | Svagt signal; den gamle adresse forbliver ofte hovedadressen |
| 404 / 410 | Findes ikke (længere) | En tidligere optaget adresse fjernes fra indekset; Google kommer forbi stadig sjældnere |
| 429 | For mange forespørgsler | Google crawler midlertidigt langsommere |
| 5xx | Fejl på serveren | Google crawler midlertidigt langsommere; bliver en adresse ved med at give en serverfejl, falder den til sidst ud af indekset |
Pas på med soft 404: en side, der viser "ikke fundet", men giver status 200. For crawleren ligner det en rigtig side, for den besøgende gør det ikke. Search Console melder den slags sider separat. En slettet side bør derfor give en rigtig 404 eller 410 eller viderestille med en 301 til en erstatning.
En viderestillingskæde (http til https til www til den nye side) følger Google godt nok, op til omkring ti trin, men hvert trin koster tid. Lektion 4.1 viser, hvordan du gør det i ét trin.
Hvad der stopper en crawler
Google nævner disse årsager til, at en side ikke bliver crawlet: problemer med serveren, netværksproblemer og regler i robots.txt, der nægter Googlebot adgang. I praksis ser du desuden:
- et website, der stadig står i "vedligeholdelsestilstand" eller ligger bag en adgangskode;
- i WordPress fluebenet "Fraråd søgemaskiner at indeksere dette websted", der sætter en noindex (det er trin 2, men effekten er den samme: siden kan ikke findes);
- en sikkerhedsløsning eller firewall, der afviser ukendte bots med 403 eller 429;
- et website, der kun kan navigeres med JavaScript-knapper.
robots.txt får sin egen lektion (3.3). For nu er det nok at vide, at det er en tekstfil på https://www.example.com/robots.txt, der fortæller, hvilke dele af dit website en crawler ikke må hente.
Crawlbudget: ingen bekymring for de fleste websites
Du læser meget online om crawlbudget: hvor mange sider Google vil og kan hente på dit website. Google siger, at vejledningen om det er beregnet til store websites, groft anslået mere end en million sider eller mere end ti tusind sider, der ændres dagligt. Bliver dine nye sider allerede hentet samme dag, som de udgives, behøver du ikke beskæftige dig med det. For et website som Bloemenatelier Lottes med tredive sider er det ikke et emne. Et opdateret sitemap og et kig i indekseringsrapporten (Page indexing) en gang imellem er nok.
I praksis: din serverlog
I DirectAdmin og lignende paneler kan du se adgangsloggen for dit website. Søg efter "Googlebot" eller "bingbot", så ser du, hvilke sider de bad om, og hvilken statuskode de fik. Ser du mange 404'ere eller 5xx-fejl, ved du, hvor du skal begynde. Hos andre udbydere finder du som regel logfilerne under et lignende navn i kundepanelet.
Opsummering
- En crawler henter sider og finder nye adresser via links og via dit sitemap.
- Kun rigtige
<a href>-links bliver fulgt; en side uden links til sig er forældreløs. - Google udfører JavaScript, men senere; andre crawlere gør det ofte ikke. Vigtigt indhold hører hjemme i HTML'en.
- Statuskoden afgør, hvad en crawler gør: 200 behandles, 301 flytter, 404/410 fjerner, 5xx og 429 giver langsommere crawling.
- Crawlbudget har kun betydning for meget store eller meget hurtigt skiftende websites.
Quiz
Opgave
Opgave A1.2: Hvad ser en crawler på din forside? Indtast adressen på dit website (eller www.wikipedia.org, hvis du ikke har dit eget website). Udfyld derefter, hvad du forventer: statuskoden for den endelige side, adressen, du ender på efter viderestilling, og om der er en noindex på siden. Programmet henter forsiden som en crawler, uden JavaScript, og viser viderestillingskæden, statuskoden, antallet af rigtige links til dit eget website i HTML'en, og om sidens tekst kan læses uden JavaScript.
Læs mere
Trinene i disse artikler gælder for WebOkés paneler; hos andre udbydere fungerer det på lignende måde.
- DirectAdmin vejledning 4.7: Omdirigeringer for websted: videresend et domæne eller en side
- DirectAdmin vejledning 17.2: Oversigt og logs for websted: fejlloggen og adgangsloggen
- Tving besøgende til at bruge https
- Google, Sådan påvirker HTTP-statuskoder og netværksfejl Google Søgning: https://developers.google.com/search/docs/crawling-indexing/http-network-errors
- Google, Grundlæggende JavaScript-SEO: https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics
- Google, Crawlbudget for store websites: https://developers.google.com/crawling/docs/crawl-budget
