/To see this documentation in English, go to Benutzer:Frog23/Dead Link Finder/en.

Die Dokumentation zu der Greasemonkey-Variante (Vorgängerversion) zu diesem Skript befindet sich unter Benutzer:Frog23/Dead Link Finder (Greasemonkey Script).

Grundidee Bearbeiten

 
Ein defekter Link wurde markiert

Tote Links zu externen Seiten sind etwas sehr ärgerliches. Meist fallen sie nur auf, wenn man die Quelle nutzen oder überprüfen wollte und deswegen auf den Link klickt. Um diesen Missstand zu beheben habe ich ein Script geschrieben, welches automatisch alle externen Links von der gerade geladenen Wiki-Seite überprüfen kann und dann anzeigt, ob und welche der Links nicht mehr funktionieren. Da davon auszugehen ist, dass man sich sowieso gerade mit dem Thema des Artikels auseinander setzt, ist es dann nur eine geringe Hemmschwelle einen fehlerhaften Link zu beheben. Die Korrektur eines Links dauert meist nur einige Minuten und ist wichtig für die Qualität eines Artikels.

Das Script wird über die eigene JavaScript-Seite der Skin eingebunden und konfiguriert.

Installation Bearbeiten

Es gibt 3 wichtige Hinweise, die jede(r) beachten sollte, bevor man das Script installiert:

  • Beta-Test: Der Dead-Link-Finder ist momentan noch in der Beta-Phase. Es funktioniert zwar recht zuverlässig, jedoch kann es zu gelegentlich zu kleinen Fehlern oder merkwürdigem Verhalten kommen. Jedoch sollte es sich dabei lediglich um Fehler in der Darstellung der Seite handeln. Das Script hat keine Möglichkeit Artikel zu bearbeiten oder den Browser zur Fehlfunktion zu bringen. Falls du glaubst, dass sich das Script komisch verhält, so melde dies Bitte auf der Diskussionsseite zu diesem Artikel.
  • Browser-Kompatiblität: Das Script funktioniert nur in modernen Browsern, die bereits den HTML5-Standard unterstützen, nicht jedoch mit dem Internet Explorer.
  • Privatsphäre: Standardmäßig läuft das Script nur bei Bedarf, das heißt, der Benutzer muss auf einen Link klicken, damit alle externen Links auf der aktuellen Seite überprüft werden. Es ist jedoch möglich, die Einstellungen so zu ändern, dass das Script automatisch auf jeder aufgerufenen Seite läuft (Mehr dazu in dem Absatz Operationsmodi). In beiden Fällen (aber hauptsächlich wenn die Links automatisch geprüft werden), könnten einige Bedenken bezüglich der Privatsphäre auftreten.
    Damit durch dieses Script auf andere Internetseiten nicht zu sehr viel Traffic entsteht, wird jeder Link nur einmal am Tag überprüft und dann das Ergebnis gespeichert. Soll der gleiche Link dann nach kurzer Zeit noch einmal überprüft werden, so wird nur das gespeicherte Ergebnis zurück geliefert. Darüber hinaus werden alle Anfragen mit angefordertem Link, Uhrzeit, zugehörigem Wikipedia-Artikel und Ergebnis gespeichert. Ich habe vor eine Seite zu erstellen, auf der man sich die zuletzt gefundenen toten Links ausgeben lassen kann, denn vermutlich werden nicht alle gefundenen toten Link auch gleich korrigiert. Außerdem kann ich diese gespeicherten Anfragen nutzen, um das Script weiter zu verbessern oder später einmal Statistiken zu erstellen. Es werden zu keinem Zeitpunkt personenbezogene Daten gespeichert. Jedoch kann es sein, dass es zum Anfang, bei einem kleinen Kreis von Beta-Testern möglich ist, einzelne Links auf konkrete Personen zu beziehen. Wenn das Script so eingestellt ist, dass es automatisch läuft, so werden bei jeder Seite, die man auf der Wikipedia besucht und die externe Links hat, diese Links an den Server geschickt und dort gespeichert. Dadurch könnte man sehen, welche Seiten ein Benutzer besucht hat und könnte man im Zweifelsfall so Rückschlüsse auf das Privatleben ziehen. An dieser Stelle sei noch einmal darauf hingewiesen: später soll nur eine Liste von entdeckten tote Links für die Öffentlichkeit zugänglich gemacht werden. Nur ich als Entwickler des Scripts habe vollen Zugriff auf alle gespeicherten Informationen und ich werde diese NICHT nutzen, um irgendwelche Rückschlüsse auf Personen zu ziehen. Dennoch wollte ich das an dieser Stelle noch einmal erwähnt haben.

