wget --spider: cómo saber de dónde provienen los enlaces rotos

wget --spider: cómo saber de dónde provienen los enlaces rotos

A veces utilizo el modo araña integrado de wget como una comodidad para comprobar rápidamente un sitio local en busca de enlaces rotos. Esta mañana centré su atención en un sitio de producción en el que acabábamos de realizar cambios importantes y aparece con 3 enlaces rotos, ¡pero parece imposible saber dónde están! (Solo dice a qué están enlazando y no hay una forma sencilla de relacionar eso solo con una página).

Las opciones que estoy usando actualmente son wget -r -nv --spider http://www.domain.com/ -o /path/to/log.txt. ¿Alguien conoce una opción que estoy pasando por alto, una forma de leer el resultado o incluso un simple sustituto de este comando que también me permitirá saber en qué archivo aparecen los enlaces (e idealmente una línea #)?

Respuesta1

Debería poder ver los registros del servidor web, junto con la ejecución de wget. Busque 404's en el archivo de registro y extraiga el referrercampo. Eso le indicará la página que contiene el enlace roto.

Entonces debería ser sólo cuestión de examinar esa página en busca del enlace infractor.

Respuesta2

Una buena forma (sin involucrar los registros del servidor web) es usar --debugflag y grep para^Referer:

En la línea de comando:

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)'

Puede hacer un grepping similar en su registro. Advertencia: algunos wget no están compilados con soporte para--debug

información relacionada