Jak měříme

Nejsem nezávislá autorita. Jsem člověk, který staví weby a zveřejnil, jak je měří. Stejným metrem měřím i ty svoje — a když některý propadne, opravuju web, ne pravidla.

// úsudek přiznaný narovinu

Váhy srážek jsou můj úsudek

Jiný dodavatel by je nastavil jinak a taky by to byl úsudek. Proto je zveřejňuju všechny — u každé kontroly i s důvodem a zdrojem — a nechávám na vás, ať si je zkontrolujete. Číslo, u kterého není vidět, jak vzniklo, působí svévolně, a to si nástroj hodnotící cizí práci nemůže dovolit.

Z 49 kontrol se 49 opírá o normu, doporučení tvůrců prohlížečů nebo rozhodnutí úřadu. U zbytku je ve sloupci napsané, že jde o můj úsudek. Radši to přiznám, než abych hledal zdroj na sílu.

Jak vzniká skóre

Skóre se skládá po oblastech. Každá oblast začíná na sto bodech a každý nález si z nich ukrojí svůj díl. Srážky se sčítají, takže pět problémů bolí víc než jeden a každá oprava se na čísle projeví.

Upozornění stojí polovinu toho co nález, protože „skoro v pořádku" nemá trestat stejně jako „vůbec". Sečtěte srážky u jedné oblasti a dostanete přesně to, o kolik klesla pod sto. Žádný bod nezmizí bez nálezu, který ho vysvětlí.

Celkové skóre je vážený průměr oblastí. Neváží se stejně — odpovídá to závažnosti kontrol, které v každé z nich jsou. Odhalená záloha databáze nemůže vážit tolik co chybějící ikona na záložce.

// počítáno z registru kontrol, ne psáno ručně

Vyhledatelnost 30 %

Jestli web najde Google a Seznam a jestli o firmě vědí, co mají. 12 kontrol.

Zabezpečení 25 %

Jestli je spojení chráněné a jestli web neprozrazuje víc, než má. 13 kontrol.

Výkon 20 %

Z čeho je stránka postavená a co to dělá s rychlostí načtení. 9 kontrol.

Zákony a soukromí 10 %

Povinné údaje a nakládání s údaji návštěvníků. 5 kontrol.

Přístupnost 10 %

Jestli web zvládne i ten, kdo nevidí na obrazovku nebo nemá myš. 6 kontrol.

Doporučené postupy 5 %

Drobnosti, které dělají rozdíl mezi hotovým a rozdělaným webem. 4 kontrol.

Strop skóre

U 5 kontrol z 49 platí strop: skóre přes něj nemůže, ať je zbytek webu jakkoli vypiplaný. Jsou to případy, kdy by dobrá známka o webu lhala.

NálezNejvyšší možné skóre
Na webu je veřejně stažitelný soubor, který tam nemá být20
Stránka si zakazuje zobrazení ve vyhledávání30
Web neběží na zabezpečeném spojení40
Certifikát není platný40
Stránka není nastavená pro mobil50

Co nikdy nevydám za chybu

U 6 kontrol z 49 umím nanejvýš upozornit. Zvenčí totiž nerozeznám rozdíl mezi vadou a jiným řešením téhož. Co neumím změřit, nevydávám za nález.

  • Obrázky nemají zadané rozměry — Rozměry mohou být i v CSS — pak je tahle poznámka bezpředmětná.
  • Všechny obrázky se načítají hned — První obrázek nahoře naopak nechat bez toho.
  • Měřicí skript se spouští hned při načtení — Bez souhlasu měřit jen tím, co cookies nepotřebuje.
  • K měřicím skriptům nevidíme lištu souhlasu — Nasadit lištu souhlasu, která měřicí skripty spustí až po kliknutí, a umožnit souhlas odvolat.
  • Na webu nevidíme identifikační údaje firmy — Údaje mohou být i na podstránce s kontakty — pak je tahle poznámka bezpředmětná.
  • Odkazy nejsou srozumitelné mimo kontext — Nahradit text odkazu tím, kam vede — místo „klikněte zde" napsat „ceník webových stránek".

