Jak sprawdzić, czy strona działa?
Utrzymujący się przez jakiś czas brak dostępu do strony może przyczynić się do spadku liczby użytkowników oraz usunięcia strony z indeksu Google. Aby temu zapobiec, należy regularnie sprawdzać, czy strona jest aktywna. Można to robić ręcznie lub… napisać własny skrypt, który codziennie będzie odpytywał podany adres URL i zapisywał kod odpowiedzi serwera w arkuszu Google. Sprawdź, jak przygotować przydatne narzędzie SEO.
- Autor:
- Daniel Jędrysik
- Czas czytania:
- Publikacja:
- 22 stycznia 2021
- Aktualizacja:
- 31 marca 2022
- Kategorie:
W grudniu na blogu ukazał się artykuł o kodach odpowiedzi HTTP i ich wpływie na SEO. Wspomniałem w nim, że uzyskanie przez silnik wyszukiwarki – w trakcie odwiedzin naszej strony – kodu odpowiedzi 4xx skutkuje usunięciem jej z wyników wyszukiwania. Zacząłem zastanawiać się, w jaki sposób – bez konieczności angażowania płatnych narzędzi – sprawdzać czy strona działa.
Oczywiście można to robić ręcznie każdego dnia w przeglądarce, ale przy dużej ilości projektów nie zawsze mamy na to czas lub po prostu możemy o tym zapomnieć. Pół biedy jeżeli witryna internetowa działa jak należy. Problem zaczyna się wtedy, kiedy przegapimy moment, w którym strona nie działa, a robot ponownie ją odwiedził.
Aby uniknąć takiej sytuacji i nie obciążać się dodatkową pracą, jakiś czas temu wpadłem na pomysł, by do weryfikacji witryny internetowej zaprząc Pythona oraz Crona.
Założenia projektu
Głównym założeniem projektu jest stworzenie narzędzia (skrypt w Pythonie), które wysyła do serwerów zapytanie i gromadzi kody odpowiedzi HTTP. Domeny pobierane będą z osobnego pliku i na tej podstawie narzędzie odpyta serwer o każdy adres www z osobna.
Aby takie narzędzie było pomocne, musi ono odpytywać serwer cyklicznie. Do tego wykorzystam Cron’a wbudowanego w system macOS.
Dodatkowo dane zostaną przesłane poprzez API do arkusza Google, a następnie na ich podstawie zostanie utworzony dynamiczny raport w Google Data Studio, który szybko i sprawnie pozwoli zinterpretować zgromadzone informacje.
Minusem tego narzędzia będzie to, że aby poprawnie działało, o ustalonej godzinie musi być włączony komputer.
Bez zbędnego przedłużania przejdźmy do poradnika.
Krok 1. Utworzenie projektu w Google Cloud Platform
Jeżeli jeszcze nie miałeś możliwości zapoznać się z artykułem o Google Indexing API, to właśnie jest ten moment. W nim bowiem umieściłem informacje jak tworzyć projekty w Google Cloud Platform. Ja wykorzystałem wcześniej utworzony projekt, ale jeżeli chcesz, możesz spokojnie stworzyć nowy. Nie zapomnij tylko o pobraniu klucza i zapisaniu go w bezpiecznym miejscu.
Krok 2. Uruchomienie interfejsu Google Sheets API i Google Drive API
Twoje narzędzie będzie potrzebować dostępu do dwóch API. W tym celu w oknie projektu wybierz z menu bocznego Library i wyszukaj usługi:
- Google Sheets API
- Google Drive API
Obie usługi aktywujemy przyciskiem Enable.
Krok 3. Utworzenie pliku na dysku Google
Kolejnym etapem jest utworzenie arkusza na dysku Google. Nadaj mu dowolną nazwę, a następnie w pierwszej komórce wpisz Data. W tej kolumnie zapisywane będą daty kolejnych sprawdzeń. Adresy URL do monitorowania będziesz mógł umieścić w kolejnych kolumnach w pierwszym rzędzie. W przykładzie wpisałem 4 warianty mojej domeny.
Aby nasz program miał dostęp od tego arkusza, należy udostępnić dokument. Posłuży nam do tego Identyfikator Konta Usługi. Wprowadzamy go w pole, które pojawi się po kliknięciu przycisku Udostępnij w prawym górnym rogu arkusza.
Upewnij się, że dodałeś nowego użytkownika z funkcją Edytora!
Czas na stworzenie skryptu, który pozwoli sprawdzić, jakie kody odpowiedzi zwracane są przez poszczególne adresy.
Krok 4. Skrypt w Pythonie
Powyższy skrypt łączy się z arkuszem na dysku Google, pobiera z niego listę z pierwszej kolumny i po kolei odpytuje serwer. Odpowiedzi HTTP gromadzi na następnej kolumnie, w nagłówku umieszczając datę sprawdzenia. Kolejne testy będą zapisywane w następnych kolumnach.
Skrypt można bez oporów skopiować i użyć w swoim narzędziu. Należy pamiętać jednak o kilku sprawach:
- W katalogu ze skryptem koniecznie umieść pobrany wcześniej klucz do projektu Google Cloud Platform.
- Sprawdź, czy nazwa klucza to service_account_file.json. Jeżeli jest inaczej, zmień nazwę klucza na domyślną lub popraw tę linijkę w kodzie:
creds = ServiceAccountCredentials.from_json_keyfile_name('tu-wstaw-nazwe-swojego-klucza.json', scope)
- zmień nazwę arkusza (na tę utworzoną w kroku 3) w linijce:
sheet = client.open("Nazwa twojego arkusza").sheet1
Warto przed uruchomieniem Cron’a wykonać szybki test i uruchomić program w Terminalu. Jeżeli wszystko przebiegnie bez większych problemów, w arkuszu zobaczymy nową kolumnę wraz z kodami odpowiedzi.
Krok 5. Crontab
Skrypt działa, pora ustawić cykliczne jego wywołanie. W artykule Cron – Automatyzacja codziennych zadań SEO podałem, jak wprowadzić automatyzację zadań dla przykładowego skryptu. Jeżeli prześledzisz krok po kroku cały proces bez trudu uda Ci ustawić wywołanie kodu o określonej porze.
W moim przypadku ustawiłem uruchamianie skryptu codziennie o godzinie 8:00. Wyrażenie Cron będzie zatem miało postać:
0 8 * * * cd ~/desktop/python/server-check && /usr/bin/python3 statuschecker.py >> ~/desktop/python/server-check/log.txt 2>&1
Testując wykonywanie się skryptu przez Crontab, natknąłem się na problem z importem modułów. W pliku log.txt pojawił się komunikat:
Traceback (most recent call last):
File "clickout.py", line 3, in <module>
import gspread
ImportError: No module named gspread
Okazuje się, że program nie wiedział, skąd ma zaimportować biblioteki. Jeżeli także w Twoim przypadku pojawi się taki błąd, wykonaj następujące czynności:
- Sprawdź w pliku log.txt (znajdziesz go w głównym katalogu z programem), która biblioteka sprawia problemy. W tym przykładzie będzie to moduł gspread
- Otwórz terminal i wprowadź komendę: python3
- Zaimportuj feralną bibliotekę komendą: import gspread
- Wprowadź komendę wyświetlającą ścieżkę do modułu: gspread.__file__
- Skopiuj fragment ścieżki (zaznaczony na screenie poniżej) do katalogu z modułem
- Zmodyfikuj plik z programem. Przed linijką z importem modułów dodaj te dwa wiersze:
import sys;
sys.path.append('/Users/admin/Library/Python/3.7/lib/python/site-packages/')
- Sprawdź, czy teraz skrypt wykonuje się poprawnie. Aby szybko wykryć ewentualne problemy, możesz wcześniej usunąć plik log.txt
- Jeżeli znów pojawi się ten sam błąd, ale dla innego modułu, wróć do punktu 1. W punkcie 6 dodajesz jedynie komendę
sys.path.append
ze ścieżką do modułu.
Finalny efekt cyklicznego wykonania skryptu w arkuszu Google.
Krok 6. Raport dynamiczny w Google Data Studio
Dane prezentowane w tabeli możemy lepiej zaprezentować, wykorzystując do tego Google Data Studio.
- Przejdź na stronę: https://datastudio.google.com/u/0/navigation/reporting. Musisz być zalogowany na koncie Google, na którym utworzyłeś arkusz.
- Utwórz nowy raport, klikając w pusty raport.
- Dodaj dane do raportu.
- Odszukaj arkusz kalkulacyjny z danymi i kliknij DODAJ. Będziesz musiał jeszcze potwierdzić, czy aby na pewno dodać to źródło danych.
- Domyślnie zostanie dodana tabela. Możesz ją usunąć.
- Wejdź w Dodaj element sterujący, wybierz Lista i umieść ją na ekranie.
- Przy konfiguracji upewnij się, czy Wymiar zakresu dat i Pole elementu sterującego ma ustawioną wartość Data.
- W ustawieniach STYL dla elementu lista zaznaczamy checkbox Wybieranie pojedyncze.
- Z menu Dodaj wykres, wybierz pierwszą opcję z grupy Podsumowanie statystyk i umieść element na ekranie
- Ustawienia dla elementu (zakładka DANE): Wymiar zakresu dat -> Data; Dane -> Adres URL
- Stylowanie elementów zostawiam Tobie.
Mój raport dynamiczny wygląda tak:
Dodałem jeszcze do pól formatowanie warunkowe, dzięki czemu od razu zauważę, gdyby coś z moją stroną było nie tak.
W ten oto sposób stworzyliśmy program, który sprawdza, czy strona WWW działa i czy nie występują z nią jakieś problemy. W jednym z kolejnych wpisów rozbuduję kod o możliwość sprawdzenia ważności certyfikatu SSL oraz wysyłania powiadomień na maila.
Jeżeli, któryś element poradnika jest dla Ciebie niejasny, znajdź mnie na LinkedIn lub Facebooku i poproś o pomoc. Możesz też napisać do mnie bez powodu, aby po prostu porozmawiać.
Od 2018 roku związany jestem z marketingiem internetowym. Specjalizuję się w optymalizacji stron internetowych i sklepów. Obecnie pełnię funkcję Marketing Managera w Agencji KS. Prywatnie jestem miłośnikiem fantastyki oraz zapalonym czytelnikiem.