wget --spider: Wie erkennt man, woher defekte Links kommen?

7

Ich verwende den integrierten Spider-Modus von wget manchmal als Annehmlichkeit, um eine lokale Site schnell auf defekte Links zu überprüfen. Heute Morgen habe ich seine Aufmerksamkeit auf eine Produktionsstätte gelenkt, an der wir gerade große Änderungen vorgenommen haben, und die drei defekte Links enthält, aber es scheint unmöglich zu sagen, wo sie sich befinden! (Es wird nur angegeben, worauf sie verlinken, und es gibt keine einfache Möglichkeit, dies 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)?


quelle
Ich bekomme das, während ich an Zedboard arbeite. ! [Bildbeschreibung hier eingeben ] ( i.stack.imgur.com/SkNpQ.png )
Saj

Antworten:

3

Sie sollten in der Lage sein, die Webserver-Protokolle in Verbindung mit dem wget-Lauf zu überwachen. Suchen Sie nach den 404's in der Protokolldatei und ziehen Sie das referrerFeld. Das zeigt Ihnen die Seite, die den defekten Link enthält.

Es sollte dann nur darum gehen, diese Seite auf den beleidigenden Link zu untersuchen.

Bahamat
quelle
1
Gute Idee. Ich habe vergessen, dass ich das hier tatsächlich gefragt habe! Am Ende habe ich es in Kombination mit grep auf meiner lokalen Kopie der Site verwendet (insbesondere mit der Option -n, um Zeilennummern abzurufen).
Dies ist gut für defekte interne Links, aber nicht für Links zu externen Websites.
Screenack
3

Ein guter Weg (ohne die Webserver-Protokolle einzubeziehen) 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 ähnliche Protokolle in Ihrem Protokoll durchführen. Vorsichtsmaßnahme: Einige Wget werden nicht mit der Unterstützung für kompiliert--debug

Tsojcanth
quelle
1
Oder platzieren Sie alle Links in der Textdatei und -iüberprüfen Sie dies mit dem Schalter. wget -r -nv --spider -i linkfile 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)'
EsmaeelE