Co neměřím vůbec

Jsem vzdálený nástroj. Vidím jen to, co vidí prohlížeč při jednom načtení stránky, na server nevidím. Přiznaná mez je poctivější než předstíraná úplnost.

  • Cookies, které nasadí až JavaScript. Vidím jen ty, co přijdou ze serveru.
  • Obsah za přihlášením. Měřím veřejnou stránku.
  • Kvalitu designu a textů. To je názor, ne měření.
  • Skutečnou návštěvnost. Na to jsou analytické nástroje.
  • Barevný kontrast a ovládání klávesnicí. Bez skutečného prohlížeče by z toho byly falešné nálezy, a u přístupnosti bolí falešný nález nejvíc.

Kdy měření neplatí

Když se kontrola nedá provést, dostane stav přeskočeno a do skóre se nepočítá. Netvářím se, že je něco v pořádku, ani že to selhalo. Stává se to hlavně u webů, které se skládají až v prohlížeči, a u měření, které zablokuje ochrana serveru. Zablokované měření je „nezměřeno", ne špatné skóre.

Proč se výkon liší od Googlu

Obě čísla se jmenují výkon, ale měří každé něco jiného. Google měří skutečné načtení v jednom konkrétním okamžiku, takže při každém spuštění vyjde trochu jinak. Já se ptám na to, z čeho je stránka postavená — kolik souborů si vyžádá, jestli je server komprimuje, v jakém formátu jsou obrázky. To se opakovaným měřením nemění.

Číslo od Googlu se do mého skóre nepočítá. Ukazuju ho vedle jako informaci navíc. Kdyby vstupovalo do skóre, dvě měření hodinu po sobě by dala jiné číslo, přestože se na webu nic nezměnilo.

Jak se chovám k měřenému webu

  • Hlásím se identifikovatelnou hlavičkou TomasMikulaAudit/1.0 s odkazem sem, aby mě firewall nemusel blokovat naslepo.
  • Posílám jen požadavky na čtení veřejných adres. Nic nezkouším odesílat, nehádám hesla a neobcházím ochrany.
  • Jedno měření vyvolá řádově tolik požadavků jako jedna lidská návštěva.
  • Bezpečnostní nálezy u jmenovaného webu nikdy nezveřejňuju. Vidí je jen ten, kdo měření spustil.
  • Nechcete, abych váš web měřil? Napište mi a doménu vyřadím včetně historie měření. Platí to i preventivně.

// všech 49 kontrol i s vahami

Sloupec „srážka" říká, kolik ze sta bodů dané oblasti nález ukrojí. Čísla se mezi oblastmi nesčítají, každá má vlastní stovku.

Vyhledatelnost 12 kontrol · váha 30 %
KontrolaSrážkaDoloženo
Stránka nemá použitelný titulek

Titulek je ten modrý řádek ve výsledcích vyhledávání. Bez něj si ho Google složí sám z náhodného textu na stránce a málokdy trefí to, čím se firma živí.

−10 zdroj
Chybí popis stránky pro vyhledávače

Popis je text pod odkazem ve vyhledávání. Je to jediná reklama, kterou máte zdarma, a rozhoduje o tom, jestli návštěvník klikne na vás nebo na konkurenci o řádek níž.

−8 zdroj
Stránka neurčuje svou hlavní adresu

Tatáž stránka bývá dostupná na víc adresách — s lomítkem i bez, s parametry z reklamy. Bez canonical je vyhledávač bere jako různé stránky a sílu odkazů dělí mezi ně místo aby ji sečetl.

−8 zdroj
Web žije na dvou adresách zároveň

Adresa s www a bez www jsou pro vyhledávač dva různé weby. Google mezi ně rozdělí návštěvnost i sílu odkazů místo aby je sečetl na jedné, a web se umísťuje hůř, než by musel.

−14 zdroj
Nezabezpečená adresa nevede na zabezpečenou

