wget --spider: So erkennen Sie, woher defekte Links kommen

wget --spider: So erkennen Sie, woher defekte Links kommen

Ich verwende den integrierten Spider-Modus von wget manchmal, um schnell eine lokale Site auf defekte Links zu überprüfen. Heute Morgen habe ich seine Aufmerksamkeit auf eine Produktionssite gerichtet, an der wir gerade größere Änderungen vorgenommen haben, und es zeigt drei defekte Links an, aber es scheint unmöglich zu sagen, wo sie sind! (Es wird nur angezeigt, worauf sie verlinken, und es gibt keine direkte Möglichkeit, das allein auf eine Seite zurückzuführen.)

Die Optionen, die ich derzeit verwende, sind wget -r -nv --spider http://www.domain.com/ -o /path/to/log.txt. Kennt jemand eine Option, die ich übersehen habe, eine Möglichkeit, die Ausgabe zu lesen, oder sogar einen einfachen Ersatz für diesen Befehl, der mir auch mitteilt, in welcher Datei die Links erscheinen (und im Idealfall eine Zeilennummer)?

Antwort1

Sie sollten in der Lage sein, die Webserver-Protokolle in Verbindung mit dem wget-Ausführungslauf zu beobachten. Suchen Sie 404in der Protokolldatei nach den 's und ziehen Sie das referrerFeld. Dadurch wird Ihnen die Seite angezeigt, die den defekten Link enthält.

Dann muss lediglich die Seite auf den betreffenden Link überprüft werden.

Antwort2

Eine gute Möglichkeit (ohne die Webserver-Protokolle zu verwenden) ist die Verwendung von --debugFlag und grep für^Referer:

In der Befehlszeile:

wget -r -nv --spider http://www.domain.com/ 2>&1 | egrep -A 1 '(^---response end---$|^--[0-9]{4}-[0-9]{2}-[0-9]{2}|^[0-9]{4}-[0-9]{2}-[0-9]{2} ERROR|^Referer:|^Remote file does not)'

Sie können ähnliches Grepping auf Ihrem Protokoll durchführen. Vorbehalt: Einige Wgets werden nicht mit der Unterstützung für kompiliert--debug

verwandte Informationen