Um das Script für den eigenen Wikipedia-Account hinzuzufügen, muss man die folgende Zeile in die JavaScript-Seite der Skin einfügen:

mw.loader.load("https://deadlinkfinder.toolforge.org/script.js");

Darüber hinaus gibt es noch mehrere Möglichkeiten, das Script den eigenen Bedürfnissen anzupassen. Mehr dazu in dem Absatz Einstellungen.

Funktionsweise Bearbeiten

Operationsmodi Bearbeiten

Standardmäßig läuft das Skript nur bei Bedarf. Das heißt, um alle externen Links auf einer bestimmten Seite zu überprüfen, muss der Benutzer den Link "Links überprüfen" im Werkzeug-Menü anklicken.

 
Die Links zum Starten des Skripts

Es ist auch möglich, das Skript automatisch auf jeder Seite laufen zu lassen, die der Benutzer besucht. Dazu muss der Benutzer den Link "immer Links überprüfen" klicken, der ebenfalls im Werkzeug-Menü angezeigt wird. Dieser automatische Modus lässt sich jederzeit wieder stoppen, indem man auf den Link "keine Links mehr überprüfen" klickt, der im Werkzeug-Menü angezeigt wird, sobald das automatische Überprüfen der Links aktiviert ist. Die Einstellung über diesen Modus wird in einem Cookie gespeichert, daher müssen Cookies aktiviert sein, um diese Option zu nutzen. Der Cookie verfällt nach 30 Tagen. Für Leute, die ihre Cookies regelmäßig löschen, oder die sich durch ablaufende Cookies nicht davon abhalten lassen wollen, stets automatisch alle externen Links zu überprüfen, gibt es noch eine weitere Option das Skript immer laufen zu lassen. Dafür muss man folgende Zeile in die JavaScript-Seite der Skin einfügen:

var deadLinkFinder_runAlways = true;

Beide der hier beschriebenen Modi des automatischen Überprüfen von Links unterliegen trotzdem noch dem Namensraum-Filter. Das heißt standardmäßig werden nur Links auf Seiten im Artikelnamensraum überprüft. In allen anderen Namensräumen wird lediglich ein Link angezeigt, um die aktuelle Seite bei Bedarf zu Überprüfen. Weitere Informationen, wie man die Einstellungen des Namensraum-Filters anpasst, gibt es in dem Absatz Namensraum-Filter

Überprüfung, ob ein Link tot ist Bearbeiten