Když web odpovídá na http i https, existuje každá stránka dvakrát. Návštěvník navíc může skončit na nešifrované verzi, kde je vidět, co odesílá.

−10 zdroj
Chybí soubor robots.txt

Vyhledávač si ho vyžádá jako první soubor na webu. Bez něj nemá kde najít odkaz na mapu stránek a nedá se mu říct, co procházet nemá.

−5 zdroj
Stránka si zakazuje zobrazení ve vyhledávání
strop 30

Stránka říká vyhledávačům, ať ji vynechají. Ve výsledcích se nikdy neobjeví, ať je jakkoli dobrá. Nejčastěji je to pozůstatek z doby, kdy se web teprve stavěl a nikdo to po spuštění nesundal.

−16 zdroj
Chybí mapa stránek

Mapa stránek je seznam všech adres webu. Bez ní musí vyhledávač stránky najít proklikáním a na ty, na které nevede odkaz z hlavní navigace, obvykle nedojde.

−7 zdroj
Web neposílá vyhledávačům strukturované údaje o firmě

Strukturovaná data říkají vyhledávači strojově, že jde o firmu, kde sídlí, kdy má otevřeno a jaký má telefon. Bez nich si to musí dohadovat z textu a v bočním panelu se pak neobjeví nic.

−6 zdroj
Stránka neurčuje, v jakém je jazyce

Bez určení jazyka prohlížeč nenabídne překlad, čtečka pro nevidomé přečte češtinu anglickou výslovností a vyhledávač si musí jazyk hádat z textu.

−3 zdroj
Stránka nemá jeden hlavní nadpis

Hlavní nadpis říká vyhledávači i čtečce, o čem stránka je. Když chybí nebo jich je několik, není z čeho poznat hlavní téma stránky.

−5 zdroj
Když někdo web sdílí na sítích, náhled bude prázdný

Facebook, LinkedIn i Messenger berou náhled z údajů og:. Když chybí, ukáže se holý odkaz bez obrázku a popisu — a na takový nikdo neklikne.

−6 zdroj
Zabezpečení 13 kontrol · váha 25 %
KontrolaSrážkaDoloženo
Web neběží na zabezpečeném spojení
strop 40

Bez https vidí každý na trase, co návštěvník na webu dělá a co odesílá ve formuláři. Prohlížeče takový web označují jako nezabezpečený a Google ho ve výsledcích upozaďuje.

−19 zdroj
Certifikát není platný
strop 40

Prohlížeč před vstupem na web zobrazí červenou stránku s varováním. Drtivá většina návštěvníků se v tu chvíli otočí a odejde ke konkurenci.

−15 zdroj
Certifikát brzy vyprší

Až certifikát vyprší, začne prohlížeč místo webu ukazovat varování. Stane se to obvykle v nejnevhodnější chvíli a majitel se to dozví od zákazníka.

−4 zdroj
Prohlížeč si nepamatuje, že sem má chodit jen zabezpečeně

Bez této hlavičky se první návštěva vždy zkusí přes nezabezpečené http. V tom okamžiku jde spojení odposlechnout a přesměrovat jinam.

−6 zdroj
Prohlížeč si smí domýšlet typ souborů

Bez této hlavičky si prohlížeč hádá, co mu server poslal. Nahraný obrázek, ve kterém je schovaný skript, tak může spustit jako skript.

−4 zdroj
Web jde vložit do cizí stránky

Útočník může web zobrazit ve svém rámu, překrýt ho průhlednou vrstvou a nechat návštěvníka klikat na něco jiného, než si myslí.

−6 zdroj
Web nemá určeno, odkud se smí načítat obsah

Bez pravidel může na stránce běžet skript odkudkoli. Když se někdo dostane do webu nebo do cizí knihovny, kterou web používá, nic mu nebrání spustit vlastní kód.

−7 zdroj
Pravidla pro obsah mají otevřená zadní vrátka

