Crawlowanie: jak wyszukiwarka znajduje Państwa stronę
Moduł 1: Jak działają wyszukiwarki · Czas czytania: 11 minut
Cel lekcji: Po tej lekcji będą Państwo potrafili opisać, jak robot indeksujący (crawler) odkrywa nowe strony, jakie kody stanu napotyka i co one oznaczają oraz co go zatrzymuje.
Kluczowe pojęcia: crawler (Googlebot, Bingbot), podążanie za linkami, mapa witryny (sitemap), kod stanu HTTP (200, 301, 302, 404, 410, 429, 5xx), przekierowanie, budżet indeksowania (crawl budget), JavaScript i renderowanie, strona osierocona, robots.txt
Czym jest crawler
Crawler (nazywany też robotem indeksującym, pająkiem lub botem) to program, który pobiera strony internetowe tak jak Państwa przeglądarka, ale automatycznie i na ogromną skalę. Google ma Googlebota, Bing ma Bingbota. Roboty te wysyłają zapytanie o adres, otrzymują w odpowiedzi HTML, odczytują zawarte w nim linki i dopisują te nowe adresy do swojej listy, aby pobrać je później.
Google podaje, że Googlebot odwiedza witrynę średnio nie częściej niż raz na kilka sekund oraz że większość żądań pochodzi od wersji na smartfony Googlebota. Google ogląda więc Państwa stronę głównie tak, jak widzi ją telefon. Wrócimy do tego w lekcji 4.2.
Crawler może też podszywać się pod Googlebota: jego nazwę (user-agent) łatwo podrobić. Google zaleca sprawdzanie podejrzanej wizyty za pomocą odwrotnego zapytania DNS dla adresu IP. Przydaje się to, gdy w dzienniku serwera widzą Państwo "Googlebota", który robi dziwne rzeczy.
Jak crawler znajduje nowe strony
Google wymienia trzy sposoby:
- Ponowne odwiedzanie stron, które już zna. Widzi tam zmiany i nowe linki.
- Podążanie za linkami. Link ze strony, którą Google już zna, do nowej strony to najważniejszy sposób na to, by zostać znalezionym. Dotyczy to linków w obrębie Państwa witryny (menu, link w tekście) oraz linków z innych witryn.
- Lista, którą Państwo dostarczają: mapa witryny (sitemap). Mapa witryny to plik z adresami Państwa stron. Można ją zgłosić w Search Console lub wpisać do pliku robots.txt (lekcja 3.4). Według Google mapa witryny nie jest obowiązkowa, ale jest przydatna, zwłaszcza dla nowych witryn z niewielką liczbą linków, dużych witryn oraz stron ukrytych głęboko w strukturze witryny.
Linki muszą być prawdziwymi linkami
Google może podążać za linkiem tylko wtedy, gdy jest to zwykły element <a> z atrybutem href:
<a href="/bruidsboeketten">Bruidsboeketten</a> <!-- dobrze -->
<span onclick="ga('/bruidsboeketten')">Bruidsboeketten</span> <!-- dla Google to nie jest link -->Przycisk, który przenosi na inną stronę wyłącznie za pomocą JavaScriptu, nie jest dla crawlera linkiem. Strona, do której nie prowadzi żaden link, nazywa się stroną osieroconą (orphan page). Crawler znajdzie ją tylko przez mapę witryny, a odwiedzającym również trudno do niej trafić. Nowa strona powinna więc zawsze być podlinkowana w menu lub w jakimś tekście.
JavaScript: najpierw pobranie, wykonanie później
Wiele nowoczesnych witryn buduje stronę za pomocą JavaScriptu w przeglądarce. Google sobie z tym radzi: wykonuje JavaScript przy użyciu aktualnej wersji Chromium, czyli podstawy przeglądarki Chrome. Nazywa się to renderowaniem. Google opisuje dla takich stron trzy fazy: crawlowanie, renderowanie i indeksowanie. Strony z kodem stanu 200 trafiają do kolejki do renderowania.
Wynikają z tego dwie rzeczy:
- To, co pojawia się na stronie dopiero po wykonaniu JavaScriptu, Google widzi później niż to, co znajduje się bezpośrednio w HTML.
- Nie każdy crawler wykonuje JavaScript. Google samo to przyznaje. Teksty, tytuły i linki umieszczone bezpośrednio w HTML są więc najbezpieczniejsze dla wszystkich wyszukiwarek. Google określa HTML generowany na serwerze jako "nadal dobry pomysł".
Automatyczne testy w tym kursie odczytują HTML w takiej postaci, w jakiej wysyła go serwer, bez JavaScriptu. To, co Państwo widzą w przeglądarce, może się od tego różnić.
Kody stanu: co odpowiada serwer
Przy każdej stronie serwer przesyła kod stanu. Nie widać go na ekranie, ale crawler odczytuje go jako pierwszy:
| Kod | Znaczenie | Co robi z tym Google |
|---|---|---|
| 200 | OK, oto strona | Treść przechodzi do indeksowania (umieszczenie w indeksie nie jest gwarantowane) |
| 301 / 308 | Trwale przeniesiona pod inny adres | Silny sygnał, że nowy adres jest właściwy |
| 302 / 307 | Tymczasowo w innym miejscu | Słaby sygnał; stary adres często pozostaje adresem głównym |
| 404 / 410 | Nie istnieje (już) | Adres, który był wcześniej w indeksie, zostaje z niego usunięty; Google odwiedza go coraz rzadziej |
| 429 | Zbyt wiele żądań | Google tymczasowo zwalnia crawlowanie |
| 5xx | Błąd serwera | Google tymczasowo zwalnia crawlowanie; jeśli adres stale zwraca błąd serwera, ostatecznie wypada z indeksu |
Proszę zwrócić uwagę na soft 404: stronę, która wyświetla komunikat "nie znaleziono", ale zwraca kod stanu 200. Dla crawlera wygląda ona jak prawdziwa strona, dla odwiedzającego nie. Search Console zgłasza takie strony osobno. Usunięta strona powinna więc zwracać prawdziwy kod 404 lub 410 albo przekierowywać kodem 301 na stronę zastępczą.
Łańcuch przekierowań (z http na https, na www, na nową stronę) Google wprawdzie śledzi, do mniej więcej dziesięciu kroków, ale każdy krok kosztuje czas. Lekcja 4.1 pokazuje, jak zrobić to w jednym kroku.
Co zatrzymuje crawlera
Jako przyczyny, dla których strona nie jest crawlowana, Google wymienia: problemy z serwerem, problemy z siecią oraz reguły w pliku robots.txt, które zabraniają Googlebotowi dostępu. W praktyce spotyka się ponadto:
- witrynę, która nadal jest w "trybie konserwacji" lub jest chroniona hasłem;
- w WordPress zaznaczone pole "Proś wyszukiwarki o nieindeksowanie tej witryny", które ustawia noindex (to etap 2, ale skutek jest ten sam: strony nie da się znaleźć);
- zabezpieczenie lub zaporę sieciową, która odrzuca nieznane boty kodem 403 lub 429;
- witrynę, po której można się poruszać wyłącznie za pomocą przycisków JavaScript.
Plikowi robots.txt poświęcona jest osobna lekcja (3.3). Na razie wystarczy wiedzieć, że jest to plik tekstowy pod adresem https://www.example.com/robots.txt, który określa, których części witryny crawler nie może pobierać.
Budżet indeksowania: dla większości witryn bez znaczenia
W internecie można przeczytać wiele o budżecie indeksowania (crawl budget): ile stron w Państwa witrynie Google chce i może pobrać. Google podaje, że jego poradnik na ten temat jest przeznaczony dla dużych witryn, w przybliżeniu takich, które mają ponad milion stron lub ponad dziesięć tysięcy stron zmieniających się codziennie. Jeśli Państwa nowe strony są pobierane już w dniu publikacji, nie muszą się Państwo tym zajmować. Dla witryny takiej jak Bloemenatelier Lotte z trzydziestoma stronami nie jest to w ogóle temat. Wystarczy aktualna mapa witryny i od czasu do czasu rzut oka na raport indeksowania.
W praktyce: dziennik serwera
W DirectAdmin i podobnych panelach można przejrzeć dziennik dostępu (access log) swojej witryny. Wystarczy wyszukać "Googlebot" lub "bingbot", aby zobaczyć, o które strony prosiły roboty i jaki kod stanu otrzymały. Jeśli widać tam wiele błędów 404 lub 5xx, wiadomo, od czego zacząć. U innych dostawców dzienniki zwykle znajdują się pod podobną nazwą w panelu klienta.
Podsumowanie
- Crawler pobiera strony i znajduje nowe adresy dzięki linkom oraz mapie witryny.
- Śledzone są tylko prawdziwe linki
<a href>; strona, do której nie prowadzi żaden link, jest osierocona. - Google wykonuje JavaScript, ale z opóźnieniem; inne crawlery często wcale. Ważne treści powinny znajdować się w HTML.
- Kod stanu decyduje o tym, co robi crawler: 200 przetworzenie, 301 przeniesienie, 404/410 usunięcie, 5xx i 429 wolniejsze crawlowanie.
- Budżet indeksowania ma znaczenie tylko w przypadku bardzo dużych lub bardzo szybko zmieniających się witryn.
Quiz
Zadanie
Zadanie A1.2: Co widzi robot indeksujący na Państwa stronie głównej? Prosimy wpisać adres swojej witryny (lub www.wikipedia.org, jeśli nie mają Państwo własnej witryny). Następnie prosimy wpisać, czego się Państwo spodziewają: kod stanu strony docelowej, adres, pod który trafia się po przekierowaniach, oraz czy strona ma ustawiony noindex. Program pobiera stronę główną tak jak crawler, bez JavaScriptu, i pokazuje łańcuch przekierowań, kod stanu, liczbę prawdziwych linków do Państwa witryny w HTML oraz to, czy tekst strony jest czytelny bez JavaScriptu.
Więcej informacji
Kroki opisane w tych artykułach dotyczą paneli WebOké; u innych dostawców działa to podobnie.
- Instrukcja DirectAdmin 4.7: Przekierowanie strony: przekierowanie domeny lub podstrony
- Instrukcja DirectAdmin 17.2: Podsumowanie witryny i logi: log błędów i log dostępu
- Wymuszone przekierowanie odwiedzających na https
- Google, Jak kody stanu HTTP oraz błędy sieci i DNS wpływają na wyszukiwarkę Google: https://developers.google.com/search/docs/crawling-indexing/http-network-errors
- Google, Podstawy SEO w JavaScripcie: https://developers.google.com/search/docs/crawling-indexing/javascript/javascript-seo-basics
- Google, Budżet indeksowania dla dużych witryn: https://developers.google.com/crawling/docs/crawl-budget