Nachdem eine Wiki-Seite geladen wurde, wird das Script ausgeführt. Es nimmt alle externen Links, die in diesem Artikel vorhanden sind und überprüft jeden einzelnen. Jedoch gibt es bei JavaScript aus Sicherheitsgründen die Einschränkung, dass es nur mit dem Server kommunizieren darf, von dem es selber geladen wurde (Same-Origin-Policy). In HTML5 gibt es jedoch eine Ausnahme zu dieser Regel: Ein Script darf mit einem fremden Surfer kommunizieren, falls dieser es explizit zulässt (Cross-Origin Resource Sharing). Statt mit dem Server des externen Links direkt zu kommunizieren, fragt das Script statt dessen ein spezielles Tool auf dem Wikimedia Tool Labs Server. Dieses Tool heißt HeaderProxy und erlaubt den Zugriff von allen Wikimedia-Projekten. Es prüft für das Script den Link, denn es darf den angeforderten Link direkt aufrufen. Es baut also eine Verbindung zu dem entsprechenden Server auf und fragt nach der Seite. Dabei wird nicht die ganze Seite geladen, sondern die Verbindung wird bereits beendet, nachdem der HTTP-Header geladen wurde. Der HeaderProxy überprüft dann den übermittelten HTTP-Statuscode. Ist dieser 200 (OK), ist der Link gültig. Ist der Code im 300er Bereich, bedeutet das, dass die URL eine Umleitung ist und der Proxy folgt dieser, falls ein entsprechender neuer Link angegeben ist, und prüft dann den neuen Link. In allen anderen Fällen bedeutet es, dass der Link tot ist. Der HeaderProxy schickt den Statuscode und dessen entsprechenden Bezeichnung zurück zum Script. Außerdem wird der Link, die zugehörige Wiki-Seite, das Ergebnis und das Datum in der Datenbank des Tool Labs Servers gespeichert. Sollte innerhalb der nächsten 24 Stunden dieser Link erneut geprüft werden, so wird das Ergebnis aus der Datenbank zurück gegeben, um den fremden Server nicht unnötig zu belasten. Außerdem dienen diese gespeicherten Daten später der statistischen Auswertung und der Optimierung des Scripts.

Markierung der toten Links im Artikel Bearbeiten

 
es wurden 2 defekte Links gefunden

Falls es einen toten Link gibt, so zeigt das Script dies direkt neben dem Link durch ein kleines Icon mit einem Warndreieck an. Außerdem wird noch der Status-Code daneben geschrieben. Die Bezeichnung des Fehlercodes kann man im Tooltipp sehen, indem man mit der Maus über dem Icon oder dem Code kurz anhält. Die Bezeichnung wird direkt von dem Server übernommen, daher kommt es gelegentlich vor, dass die Bezeichnungen nicht identisch sind, mit denen in den entsprechenden Spezifikationen (etwa durch Übersetzungen oder andere Formulierungen).

Befinden sich ein oder mehrere tote Links auf einer Seite erscheint außerdem ein größeres Warndreieck am unteren rechten Rand des Browserfensters. Daneben wird die Anzahl der bisher gefunden toten Links angezeigt. Ist diese Zahl rot, so heißt das, dass noch nicht alle Links geprüft wurden. Ist diese Zahl schwarz, so ist die Überprüfung der Links abgeschlossen. Mit einem Klick auf das Warndreieck-Symbol springt man erst zum ersten, danach zu jedem weiteren toten Link, der gefunden wurde. Mit dem kleinen X neben dem Warndreieck kann man die kleine Infobox schließen.

Einstellungen Bearbeiten

Das Script ist so gestaltet, dass es den Benutzer möglichst wenig in der normalen Benutzung der Wikipedia stört. Lediglich wenn tote Links gefunden werden, werden diese angezeigt. Jedoch gibt es mehrere Möglichkeiten das Script den eigenen Bedürfnissen entsprechend anzupassen.

 
Das Warte-Symbol. Das Script läuft und es wurden noch keine toten Links gefunden.

Warte-Symbol Bearbeiten

Damit man erkennen kann, ob das Script noch am Prüfen der Links ist, gibt es die Möglichkeit sich ein kleines Warte-Icon anzeigen zu lassen. Dafür muss man folgende Zeile ebenfalls in die JavaScript-Seite der Skin einfügen:

var deadLinkFinder_showWaitingIcon = true;

OK-Symbol Bearbeiten

 
Alles OK. Es gibt keine defekten Links.

Alternativ oder ergänzend zu dem Warte-Symbol kann man sich auch anzeigen lassen, wenn die Überprüfung aller Links beendet wurde und keine toten Links gefunden wurden. Dafür muss man die folgende Zeile in die JavaScript-Seite der Skin einfügen:

var deadLinkFinder_showOk = true;

Standardmäßig wird das OK-Symbol nach 3 Sekunden langsam ausgeblendet. Mit der Zeile:

var deadLinkFinder_fadeOk = false;

bleibt es jedoch sichtbar, bis man darauf klickt und es somit verschwindet.

Browse-Mode Bearbeiten

 
Der Link um den Browse-Mode zu starten.

Man kann das Script auch so laufen lassen, dass es eine Seite automatisch prüft und falls es keine toten Links auf dieser Seite gibt, springt es weiter zu einer zufälligen Seite. Erst wenn es einen toten Link findet, hört es auf. Dieser Modus ist Browse-Mode genannt und um ihn nutzen zu können, muss man die folgende Zeile in die JavaScript-Seite der Skin einfügen:

var deadLinkFinder_showBrowsemodeLink = true;

Damit wird der Link "Browsemode starten" zu der Werkzeugsleiste hinzugefügt. Klickt man diesen Link, so wird der Browsemode gestartet und der Link wird zu "Browsemode anhalten". Damit kann man den Browsemode auch anhalten, wenn noch kein toter Link gefunden wurde.

Damit der Browse-Mode funktioniert, müssen Cookies unterstützt werden.

Sprache Bearbeiten

Die wenigen Texte, die durch den DeadLinkFinder ausgegeben werden, lassen sich in mehreren Sprachen ausgeben. Standardmäßig wird die Sprache der Wiki-Oberfläche verwendet. Jedoch kann man auch explizit eine andere Sprache für den DeadLinkFinder definieren. Dafür muss man folgende Zeile ebenfalls in die JavaScript-Seite der Skin einfügen und die Sprache anpassen:

var deadLinkFinder_language = 'de';

Sollte die angegebene Sprache nicht vorhanden sein, wird die Sprache der Wiki-Oberfläche verwendet und sollte auch diese Sprache nicht vorhanden sein, wird Englisch verwendet.

Momentan sind die Sprachen Deutsch (de) und Englisch (en) implementiert.

Namensraum-Filter Bearbeiten

Der Namensraum-Filter ist nur von Bedeutung, wenn eine der beiden Optionen der automatischen Linküberprüfung ausgewählt ist (siehe Abschnitt Operationsmodi). Standardmäßig wird das automatische Überprüfen nur für Seiten im Artikel-Namensraum (dem Standard-Namensraum) durchgeführt. Es ist jedoch möglich, die Einstellungen des Filters zu ändern und explizit anzugeben, in welchen Namensräumen die automatische Überprüfung statt finden soll. Dafür muss man folgende Zeile ebenfalls in die JavaScript-Seite der Skin einfügen und die Nummern der Namensräume, die man überprüfen lassen möchte, anpassen oder hinzufügen:

var deadLinkFinder_namespaceFilter = [0,2];

(In diesem Beispiel ist der Artikel-Namensraum (0) und der Benutzer-Namensraum (2) aktiviert.) Die definierten Namensräume können bei verschiedenen Wiki-Installationen variieren.

Link zur Weblinksuche Bearbeiten

Es gibt die Möglichkeit das Script so zu ändern, dass das Warnungs-Symbol bei toten Links automatisch auf die Weblink-Suche verlinkt, damit man überprüfen kann, ob es noch anderen Seiten gibt, die auf diese Seite/diesen Server verlinken. Dafür muss man folgende Zeile ebenfalls in die JavaScript-Seite der Skin einfügen:

var deadLinkFinder_linkToLinkSearch = true;

Danke an Federstrich für die Idee für dieses Feature.

OK-Symbole für Einzellinks Bearbeiten

 
Ein einzelner Link wurde erfolgreich überprüft.

Es gibt die Möglichkeit das Script so zu ändern, dass bei jedem einzelnen Link angezeigt wird, ob dieser bereits erfolgreich überprüft wurde. Dafür wird eine kleine Version des OK-Symbol neben dem Link angezeigt. Um dieses Feature zu nutzen, muss man folgende Zeile ebenfalls in die JavaScript-Seite der Skin einfügen:

var deadLinkFinder_showIndividualOK = true;

Danke an Federstrich für die Idee für dieses Feature.

Weiterleitungen anzeigen Bearbeiten

 
Ein Link hat einer Weiterleitung.

Es gibt die Möglichkeit das Script so zu ändern, dass bei jedem Link angezeigt wird, ob der Link auf eine andere URL weitergeleitet wird. Normalerweise folgt der HeaderProxy solchen Weiterleitungen automatisch, in seltenen Fällen können solche Weiterleitungen jedoch auch ein Hinweis auf einen Fehler sein. Ist diese Option eingeschaltet, so wird ein kleiner Pfeil neben dem Link gezeigt. Der Pfeil wird zusätzlich zu einem eventuellen Warnungssymbol oder optionalem OK-Symbol für den Link angezeigt. Um sich Weiterleitungen anzeigen zu lassen, muss man folgende Zeile ebenfalls in die JavaScript-Seite der Skin einfügen: Dafür muss man folgende Zeile ebenfalls in die JavaScript-Seite der Skin einfügen:

var deadLinkFinder_showRedirects = true;

Das automatische Ergänzen eines zusätzlichen Schrägstrichs am Ende der URL, wird nicht als Weiterleitung bewertet, auch wenn es sich technisch gesehen um eine handelt (z.B. http://de.wikipedia.org -> http://de.wikipedia.org/). Danke an Federstrich für die Idee für dieses Feature.


Fehlerbehebung / FAQ Bearbeiten

Was bedeuten die Zahlen neben den Warnungs-Zeichen Bearbeiten

Wenn neben dem Warnungs-Zeichen eine dreistellige Zahl gezeigt wird, so handelt es sich um den HTTP-Statuscode, den der Server zurückgegeben hat. Ist die erste Stelle jedoch ein X, so handelt es sich um eine Fehlermeldung, die direkt von dem Script oder dem HeaderProxy kommt. Hier sind die Erklärungen der möglichen Codes:

  • XX1 Could Not Reach Server: Dieser Fehler tritt auf, wenn der ganze Server nicht erreicht werden kann. Das kann manchmal nur ein temporäres Problem sein, wenn der fremde Server z.B. gerade überlastet ist.
  • XX2 No Link: Diese Fehlermeldung wird gezeigt, wenn dem Tool kein Link übergeben wurde. Diese Fehlermeldung sollte von dem Skript niemals angezeigt werden.
  • XX3 Unsupported Protocol: Dieser Fehler kommt, wenn Links gefunden werden, deren Protokoll vom HeaderProxy nicht unterstützt wird. Momentan werden nur http:// und https:// -Links unterstützt. Bei anderen Links, wie etwa mailto: oder irc:// wird diese Meldung zurückgegeben. In den Standard-Einstellungen des Scripts werden diese Fehlermeldungen jedoch nicht angezeigt.
  • XX4 Unknown Error: Diese Fehlermeldung bedeutet, dass es einen Fehler im HeaderProxy gab oder die Seite zu lange braucht um zu antworten (ähnlich wie XX1). Dieser Fehler tritt auch auf, wenn der Link auf eine verschlüsselte Seite zeigt, die jedoch Probleme mit den SSL-Zertifikaten hat.
  • XX5 Unknown Script Error: Diese Fehlermeldung bedeutet, dass es einen Fehler in dem Script gab.

Falls die Fehler XX2, XX4 oder XX5 angezeigt werden, bitte ich darum, dies auf der Diskussionsseite zu diesem Artikel zu melden.

Funktioniert das Script auch für andere Sprachen / andere Wikimedia-Projekte? Bearbeiten

Ja, das Script funktioniert mit allen Sprachen und Projekten der Wikimedia. Allerdings betreibe und bewerbe ich es erst einmal nur in der deutschsprachigen Wikipedia, um es erst einmal in einem kontrollierten Rahmen testen zu können. Später möchte ich es auch in anderen Sprachen und Projekten bewerben.

Wie werde ich über Neuerungen oder Änderungen an dem Skript informiert? Bearbeiten

Ich werde alle wichtigen Informationen zu Änderungen und Neuerungen am Dead Link Finder auf dieser Seite veröffentlichen: Benutzer:Frog23/Dead_Link_Finder/Updates. Wer also diese Seite zu einer Beobachtungsliste hinzufügt, ist stets auf dem Laufenden.

Wie kann ich bei der Weiterentwicklung dieses Skripts helfen? Bearbeiten

Zunächst einmal kann jeder helfen, indem man das Skript bei sich in der Skin installiert, es eine Weile benutzt und dann auf der Diskussionsseite zu diesem Artikel Feedback gibt, was an dem Skript gut läuft und was verbessert werden kann. Dies ist besonders wichtig, wenn sich das Skript komisch oder unerwartet verhält. Bei einer solchen Fehlermeldung bitte stets angeben, auf welcher Seite man war (am besten als Perma-Link zu der konkreten Version), bei welchem Link der Fehler aufgetreten ist und welchen Browser (mit Versionsnummer) und welche Skin man benutzt.

Darüber hinaus, kann man gern auch anderen aktiven Wikipedianern davon erzählen und sie überzeugen, es ebenfalls zu benutzen.

Längerfristig wäre es gut, wenn sowohl das Script, als auch die entsprechenden Dokumentationsseiten in mehrere Sprachen übersetzt werden und dann auch in anderen Sprachen und Projekten beworben werden. Doch damit würde ich noch ein bisschen warten wollen.

Wer sich mit JavaScript und dem Internet Explorer auskennt kann sich gern um die IE-Kompatibilität des Skriptes kümmern.

Wer sich mit JavaScript, PHP und/oder HTML auskennt und direkt an dem Script mitarbeiten möchte, kann mich gern direkt kontaktieren.

Welche weiteren Features sind geplant Bearbeiten

Ich habe noch einige Kleinigkeiten angedacht, die ich implementieren will. Wirklich erwähnenswert sind nur folgende:

  • die bereits erwähnte Seite welche die zuletzt gefundenen toten Links anzeigt, mit Pagination, Filtermöglichkeiten uvm.
  • Unterstützung für den Internet Explorer

Ist der Quellcode verfügbar und wenn ja, unter welcher Lizenz? Bearbeiten

Der Quellcode für das Script als solches ist verfügbar (einfach in die Datei http://tools.wmflabs.org/deadlinkfinder/script.js schauen) und ist unter der GPL-3 veröffentlicht. Den Quellcode für den HeaderProxy werde ich noch veröffentlichen (dann ebenfalls unter der GPL-3), jedoch muss ich vorher noch einige Änderungen vornehmen. Solltest du den Code für dein persönliches Wiki brauchen, dann kontaktiere mich einfach auf meiner Diskussionsseite.

Bekannte Probleme Bearbeiten

Hier sind einige bekannte Probleme, die korrigiert werden sollten, was jedoch noch etwas dauern kann.

  • Domains mit Umlauten und anderen Sonderzeichen können nicht überprüft werden und der Fehlercode XX1 wird zurück gegeben
  • Selten kommt es vor, dass das Script sich aufhängt und nicht mehr weiter sucht. Falls so ein Fall auftritt bitte auf der Diskussionsseite melden.
  • Falls verschlüsselte Seiten (https://-Links) Probleme mit den SSL-Zertifikaten haben, können die Links nicht geprüft werden und der Fehlercode XX4 wird zurückgegeben

Sonstiges Bearbeiten

Ein häufiger Grund für tote Links ist, wenn eine neue Version einer Internetseite gestartet wird. Häufig sind die alten Inhalte dann noch vorhanden, jedoch nicht mehr unter den alten URLs. Oft gibt es dann auf solche Seiten auch mehr als einen Link von der Wikipedia aus. Um andere Links zu finden, die von einer solchen Änderung betroffen sind, kannst du die Spezialseite Weblink-Suche benutzen.