Web sice určuje, odkud se smí načítat obsah, ale nechal si v tom výjimku. S 'unsafe-inline' u skriptů projde jakýkoli kód vepsaný do stránky — což je přesně to, co se při útoku podstrčí. Politika s takovou výjimkou chrání jen zdánlivě.

−6 zdroj
Web prozrazuje cizím stránkám, odkud návštěvník přišel

Při odchodu na cizí web se ve výchozím nastavení posílá celá adresa včetně parametrů. Ty někdy nesou údaje, které cizí stránce nepřísluší.

−2 zdroj
Server hlásí do světa svou verzi

Přesná verze softwaru je pro útočníka první informace, kterou hledá — podle ní vybere, který známý útok zkusit. Neříkat ji nic nestojí.

−3 zdroj
Na webu je veřejně stažitelný soubor, který tam nemá být
strop 20

Zálohy databáze a konfigurační soubory obsahují hesla a údaje zákazníků. Kdokoli si je může stáhnout — stačí uhodnout název, a ty se hádají ze seznamu o pár desítkách položek.

−17 zdroj
Formulář odesílá data nezabezpečeně

Co člověk napíše do formuláře, jde po síti otevřeně. Prohlížeče u takového formuláře zobrazují varování přímo u tlačítka Odeslat.

−7 zdroj
Server domlouvá spojení zastaralým způsobem

Verze TLS 1.0 a 1.1 mají známé slabiny a od roku 2020 je hlavní prohlížeče odmítají. Návštěvník s novým prohlížečem se na takový web nemusí vůbec dostat.

−4 zdroj
Výkon 9 kontrol · váha 20 %
KontrolaSrážkaDoloženo
Stránka si vyžádá hodně samostatných souborů se styly a skripty

Každý soubor je samostatný požadavek na server. Na mobilním připojení stojí i prázdný požadavek desítky milisekund a načtení se natáhne dřív, než se stihne cokoli ukázat.

−14 zdroj
Server neposílá stránku zabalenou

Text se komprimuje na pětinu až desetinu velikosti. Bez komprese se přenáší několikanásobek toho, co by musel, a na mobilních datech je to znát okamžitě.

−14 zdroj
Prohlížeč si nesmí nechat styly a skripty v paměti

Bez pokynu ke kešování stahuje vracející se návštěvník tytéž soubory znovu při každé návštěvě. Druhé otevření webu je pak stejně pomalé jako první.

−10 zdroj
Obrázky jsou ve starých formátech

Formát WebP je při stejné kvalitě zhruba o třetinu menší než JPEG. U webu s fotogalerií to dělá megabajty, které návštěvník na mobilu stahuje zbytečně.

−10 zdroj
Obrázky nemají zadané rozměry
jen upozornění

Bez rozměrů prohlížeč neví, kolik místa má nechat, a při načtení obrázku obsah poskočí. Návštěvník v tu chvíli často klikne na něco jiného, než chtěl.

zdroj
Všechny obrázky se načítají hned
jen upozornění

Obrázky ze spodku stránky se stahují zároveň s tím, co je vidět nahoře, a berou jim přenosovou kapacitu. První obrazovka se tím zdrží.

zdroj
Stránka je na jedno otevření hodně těžká

Každý megabajt navíc je čekání na mobilních datech i účet za přenos. Návštěvníci odcházejí ještě dřív, než se první obrazovka vykreslí.

−14 zdroj
Stránka stahuje hodně řezů písma

Každý řez je samostatný soubor o desítkách až stovkách kilobajtů. Písmo přitom blokuje vykreslení textu, takže než dorazí, kouká návštěvník na prázdno.

−8 zdroj
Než se stránka vůbec ukáže, čeká na načtení souborů

Styly a skripty v hlavičce zastaví vykreslování, dokud se nestáhnou. Návštěvník mezitím kouká na bílou stránku, i když je obsah dávno na cestě.

−12 zdroj
Zákony a soukromí 5 kontrol · váha 10 %
KontrolaSrážkaDoloženo
Písmo se načítá ze serverů Googlu

