Aus LinuxUser 03/2006

Tote Links finden

Webfehler aufspüren

Jeder komplexere Internet-Auftritt bringt im Verlauf seiner Existenz zunehmend tote Links hervor. Mit Linkchecker spüren Sie Verweise ins Nichts ohne große Umstände auf.

Wer größere Internet-Seiten betreut, kennt das Problem mit den toten Links: Externe Seiten verschwinden im Nirvana, beim Aufrufen der entsprechenden Verweise findet der Browser keine Seite. Das Suchen nach derartigen Fehlern im Gewebe des weltweiten Netzes ist oftmals aufwändig – der Artikel verrät Ihnen, wie Sie mit Linkchecker [1] einfacher auf die Jagd nach „Laufmaschen“ im Netz gehen.

Zur Installation von Linkchecker greifen Sie am besten auf eine vorkompilierte Version zurück. Für RPM-basierte Systeme wie Suse oder Fedora finden Sie ein entsprechendes RPM-Paket der aktuellen Version 3.3 sowie ein Quellcode-Archiv unter [2]. Benutzer eines Debian-Derivats sollten einen Blick auf [3] werfen oder Linkchecker über apt-get install linkchecker installieren.

Einfache Lückensuche

Die Benutzung von Linkchecker erfolgt über die Kommandozeile nach dem Muster linkchecker OptionenTestobjekt, wobei es sich bei Testobjekt entweder um eine lokale oder eine über HTTP respektive FTP erreichbare entfernte Datei handelt. Die Eingabe von linkchecker www.linux-user.de ist möglich, da Linkchecker die URL-Präfixe http:// bzw. ftp:// automatisch ergänzt. Nutzen Sie das Internet über einen Proxy, teilen Sie das dem Lückensucher über die Umgebungsvariablen http_proxy, https_proxy, ftp_proxy und gopher_proxy mit. Wie Sie die Benutzervariablen setzen, hängt von der eingesetzten Shell ab: Unter der Bash-Shell erledigt dies ein export http_proxy="http://localhost:8080", Liebhaber der Tc-Shell verwenden den Befehl setenv http_proxy "http://localhost:8080". Ein Proxy, der auf localhost am Port 8080 lauscht, leitet die Link-Überprüfung ins Internet weiter.

Wie Linkchecker funktioniert, offenbart eine nicht ganz standardkonforme, einfache HTML-Datei namens test.html: Der Aufruf linkchecker test.html ist zunächst nicht sonderlich erfolgreich – der Lückensucher meldet, dass er einen Link geprüft und keinen Fehler gefunden habe (Abbildung 1). In der Testdatei verstecken sich aber tatsächlich drei Links, von denen zwei ins Nirgendwo führen.

Abbildung 1: Linkchecker hat Probleme mit dem Dateisystem. Er ignoriert gleich zwei Fehler und testet nur einen Link.
Abbildung 1: Linkchecker hat Probleme mit dem Dateisystem. Er ignoriert gleich zwei Fehler und testet nur einen Link.

Wird die selbe Datei test.html hingegen von einem Webserver ausgeliefert, spürt Linkchecker die fehlerhaften Links auf (Abbildung 2). Die Dokumentation weist zudem darauf hin, dass die aktuelle Version nicht mit JavaScript kooperiert.

Abbildung 2: Fehler gefunden: Im Zusammenspiel mit einem Webserver findet Linkchecker die Fehler, er prüft – inklusive der Datei "test.html" – vier Links und meldet zwei als defekt.
Abbildung 2: Fehler gefunden: Im Zusammenspiel mit einem Webserver findet Linkchecker die Fehler, er prüft – inklusive der Datei „test.html“ – vier Links und meldet zwei als defekt.

Das richtige Strickmuster

Neben der einfachen Textausgabe erfolgt die Fehlerdiagnose wahlweise auch über die in Tabelle 1 aufgeführten Ausgabeformate. Je nachdem, ob Sie eine Bildschirmdarstellung wünschen oder eine spezielle Ausgabedatei benötigen, wechseln Sie über --output=html bzw. --file-output=html/Dateiname ins HTML-Format. Geben Sie für die Ausgabedatei keinen Dateinamen an, nennt Linkchecker die Datei linkchecker-out und ergänzt sie um den festgelegten Dateityp, zum Beispiel zu linkchecker-out.html. Abbildung 3 zeigt die Browser-Ansicht einer erzeugten Ausgabedatei: Praktisch sind hier vor allem die Links, anhand derer Sie das Ergebnis der Suche gleich noch einmal überprüfen.

