wget --spider: как узнать, откуда берутся битые ссылки

wget --spider: как узнать, откуда берутся битые ссылки

Иногда я использую встроенный режим паука wget для удобства, чтобы быстро проверить локальный сайт на наличие битых ссылок. Сегодня утром я обратил его внимание на рабочий сайт, на котором мы только что внесли серьезные изменения, и он выдает 3 битые ссылки, но, похоже, невозможно определить, где они находятся! (Он только сообщает, на что они ссылаются, и нет простого способа связать это со страницей.)

Параметры, которые я сейчас использую, следующие wget -r -nv --spider http://www.domain.com/ -o /path/to/log.txt. Кто-нибудь знает параметр, который я упускаю из виду, способ прочитать вывод или даже простую замену этой команды, которая также даст мне знать, в каком файле находятся ссылки (и в идеале номер строки)?

решение1

Вы должны иметь возможность просматривать журналы веб-сервера в сочетании с запуском wget. Найдите 404's в файле журнала и вытащите поле referrer. Это укажет вам страницу, содержащую неработающую ссылку.

Тогда вам просто нужно будет проверить эту страницу на предмет наличия вредоносной ссылки.

решение2

Хороший способ (не затрагивающий логи веб-сервера) — использовать флаг --debugи grep для^Referer:

В командной строке:

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

Вы можете сделать подобный grepping в вашем журнале. Предостережение: некоторые wget не скомпилированы с поддержкой--debug

Связанный контент