Při načtení písma odejde IP adresa návštěvníka Googlu do USA bez jeho souhlasu. Zemský soud v Mnichově za to v roce 2022 přiznal odškodné a od té doby to řeší i české weby.

−30 zdroj
Měřicí skript se spouští hned při načtení
jen upozornění

Analytika a reCAPTCHA nasazují cookies a posílají údaje o návštěvníkovi ještě dřív, než stačí cokoli odsouhlasit. Zákon o elektronických komunikacích přitom žádá souhlas předem.

zdroj
K měřicím skriptům nevidíme lištu souhlasu
jen upozornění

Když web nasazuje cookies pro měření, musí si nejdřív říct o souhlas. Bez lišty je to sběr údajů bez právního titulu.

zdroj
Chybí odkaz na zpracování osobních údajů

Každý web s formulářem nebo měřením musí návštěvníkovi říct, co s jeho údaji dělá. Bez toho nemá zpracování oporu a je to první věc, na kterou se při kontrole ptají.

−18 zdroj
Na webu nevidíme identifikační údaje firmy
jen upozornění

Podnikatel musí na svých stránkách uvádět jméno, sídlo a IČO. Kromě zákonné povinnosti je to pro zákazníka první signál, že za webem stojí skutečná firma.

zdroj
Přístupnost 6 kontrol · váha 10 %
KontrolaSrážkaDoloženo
Obrázky nemají popis pro čtečku

Nevidomý návštěvník slyší místo obrázku jen název souboru. Popis navíc čte vyhledávač — bez něj web přichází o pozice ve vyhledávání obrázků.

−23 zdroj
Formulářová pole nemají popisek

Bez popisku čtečka řekne jen „textové pole" a návštěvník neví, co má vyplnit. Nápis uvnitř pole nestačí — po začátku psaní zmizí.

−20 zdroj
Stránka není nastavená pro mobil
strop 50

Bez tohohle jednoho řádku zobrazí mobil stránku jako zmenšenou verzi pro počítač. Návštěvník musí přibližovat a posouvat do stran — a víc než polovina lidí chodí na weby z mobilu.

−28 zdroj
Chybí odkaz na přeskočení menu

Kdo web ovládá klávesnicí — po úrazu ruky, se slabým zrakem, se čtečkou — musí před obsahem projít celé menu. Na každé stránce znovu. Jeden skrytý odkaz na začátku to řeší.

−10 zdroj
Odkazy nejsou srozumitelné mimo kontext
jen upozornění

Čtečka umí přečíst seznam odkazů na stránce. Když je v něm pětkrát „zde", nemá návštěvník podle čeho vybírat. Vyhledávač z takového textu taky nic nevyčte.

zdroj
Nadpisy přeskakují úrovně

Nadpisy tvoří osnovu stránky, podle které se nevidomý návštěvník pohybuje. Když se z <h1> skočí rovnou na <h4>, vznikne v osnově díra a orientace se rozpadne.

−12 zdroj
Doporučené postupy 4 kontrol · váha 5 %
KontrolaSrážkaDoloženo
Webu chybí ikona na záložce

Ikona je to, podle čeho návštěvník najde web mezi dvaceti otevřenými panely a v záložkách. Bez ní je tam prázdný list papíru a web působí nedodělaně.

−25 zdroj
Neexistující stránka se netváří jako neexistující

Když web na chybnou adresu odpoví „vše v pořádku", zaindexuje vyhledávač stovky prázdných stránek. Návštěvník navíc netuší, že se překlikl.

−30 zdroj
Stránka neurčuje kódování textu

Bez určení kódování si ho prohlížeč hádá. Když se netrefí, zobrazí se místo háčků a čárek nesmyslné znaky — a je to první věc, které si návštěvník všimne.

−20 zdroj
Odkazy v navigaci vedou na neexistující stránky

Rozbitý odkaz v hlavním menu je nejrychlejší způsob, jak návštěvníka poslat pryč. Vyhledávač si ho navíc přečte jako signál, že web není udržovaný.

−25 zdroj

Prověřit web