Проверка ссылок на веб-сайты для Linux

Периодически мне нужно проверять свои веб-сайты на предмет «гниения ссылок». Множественное число уже указывает на то, что это работа, которую нельзя выполнить вручную (на многие сайты и еще больше ссылок для проверки), поэтому мне нужен инструмент, который мне поможет.

Обязательные к приобретению:

  • Должен работать в Linux
  • Должен позволять определять фильтры (для URL-адресов/имен серверов/доменов не проверять; RegEx было бы здорово, простая «подстрока» все еще в порядке)
  • Должен разрешить фильтрацию вывода (по крайней мере, чтобы «показывать только ошибки и предупреждения»; чем более детализирован, тем лучше)

Настоятельно предпочтительны:

  • Интерфейсы GUI и CLI (так что я могу запускать его вручную с приятным интерфейсом, а также автоматически из Cron — в этом случае, если возможно, GUI должен иметь возможность загружать «результаты»)
  • Немного статистики
  • Эффективный:
    • Не следует проверять один и тот же URL несколько раз (но, конечно, если он поврежден, сообщите об этом для каждой страницы, на которой он найден)
    • не следует анализировать одну и ту же страницу несколько раз 1
  • Точный (как можно меньше «ложноотрицательных результатов»)

Хорошо бы иметь:

  • возможность указать, какие параметры URL игнорировать 2
  • отправка (форматированных) отчетов по почте (при запуске из Cron) 3
  • Возможность сканирования сайтов с требованием аутентификации 4
  • Возможность исключить типы файлов из проверки 5

Я уже пробовал:

  • gUrlChecker : Судя по графическому интерфейсу, он соответствует всем требованиям. Но он игнорировал все настройки фильтра (для пропуска хостов/URL-адресов; если включен пример, как это сделать, этот ответ приветствуется - возможно, я сделал что-то не так, или версия gUrlChecker , которую я использовал, имеет ошибку)
  • LinkChecker : очень много «ложных срабатываний» (например, сообщает, что A перенаправляет на A, т. е. на себя; проверяет одну и ту же страницу несколько раз и также несколько раз сообщает о своих ошибках, сообщает о «недоступных страницах» (301, 401), которые были явно доступны (без «авторизации»), без фильтрации вывода (хотя отображение «только ошибок и предупреждений» приемлемо, я бы хотел, чтобы он показывал, например, «только ошибки»). Опять же, это может быть ошибка, которая тем временем решена: как gUrlChecker , я установил его из репозиториев Ubuntu, которые не всегда имеют самые последние версии (да, действительно: 7.x в репозитории, 9.3 на сайте проекта - снова протестирую с последней версией)

1: Если, например, на отсканированном сайте страницы A, B и C ссылаются на Z (все еще на самом отсканированном сервере, т.е. без внешних ссылок), Z следует сканировать только один раз, а не 3 раза, как я испытал, например, с LinkChecker

2: Если сайт, например, предоставляет один и тот же контент на нескольких языках, нет смысла сканировать все языковые варианты (при условии, что ссылки на них идентичны). Поэтому я могу, например, захотеть проигнорировать lang=XXпараметр и заставить средство проверки ссылок учитывать a.php, a.php?lang=enи a.php?lang=deту же страницу. Это, конечно , может быть покрыто обязательным фильтром с RegEx, если langпараметр является необязательным;)

3: Конечно, с помощью Cron STDERRзахвачено, поэтому основное внимание в этой почте уделяется «отформатированному». Это могут быть, например, расчетные листы ODF (которые затем можно «отфильтровать» с помощью OpenOffice/LibreOffice).

4: т.е. те сайты, которые запрашивают имя пользователя/пароль для доступа (код ответа HTTP 401); Я только что заметил , что LinkChecker добавил, что с v7.9 gUrlChecker также способен на это. Это в основном относится к сканируемому сайту , не обязательно к внешним ссылкам (если поддерживаются оба, это должно быть настроено отдельно)

5: если средство проверки ссылок, например, способно сканировать содержимое PDF, MSWord и любых других документов, должна быть возможность отключить это: на веб-сайте могут храниться «старые версии документов» для справки, где «устаревшие ссылки» считаются «нормальными». ". Исключение может происходить по MIME-типу или расширению файла.

Ответы (1)

Поскольку рекомендаций не было, я остановился на LinkChecker . Хотя большинство минусов, которые я перечислил в своем вопросе, остались, использование новейшей версии с сайта автора прошло лучше, чем запуск версии, поставляемой в репозитории.

Графический интерфейс проверки ссылок Интерфейс командной строки LinkChecker
Графический интерфейс и интерфейс командной строки LinkChecker (источник: LinkChecker ; щелкните изображения, чтобы просмотреть увеличенные варианты)

Насколько это соответствует моим требованиям

Обязательные к приобретению

  • Должен работать в Linux: Да, работает.
  • Должен позволять определять фильтры: Частично. Предварительная фильтрация (т.е. исключение вещей из проверки) отчасти возможна, хотя и не всегда интуитивно понятна. Я не нашел способа отфильтровать список результатов в графическом интерфейсе.
  • Должен разрешать фильтрацию вывода: Снова частично, см. предыдущий пункт. Когда список результатов есть, дальнейшая фильтрация невозможна.

Настоятельно предпочитаемый

  • Интерфейсы GUI и CLI: Да (см. скриншоты выше). Предусмотрен даже веб-интерфейс (CGI).
  • Некоторая статистика: не такая подробная, как я надеялся, но некоторые статистические данные доступны (см. правый нижний угол на снимке экрана с графическим интерфейсом).
  • Эффективный: Вроде. Слишком много "дубликатов"
  • Точно (как можно меньше «ложных отрицаний»): Вот с чем я боролся. Все еще немного раздражает, я не мог избавиться от них всех. Это может быть возможно для «опытных пользователей», но это определенно не интуитивно понятно для «новичков».

Хорошо бы иметь

  • возможность указать, какие параметры URL игнорировать: здесь мне удалось лишь частично. Должен быть какой-то трюк, но я его не нашел: можно определить шаблоны для игнорирования URL-адресов, но в какой-то момент я перестал экспериментировать, как заставить это работать с параметрами: Окно параметров с шаблонами URL-адресов (щелкните, чтобы увеличить вариант)
    Окно параметров
  • отправка (форматированных) отчетов по почте (при запуске из Cron): Из-за не полностью удовлетворительных результатов с графическим интерфейсом, я не проверял это дальше.
  • Способен сканировать сайты с требованием авторизации: Тщательно не тестировалось, но это кажется возможным — нужно настроить в linkcheckerrcфайле:

    [authentication]
    # Different user/password pairs for different URLs can be provided.
    […]
    
  • Возможность исключать типы файлов из сканирования: мне не приходилось сталкиваться с этим, поскольку LinkChecker , похоже, не обнаружил ни одного файла PDF или другого формата, который мог бы сканировать.

Вывод

Хотя это не совсем то, что я ищу, LinkChecker подходит довольно близко — скорее всего, настолько близко, насколько я могу. Если вы столкнулись с чем-то лучше, соответствующим моим потребностям, я с нетерпением жду альтернатив :)

Вы пробовали xenu link sleuth с вином?
@Nivatius нет, и меня интересуют только нативные решения, поэтому о Wine не может быть и речи.