Ha valaki készít, üzemeltet weboldalt, az nagyon jól ismeri a problémát, amikor egy kép, egy link nem létező dologra mutat. Ilyenkor a látogatók, hiányos vagy nem működő oldalakat fognak találni, ami erősen rombolja a felhasználó élményt. Egy viszonylag nagy, szövevényes, és bonyolult oldalnál ez a tesztelés ember által viszont viszonylag nehézkes. Így valamilyen automatizmust érdemes igénybe vennünk. Természetesen milliónyi tool van erre, ami egy bizonyos algoritmus szerint bejárja a weboldalunk linkjeit, és figyelmeztet, amennyiben hibás linket talál.

Link Checker

Ahogy említettem a múltban több tool-al is próbálkoztam. Viszont vagy elfelejtettem őket rendszeresen használni, vagy nem. Többnyire a lelkesedésemmel a használatuk is elenyészett. Viszont egy command line tool, egyszerűen CRON-ba építhető, így automatikusan lefuthat bizonyos időnként, és ha bármi gond akadna, akkor küld róla egy levelet nekünk.

Először is telepítsük a toolt (ubuntu ill. debian alapú rendszer esetében a következő):

# apt-get install linkchecker

Ezek után használható is a tool.

Fontos, hogy a linkchecker rekurzívan nézi át a weboldalt. Ezt viszont tudja HTTP protokollon keresztül, illetve lokális állományok ellenőrzésével is. Bizonyos helyzetekben a lokális állományok ellenőrzése gyorsabb és hatékonyabb tud lenni. Ezzel nem is terheljük magát a web szerver alkalmazást sem. Amennyiben viszont lokális állományokat ellenőrizhetünk, úgy fontos lehet a jogosultság. Adja magát, hogy root-ként indítsuk el a keresést, mert akkor mindenhez lesz joga a linkchecker-nek. Viszont, ha így teszünk, akkor a következő üzenetbe fogunk botlani:

WARNING MainThread Running as root user; dropping privileges by changing user to nobody.

Ahogy látszik, rootként nem hajlandó futni. Ilyenkor nobody-ként fogja ellenőrizni az állományokat, ami viszont vezethet jogosultsági problémákhoz. Én Ubuntu-t használok, ott pedig a web szerver a www-data felhasználóként, és csoportként fut. Így a www-data birtokolja a webes állományokat. Ezért a tökéletes futás érdekében érdemes a www-data-ként futtatni az ellenőrzéseket. Sajnos a linkchecker-nek nem találtam olyan kapcsolóját (bár elvileg lennie kéne egy –allow-root nek, de az én 7.4-es verziómban nem volt), amivel definiálni lehetne, milyen userként fusson, root-ként meghívott process.

# su – www-data
> linkchecker /www/johncast

linkchecker1

Ahogy látszik minden féle kapcsoló nélkül hívtam meg a parancsot, megadva a http://johncast.xorp.hu helyi könyvtárát. Jelenleg két hibát fedezett fel. Mindkettő warning besorolású.

Amennyiben nem akarjuk látni, illetve kapni a leveleket a Warning üzenetekről, úgy érdemes a következő formában meghívni a parancsot:

> linkchecker –no-warnings /www/johncast

linkchecker2

Ha nem szeretnénk a folyamat közben íródó sorokat se látni, ami hasznos ha report-ot akarunk csak kérni, akkor használjuk a következő kapcsolót is:

> linkchecker –no-status –no-warnings /www/johncast

linkchecker3

Ahogy látszik, alap futásnál, csak a hibák logolódnak le. Viszont ha szeretnénk a jó állományokról is kapni visszajelzést, akkor a verbose kapcsolót kell használnunk.

> linkchecker -v /www/johncast

linkchecker4

Ennél viszont még többet is tud a tool. Mert a HTML kódokat is tudja ellenőrizni az állományokon belül. Tehát nem csak a linkeket, hanem a meglévő kódok helyességét. Ehhez használjuk a következő kapcsolókat:

–check-html Check syntax of HTML URLs with local library (HTML tidy).
–check-html-w3 Check syntax of HTML URLs with W3C online validator.
–check-css Check syntax of CSS URLs with local library (cssutils).
–check-css-w3 Check syntax of CSS URLs with W3C online validator.

linkchecker5

A sima check helyi ellenőrző feltételek használ, a w3 viszont a W3 online validator szolgáltatását használja fel. Külön kell a CSS és külön a HTML ellenőrzést megadni kapcsolóként.

SŐT! Amennyiben feltelepítjük az ingyenes CLAMAV antivírus keretrendszert, akkor keresésnél azt is beállíthatjuk, hogy víruskeresővel is ellenőrizze az állományainkat.

–scan-virus

Természetesen kiválaszthatjuk a megjelenített report típusát is. A következő formátumok támogatottak:

text Standard text logger, logging URLs in keyword: argument fashion.
html Log URLs in keyword: argument fashion, formatted as HTML. Additionally has links to the referenced pages. Invalid URLs have HTML and CSS syntax check links appended.
csv Log check result in CSV format with one URL per line.
gml Log parent-child relations between linked URLs as a GML sitemap graph.
dot Log parent-child relations between linked URLs as a DOT sitemap graph.
gxml Log check result as a GraphXML sitemap graph.
xml Log check result as machine-readable XML.
sql Log check result as SQL script with INSERT commands. An example script to create the initial SQL table is included as create.sql.

A –output= opció után tudjuk beállítani, hogy futás közben milyen formátumban jelenítse meg az információkat a terminál ablakban. Amennyiben csak file-ba akarjuk eltárolni a kimenetet, abban az esetben érdemes a –output=none opciót használni. Amennyiben file-ba akarjuk eltárolni a kimenetet, abban az esetben a –file-output=FORMÁTUM/FILE_PATH kell használni.

> linkchecker –output=none –file-output=html/output.html /www/johncast

linkchecker6

Természetesen ennél sokkal sokkal több kapcsoló használható fel. Ezáltal pedig szinte minden féle szűrés, és ellenőrzés beállítható. Én próbáltam a fontosabb, és érdekesebb dolgokat kiemelni belőle.