Originally posted at robinwinslow.uk/linkchecker
Если вам нужен инструмент для проверки вашего сайта на наличие 404 или 500 ошибок, существуют онлайн инструменты (например, The W3C’s online link checker), плагины для браузеров Firefox и Chrome, или программы для windows, такие как Xenu’s Link Sleuth.
Программа проверки ссылок в ОС unix
Сегодня я нашел программу linkchecker — она доступна как программа командной строки unix (хотя у нее также есть графический или веб-интерфейс).
Установка инструмента командной строки
Вы можете установить инструмент командной строки просто на Ubuntu:
sudo apt-get install linkchecker
Использование linkchecker
Как и у любой хорошей программы командной строки, у нее есть страница с руководством, но читать его может быть немного сложно, поэтому ниже я привожу несколько сокращений.
По умолчанию linkchecker
выдает много предупреждений. Он будет предупреждать вас о любых ссылках, которые приводят к 301, а также обо всех 404, таймаутах и т.д., а также предоставлять вам обновления статуса каждую секунду или около того.
Robots.txt
linkchecker не будет просматривать сайты, запрещенные в файле robots.txt, и нет способа отменить это. Решение — изменить файл robots.txt
, чтобы разрешить linkchecker:
User-Agent: *
Disallow: /
User-Agent: LinkChecker
Allow: /
Перенаправление вывода
linkchecker
, похоже, ожидает, что вы перенаправите его вывод в файл. Если вы сделаете это, он будет помещать в файл только фактические предупреждения и ошибки и сообщать о состоянии в командную строку:
$ linkchecker http://example.com > siteerrors.log
35 URLs active, 0 URLs queued, 13873 URLs checked, runtime 1 hour, 51 minutes
Таймаут
Если вы тестируете разрабатываемый сайт, вполне вероятно, что он будет довольно медленно отвечать на запросы, и linkchecker
может испытывать много таймаутов, поэтому вы, вероятно, захотите увеличить время таймаута:
$ linkchecker --timeout=300 http://example.com > siteerrors.log
Игнорировать предупреждения
Не знаю, как вы, но сайты, на которых я работаю, содержат множество ошибок. Я хочу найти 404 и 50*, прежде чем беспокоиться о предупреждениях перенаправления.
$ linkchecker --timeout=300 --no-warnings http://example.com > siteerrors.log
Тип вывода
Вывод text
по умолчанию довольно многословен. Для удобства чтения вы, вероятно, захотите выводить логи в формате CSV:
$ linkchecker --timeout=300 --no-warnings -ocsv http://example.com > siteerrors.csv
Другие параметры
Если вы нашли и исправили все основные ошибки 404 и 50*, возможно, вам захочется снова включить предупреждения (удалить --no-warnings
) и начать использовать --check-html
и --check-css
.
Проверка веб-сайтов с помощью OpenID (обновление 2014-04-17)
Сегодня мне пришлось использовать linkchecker
для проверки сайта, который требовал аутентификации с помощью системы OpenID компании Canonical. В этом мне очень помог ответ на StackOverflow.
Сначала я зашел на сайт как обычно с помощью Chromium, открыл окно консоли и сбросил все файлы cookie, которые были установлены на этом сайте:
> document.cookie
"__utmc="111111111"; pysid=1e53e0a04bf8e953c9156ea841e41157;"
Затем я сохранил эти куки в cookies.txt
в формате, понятном для linkchecker:
Host:example.com
Set-cookie: __utmc="111111111"
Set-cookie: pysid="1e53e0a04bf8e953c9156ea841e41157"
И включил его в мою команду linkchecker
с --cookiefile
:
linkchecker --cookiefile=cookies.txt --timeout=300 --no-warnings -ocsv http://example.com > siteerrors.csv
Используйте это!
Если вы работаете над веб-сайтом сколько-нибудь значительного размера, то почти наверняка там есть десятки битых ссылок и других ошибок. Программы проверки ссылок пройдут по всему сайту, проверяя каждую ссылку на наличие ошибок.
Проверка ссылок на вашем сайте может показаться очевидной, но, по моему опыту, почти ни одна команда разработчиков не делает этого регулярно.
Вы вполне можете использовать linkchecker
для автоматической проверки ссылок! Я еще не реализовал это, но постараюсь сообщить вам, когда сделаю.