Google, he knows me

Dostałem maila od Google. Na stronie wykryto błędy, kod błędu 403. Sprawa mnie zaintrygowała. Co prawda chodziło tylko o jeden URL, ale czemu 403? Błędy 5xx czy 404 bym zrozumiał jeszcze, zwłaszcza na blogu, ale 403? Coś się tu zdecydowanie nie zgadza.

Rozpocząłem dochodzenie i zrobiło się dziwniej. Bowiem chodziło o zupełnie egzotyczny URL ( hxxps://zakr.es/tststs/ ). Na oko poprawny, ale ewidentnie tymczasowy i testowy. I zdecydowanie nie należący do bloga. W ogóle byłem zdziwiony, że Google o nim wie.

And he knows I’m right

Pierwsze co przyszło mi do głowy to robots.txt. Może dlatego, że sugerują sprawdzenie, czy dostęp nie jest tam blokowany? W każdym razie pudło. Zresztą nawet gdyby tam URL był, to raczej jako wykluczenie dla botów. A wtedy zgłaszanie braku dostępu byłoby sporą bezczelnością.

Zajrzałem do katalogu na serwerze i przypomniało mi się, że testowałem pewną rzecz. Powiedzmy, że okolice bug bounty. Tak, robienie tego na podstawowej domenie to zwykle kiepski pomysł, ale tym razem kluczowa miała być obecność naturalnego ruchu. Tak czy inaczej nic z tego nie wyszło, tj. nie udało mi się wykorzystać w planowany sposób. A katalog pozostał, choć już niewykorzystany. I nielinkowany.

Analiza

Google webmaster tools[1] pokazuje, skąd jest linkowana dana strona. W tym przypadku podał dwie strony na blogu. Jedną z konkretnym wpisem, drugą zbiorczą.

Strona odsyłająca
https://zakr.es/blog/author/rozie/page/6/
https://zakr.es/blog/2015/10/spis-wyborcow-a-rejestr-wyborcow/

Tyle, że w podglądzie źródła tego ostatniego wpisu to ja tego URLa w żaden sposób nie widzę.

Jak to wygląda czasowo? Kolejna ciekawostka to kolejne dwie daty w Google webmaster tools:

Data pierwszego wykrycia: 31.08.2022

Zapewne wtedy się bawiłem. Daty utworzenia plików potwierdzają – wszystkie pliki mają 03.08.2022. Ma to jakiś sens, tylko musiałbym zostawić pliki podlinkowane na miesiąc? Raczej niemożliwe, bo wtedy zostałyby na stałe. A nie ma. No i skąd by się wzięły w tak starym wpisie?

Ostatnie skanowanie 5 maj 2023, 11:47:16

To oczywiście możliwe, tym bardziej, że Google zauważyło błąd 403 dokładnie 3 maja 2023. Po ponad pół roku?

I’ve been talking to Google all my life

Jeśli chodzi o Google, to mamy love hate relationship. Z jednej strony doceniam firmę za GCTF, czy zabezpieczenia poczty i kont. Z drugiej strony to, co robią z prywatnością userów, nachalność reklam, tragiczny, scamerski content części reklam bąbelkowanie w wyszukiwarce i wreszcie samo bycie globalną korporacją mocno mnie odstręczają.

Ostatecznie jest tak, że umiarkowanie korzystam z ich usług. Trochę, bo wygodne, trochę, bo wypada znać. Mam webmaster tools, mam reklamy AdSense, ale tylko w wybranych miejscach. Pozwalam indeksować blog. Raczej nie korzystam z ich wyszukiwarki, tj. sięgam do niej tylko, jeśli nie znajdę wyników w podstawowej, czyli rzadko. Inne usługi Google, czyli np. Maps, Waze, translate, calendar, drive, docs – różnie, raczej korzystam, choć w ograniczonym stopniu.

Częściowe wyjaśnienie

Spojrzenie w logi serwera mówi nieco więcej:

66.249.65.223 - - [28/Aug/2022:20:35:53 +0200] "GET /tststs/ HTTP/1.1" 403 187 "-" "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.79 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
66.249.70.63 - - [30/Aug/2022:20:53:52 +0200] "GET /tststs/ HTTP/1.1" 403 187 "-" "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/104.0.5112.79 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
66.249.64.227 - - [30/Apr/2023:22:32:01 +0200] "GET /tststs/ HTTP/1.1" 403 187 "-" "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.5615.142 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
66.249.64.231 - - [03/May/2023:10:44:18 +0200] "GET /tststs/ HTTP/1.1" 403 187 "-" "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.5615.142 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"
66.249.64.229 - - [05/May/2023:11:47:16 +0200] "GET /tststs/ HTTP/1.1" 403 187 "-" "Mozilla/5.0 (Linux; Android 6.0.1; Nexus 5X Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/112.0.5615.142 Mobile Safari/537.36 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)"

Część rzeczy się zgadza, np. wizyty kiedy Google zauważyło i zaindeksowało URL, po miesiącu od zamieszczenia plików. Widać też wizyty 03.05, kiedy sobie o nim ni stąd ni zowąd przypomniało. Mogło się też zdarzyć, że do testów wziąłem jakiś stary wpis z 2015.

Nadal nie zgadza się – albo nie mogę sobie przypomnieć – jak to się stało, że URL został na miesiąc, a nie został na stałe. I słodką tajemnicą Google pozostanie, czemu zapomniało o tym URLu na bite osiem miesięcy.

Usunąłem katalog z serwera. Może teraz Google, gdy dostanie 404, zapomni o nim na dobre?

[1] Obecnie Google Search Console, ale przywykłem do starej nazwy, więc przy niej zostanę, przynajmniej w tym wpisie.

Szczepienia

Szczepienia i rejestracja na nie to ostatnio modny temat. Przynajmniej w mojej bańce. A to ktoś się szczepi, a to szuka terminu, a to udało mu się znaleźć wcześniejszy. Nie bez znaczenia jest fakt, że obecnie codziennie jakieś roczniki zaczynają się kwalifikować do szczepienia. W stosunku do początków szczepień, gdy szczepiono tylko wybrane grupy oraz seniorów to duża zmiana.

Szczepienia
Źródło: Thumbnail.ai

Jak wygląda rejestracja przez internet? Można/trzeba wybrać województwo i termin, czyli zakres dat. Także czy punkt stacjonarny, czy mobilny. Duży szacun za możliwość wyboru szczepionki. Wszytko to da się zrobić online przy pomocy profilu zaufanego. Ale jest też możliwość rejestracji przez internet dla tych, którzy profilu nie mają (nie testowałem).

Tyle dobrego. Klikanie na stronie przypomina wyścig. Kumpel uprzedził mnie, że nie ma czasu na sprawdzanie kalendarza itp. Trzeba wiedzieć zawczasu i od razu wybierać. Wtedy może zdążymy. Jeśli klikniemy źle, to niby jest opcja rezygnacji i wybrania ponownie. Nie testowałem.

Biada tym, którzy mieszkają na skraju województw. Muszą sprawdzać każde województwo osobno. Poza tym, wybór województwa jest za szeroki. Jako zmotoryzowany nie mam problemu z podjechaniem nawet powiedzmy 50 km. Ale miejscowości, zwłaszcza mniejszych i czasów dojazdu nie znam na pamięć. Na sprawdzanie na mapie gdzie jest Pcim Dolny czasu, jak wspominałem, nie ma. Zdecydowanie brakuje mi opcji „punkty szczepień w promieniu do N km”.

Sporym ułatwieniem jest strona szczepienia.github.io. Niestety, dane są tam odświeżane stosunkowo rzadko i dotyczą tylko wybranych miast. To projekt amatorski i w pewnym momencie pobieranie danych na potrzeby strony zostało zablokowane. Z pomocą tej strony może nie znajdziemy punktu, ale korzystanie z niej pozwala się zorientować w dostępności i terminach w danym województwie czy mieście.

Ponadto, wyżej wymieniona strona się rozwija. W momencie pisania wpisu nie było takiej możliwości, a obecnie pozwala ona na wyszukanie punktów i terminów w zadanym promieniu (10, 25, 50 oraz 100 km).

W całym systemie brakuje mi też opcji „dyspozycyjny”. Typu: daj mi znać min. 4h wcześniej, a w obrębie mojego miasta po dany typ szczepionki podjadę. Tak, niektórzy są w stanie przeorganizować sobie dzień na tę godzinę czy dwie. Zresztą w ogóle nie ma opcji push, gdzie system sam proponuje najbliższy termin dla wybranych parametrów.

Niemniej, da się zarejestrować przez internet i nie potrzeba do tego specjalnej wiedzy. Mogłoby to być zrobione lepiej, ale jest całkiem używalne. Wg statystyk ze strony, w ostatnich siedmiu dniach wykonywanych jest niemal 220 tys. szczepień dziennie. Biorąc pod uwagę, że od początku programu wykonano jedynie 12,6 mln szczepień, to ogromy przyrost. I więcej, niż zapowiadane pierwotnie przez rząd 850 tys. tygodniowo. We wpisie z okazji rozpoczęcia szczepień odnotowałem ówczesne dane. Robiliśmy 208 tys. szczepień. Tyle, że tygodniowo, nie dziennie.

Na koniec garść porad dla tych, którzy będą się rejestrować.

Przez panel nie da się zrobić wszystkiego tego, co potrafią obsługujący infolinię. W szczególności przyspieszyć terminu bez wcześniejszej rezygnacji z wybranego. Przydatne zwłaszcza dla tych mniej mobilnych, przywiązanych do miasta. Wystarczy wybrać jakiś termin w wybranej lokalizacji, a następnie parokrotnie spróbować znaleźć wcześniejszy. Można powtarzać.

Wcześniejsza rejestracja nie oznacza wcześniejszego terminu. W panelu pojawiają się nowe terminy, warto sprawdzać. Może być warto poczekać, bo coś się zwolni.

Jeśli komuś zależy na wcześniejszym terminie i konkretnej szczepionce, a jest mobilny, warto sprawdzić inne województwa. Różnice są znaczne. Jedyne o czym warto pamiętać w takiej sytuacji, to że będzie trzeba przyjechać w to samo miejsce także na drugą dawkę.

Pfizer i Moderna to praktycznie to samo. Ten sam typ szczepionki (mRNA), też dwie dawki, skuteczność taka sama.

UPDATE Dodatkowy akapit o szczepienia.github.io, rozszerzeone info o przyspierzaniu terminów.

Kluby

Zainspirowany aktywnościami na czytanych blogach, zapisałem się ostatnio do klubów. Kluby są dwa: 512 KB oraz 250 KB. Pierwszy dotyczy rozmiaru strony nieskompresowanej, drugi – moim zdaniem istotniejszy – skompresowanej. Znaczy wykonana została optymalizacja WordPress.

Niby nic nowego, bo o optymalizacji strony i poprawnym działaniu na urządzeniach moblilnych pisałem już dawno. Jednak z WordPressa o rozmiarze nieskompresowanym mniejszym niż 512 KB jestem zadowolony. Tym bardziej, że chodzi o wersję z dodatkowymi statystykami Matomo. Okazuje się, że nie potrzeba żadnej magii, by osiągnąć taki wynik. Nawet motyw jest jeden z domyślnych.

Tak, to tylko główna. Poszczególne wpisy są nieco większe. Tak, nie mam obrazków we wpisach. Z obrazkami na głównej byłoby więcej. Z drugiej strony mógłbym zmniejszyć liczbę wpisów. Ale nie o to chodzi, przynajmniej mi. Nie musi być jak najmniej, ważne, by zwrócić uwagę na rozmiar przy zachowaniu wyglądu i funkcjonalności. Czyli żeby nie było bloatu.

Jeśli komuś naprawdę zależy na minimalizacji, to jedynym sensownym kierunkiem wydaje mi się strona statyczna. Statycznych generatorów stron/blogów jest wiele. Podzielone językami i licencjami, czyli dla każdego coś miłego. Do tego lekki motyw i wyniki są nieporównywalnie lepsze. Co można zobaczyć na przykładzie Wattmeter (geneza). Niestety, funkcjonalność jakby nie ta. Przede wszystkim brakuje sensownej możliwości spięcia komentarzy.

Swoją drogą fajnie widać, jak na przestrzeni lat zmieniają się narzędzia do badania optymalizacji strony. Kiedyś korzystałem z surowo wyglądającego webpagetest.org, teraz rządzi znacznie ładniejszy GTmetrix.

Puchną także same strony. Strona główna starego bloga (Jogger.pl) to 27 requestów, 227 KB skompresowane, 674 KB nieskompresowane. Jednak od obu tych wartości należałoby odjąć odpowiednio 152 KB oraz 461 KB związane z reklamami i widgetem wyszukiwarki Google. Czyli zostałoby 75 KB oraz 213 KB, przed jakąkolwiek optymalizacją. Ten blog ma 11 requestów i odpowiednio 102 KB i 334 KB, ale już po optymalizacji. Czyli jakąś połowę więcej.

Optymalizacja WordPress

Do odchudzania strony głównej, czyli optymalizacji WordPressa korzystałem z wtyczki Asset CleanUp. Więcej o polecanych/używanych wtyczkach WordPress pisałem pisałem tu, więc aktualizuję.

Gdyby ktoś chciał powalczyć samodzielnie to poniżej instrukcja, albo raczej krótkie wskazówki na temat tego, co ustawiłem w tej wtyczce. Nie jest to komplet zmian optymalizacyjnych, część rzeczy mogę robić w innych wtyczkach lub samym serwerze WWW. Czyli klasyczne YMMV, a każda zmiana wymaga testów.

  • Optimize CSS – wszystkie opcje włączone. Defer, minimize, cache.
  • Optimize JavaScript – nie dotykany.
  • HTML Source CleanUp – usunięte kilka tagów. Nie podaję które, bo mocno zależy od konfiguracji.
  • Google Fonts – włączone Remove Google Fonts. Widać różnicę w wyglądzie, ale na testach wyszło mi, że jest tylko odrobinę gorzej. Różnica w rozmiarze – znaczna.
  • CSS & JS Manager – ze strony głównej (i tylko z niej!) usunąłem ładowanie plugina Subscribe to Comments Reloaded. Jest potrzebny tylko na stronach wpisów. Podobny los spotkał tam jquery-core oraz jquery-migrate.