Parallel zur Ausgabe in eine Datei erfolgt eine Standardausgabe im Terminal. Soll Linkchecker gänzlich im Hintergrund werkeln, empfiehlt sich die Verwendung der Option -q: Sie unterdrückt die Ausgabe im Terminal. Einige Ausgabeformate wie gml benötigen zusätzlich die Option --verbose, da andernfalls die erzeugten Graphen Lücken enthalten. Linkchecker bezieht auf diese Weise Informationen über funktionierende Links in den Graphen mit ein.

Abbildung 3: Äußerst praktisch ist die Ausgabe des Ergebnisses in einem HTML-Dokument: Die Links in der HTML-Ausgabe nutzen Sie gleich auch zum Prüfen des Ergebnisses.
Abbildung 3: Äußerst praktisch ist die Ausgabe des Ergebnisses in einem HTML-Dokument: Die Links in der HTML-Ausgabe nutzen Sie gleich auch zum Prüfen des Ergebnisses.

Tabelle 1: Ausgabeformate

Schlüsselwort Bedeutung
text Standard-Textausgabe als flacher Text
html Ausgabe als HTML-Code, der auch gleich Links auf die referenzierten Seiten enthält
csv Ausgabe als komma-separierter Text, mit einer URL pro Zeile.
gml Ausgabe als Graph im GML-Format [6]
dot Ausgabe als Graph im .dot-Format [7]
gxml Ausgabe im GraphXML-Format [4]. Anzeigeprogramme gibt es u.a. hier [5]
xml Maschinenlesbar: Die Ausgabe im XML-Format
sql Ausgabe als INSERT-Anweisung in SQL
blacklist Mit dieser Option loggt Linkchecker ausschließlich Informationen über Fehler und schreibt diese in die Datei ~/.linkchecker/blacklist. Das ist sinnvoll für die Automatisierung mit Hilfe von Cron-Jobs.
none keine Ausgabe, sinnvoll für Skripte

Fein-Tuning

Typischerweise bestehen größere Internet-Seiten meist aus zahlreichen miteinander verwobenen Dateien. Linkchecker untersucht – ausgehend von der übergebenen Einstiegsadresse – mittels rekursiver Suche die gesamte Domain. Via linkchecker www.linux-user.de grast das Programm komplett alle Seiten ab, die mit http://www.linux-user.de beginnen.

Die Rekursionstiefe beeinflussen Sie durch die Option -r. Ein linkchecker -r1 www.linux-user.de untersucht die Startseite sowie direkt verlinkte Web-Seiten: Setzen Sie -r2 ein, steigt das Programm eine weitere Ebene hinab. Über die Optionen --no-follow-url=Regex und --ignore-url=Regex nehmen Sie ebenfalls Einfluss auf das automatische Weiterverfolgen des Seitengeflechts: Im ersten Fall analysiert Linkchecker die mit Hilfe des regulären Ausdrucks Regex beschriebenen URLs zwar, bezieht die Unterseiten jedoch nicht ein. Analog dazu geben Sie mit --ignore-url URLs Web-Seiten an, die Linkchecker ignorieren soll.

Das Überprüfen mehrerer Dateien geschieht aus Effizienzgründen weitestgehend parallel: Üblicherweise untersucht Linkchecker bis zu zehn Dateien gleichzeitig, mit der Option -tX ändern Sie die maximale Anzahl an geprüften Links, wobei X für die Anzahl steht. Eine detaillierte, deutschsprachige Liste aller möglichen Optionen erhalten Sie über den Befehl man linkchecker.

Fazit

Mit Linkchecker erhalten Administratoren ein nützliches Tool, um Lücken im Geflecht ihres Internet-Auftritts aufzudecken. Die zahlreichen Ausgabeformate ermöglichen die strukturierte Aufarbeitung gefundener Link-Fehler. Probleme hatte Linkchecker im Test lediglich mit Dateien innerhalb des eigenen Dateisystems. Machtlos ist das Tool auch, wenn der verwendete Webserver anstelle einer gängigen Fehlermeldung eine alternative, aber korrekte Seite liefert.

LinuxUser 03/2006 KAUFEN
EINZELNE AUSGABE Print-Ausgaben Digitale Ausgaben
ABONNEMENTS Print-Abos Digitales Abo
TABLET & SMARTPHONE APPS
Deutschland

Hinterlasse einen Kommentar

  E-Mail Benachrichtigung  
Benachrichtige mich zu: