So finden Sie fehlerhafte Links auf Ihrer Website mit Wget unter Debian 7

Einführung

Wie oft haben Sie auf einen HTML-Link auf einer Webseite geklickt, um den Fehler 404 Not Found zu erhalten? Es gibt fehlerhafte Links, weil Webseiten mit der Zeit manchmal verschoben oder gelöscht werden. Es ist die Aufgabe des Webmasters, diese defekten Links zu finden, bevor es die menschlichen Webbesucher oder die Suchmaschinenroboter tun. Verzögerungen bei der Behebung des Problems führen zu einer schlechten Benutzererfahrung und möglichen Nachteilen für das Ranking von Suchmaschinenseiten.

Wenn Ihre Website mehr als ein paar Seiten enthält, ist es zu arbeitsintensiv, jeden einzelnen Link manuell zu überprüfen. Es gibt jedoch zahlreiche Tools, die diese Aufgabe automatisieren. Sie können webbasierte Apps verwenden, wie sie von Google Webmaster Tools und dem World Wide Web Consortium (W3C) bereitgestellt werden. In der Regel fehlen ihnen jedoch erweiterte Funktionen. Wenn Sie WordPress ausführen, könnten Sie ein Plugin verwenden, aber einige gemeinsam genutzte Webhosting-Unternehmen verbieten sie, da sie auf demselben Server wie die Website ausgeführt werden und die Linkprüfung ressourcenintensiv ist.

Eine andere Möglichkeit ist die Verwendung eines Linux-basierten Programms auf einem separaten Computer. Dazu gehören allgemeine Web-Crawler, die auch defekte Links (wie z. B. "+ wget ") und benutzerdefinierte Link-Checker (wie z. B. " linkchecker " und " klinkstatus +") aufdecken. Sie sind in hohem Maße anpassbar und minimieren negative Auswirkungen auf die Reaktionszeit Ihrer Zielwebsite.

In diesem Tutorial wird erklärt, wie Sie mit "+ wget +" alle defekten Links auf einer Website finden, damit Sie sie korrigieren können.

Voraussetzungen

Um diesem Tutorial zu folgen, benötigen Sie:

  • Zwei Debian 7-Tröpfchen, eine generische Maschine, auf der + wget + (* generic-1 ) ausgeführt werden kann, und eine, auf der Ihre Website gehostet wird ( webserver-1 *).

  • Ein sudo-Benutzer ohne Rootberechtigung auf * generic-1 * und * webserver-1 *. Click here für Anweisungen.

  • * webserver-1 * muss den LAMP-Stack installiert haben. Klicken Sie hier, um Anweisungen zu erhalten.

  • Optional kann der Webserver einen eigenen registrierten Domainnamen haben. Wenn ja, verwenden Sie Ihren Domainnamen, wo immer Sie ++ sehen. Click here für Anweisungen.

Obwohl dieses Tutorial für Debian 7 geschrieben wurde, sollten die + wget + - Beispiele auch auf anderen modernen Linux-Distributionen laufen. Möglicherweise müssen Sie + wget + auf anderen Distributionen installieren, in denen es nicht standardmäßig enthalten ist.

Schritt 1 - Erstellen einer Beispielwebseite

Zunächst fügen wir eine Beispielwebseite mit mehreren fehlenden Links hinzu.

Melden Sie sich bei * webserver-1 * an. Öffnen Sie eine neue Datei mit dem Namen "+ spider demo.html", um sie mit "+ nano +" oder Ihrem bevorzugten Texteditor zu bearbeiten.

sudo nano /var/www/spiderdemo.html

Fügen Sie Folgendes in die Datei ein. Dies ist eine sehr einfache Webseite, die zwei fehlerhafte Links enthält, einen internen (fügen Sie die IP-Adresse Ihres Servers hinzu, wo sie unten hervorgehoben ist) und einen externen.

<html>
<head> <title>Hello World!</title> </head>
<body>

<p>
<a href="http:///badlink1">Internal missing link</a>.
<a href="https://www.digitalocean.com/thisdoesntexist">External missing link</a>.
</p>

</body>
</html>

Speichern und schließen Sie die Datei.

Ändern Sie als Nächstes den Dateieigentümer und die Gruppe von "+ spiders demo.html" in den Standard-Webserver-Benutzer "+ www-data +".

sudo chown www-data:www-data /var/www/spiderdemo.html

Ändern Sie abschließend die Dateiberechtigungen der neuen HTML-Datei.

sudo chmod 664  /var/www/spiderdemo.html

Sie können jetzt die Beispielseite unter + http: /// spiderdemon.html sehen.

Schritt 2 - Wget ausführen

+ wget + ist ein Allzweck-Website-Downloader, der auch als Webcrawler verwendet werden kann. In diesem Schritt konfigurieren wir "+ wget +", um zu melden, ob jeder Link auf eine vorhandene Seite verweist oder beschädigt ist, ohne die Seite herunterzuladen.

  • Hinweis: * Überprüfen Sie nur Links auf einer Website, die Sie besitzen. Die Überprüfung von Links auf einer Website ist mit erheblichem Rechenaufwand verbunden, sodass diese Aktivitäten möglicherweise als Spam interpretiert werden.

Melden Sie sich bei * generic-1 * an und führen Sie den folgenden Befehl + wget + aus. Erläuterungen zu jeder Flagge finden Sie unten. Sie können diesen Befehl für Ihren Anwendungsfall ändern.

wget --spider -r -nd -nv -H -l 1 -w 2 -o run1.log  http:///spiderdemo.html

Die folgenden grundlegenden Flags werden benötigt:

  • + - spider verhindert, dass` + wget` die Seite herunterlädt.

  • + -r + bewirkt, dass + wget + jedem Link auf der Seite rekursiv folgt.

  • + -nd +, kurz für + - no-directorys +, verhindert, dass + wget + eine Hierarchie von Verzeichnissen auf Ihrem Server erstellt (auch wenn es nur für Spider konfiguriert ist).

  • + -nv +, kurz für + - no-verbose +, verhindert, dass + wget + zusätzliche Informationen ausgibt, die für die Identifizierung defekter Links nicht erforderlich sind.

Die folgenden optionalen Parameter können Sie zum Anpassen Ihrer Suche verwenden:

  • + -H +, kurz für + - span-hosts +, bewirkt, dass + wget + zu anderen Subdomains und Domains als der primären crawlt (d. H. externe Seiten).

  • "+ -l 1 " ist die Abkürzung für " - level ". Standardmäßig kriecht ` wget +` bis zu fünf Ebenen tief von der ursprünglichen URL, aber hier setzen wir es auf eins. Je nach Organisation Ihrer Website müssen Sie möglicherweise mit diesem Parameter spielen.

  • + -w 2 +, kurz für + - wait +, weist + wget + an, zwischen den Anforderungen 2 Sekunden zu warten, um eine Bombardierung des Servers zu vermeiden und die Auswirkungen auf die Leistung zu minimieren.

  • + -o run1.log + speichert die Ausgabe von + wget + in eine Datei mit dem Namen + run1.log +, anstatt sie in Ihrem Terminal anzuzeigen.

Nachdem Sie den obigen Befehl + wget + ausgeführt haben, extrahieren Sie die defekten Links aus der Ausgabedatei mit dem folgenden Befehl.

grep -B1 'broken link!' run1.log

Der Parameter "+ -B1 " gibt an, dass " wget " für jede übereinstimmende Zeile eine weitere Zeile des führenden Kontexts vor der übereinstimmenden Zeile anzeigt. Diese vorhergehende Zeile enthält die URL des fehlerhaften Links. Unten sehen Sie eine Beispielausgabe des obigen Befehls " grep +".

http:///badlink1:
Remote file does not exist -- broken link!!!
https://www.digitalocean.com/thisdoesntexist:
Remote file does not exist -- broken link!!!

Schritt 3 - Referrer URLs finden

In Schritt 2 werden die fehlerhaften Links gemeldet, die verweisenden Webseiten, d. H. Die Seiten auf Ihrer Website, die diese Links enthalten, werden jedoch nicht identifiziert. In diesem Schritt finden wir die Referrer-Webseiten.

Eine bequeme Möglichkeit, die Referrer-URL zu ermitteln, besteht darin, das Zugriffsprotokoll des Webservers zu überprüfen. Melden Sie sich bei * webserver-1 * an und durchsuchen Sie die Apache-Protokolle nach defekten Links.

sudo grep Wget /var/log/apache2/access.log | grep "HEAD "

Das erste "+ grep " im obigen Befehl findet alle Zugriffsanforderungen von " wget " an den Webserver. Jede Zugriffsanforderung enthält die Zeichenfolge _User Agent_, die den Software-Agenten angibt, der für die Generierung der Webanforderung verantwortlich ist. Die User Agent * -Kennung für " wget " lautet " Wget / 1.13.4 (linux-gnu) +".

Das zweite + grep + sucht nach der Teil-URL des defekten Links (+ / badlink1 +). Die teilweise verwendete URL ist der Teil der URL, der der Domain folgt.

Die Beispielausgabe der Befehlskette "+ grep +" lautet wie folgt:

111.111.111.111 - - [10/Apr/2015:17:26:12 -0800] "HEAD /badlink1 HTTP/1.1" 404 417 "http:///spiderdemo.html" "Wget/1.13.4 (linux-gnu)"

Die Referrer-URL ist das vorletzte Element in der Zeile: "+ http: /// spiderdemon.html".

Fazit

In diesem Tutorial wird erklärt, wie Sie mit dem Tool "+ wget +" die fehlerhaften Links auf einer Website finden und wie Sie die Verweisseiten finden, die diese Links enthalten. Sie können jetzt Korrekturen vornehmen, indem Sie defekte Links aktualisieren oder entfernen.