Главная > Программы Обнаружение неработающих ссылок на сайте с помощью wgetНеработающие ссылки появляются на сайтах потому, что некоторые веб-страницы были перемещены или удалены. Веб-мастер должен обнаруживать такие ссылки до того, как их найдёт посетитель сайта или поисковые боты. Откладывание устранения этой проблемы может негативно сказаться на общем впечатлении пользователей и на рейтинге поисковых систем, что приводит к снижению посещаемости. Выполнение проверки ссылок многостраничного сайта – процесс довольно трудоёмкий. К счастью, существуют инструменты, способные выполнить проверку автоматически. К примеру, можно обратиться к веб-приложениям Google Webmaster Tools или World Wide Web Consortium (W3C), но они, как правило, не предоставляют продвинутых функций. Пользователи WordPress могут установить специальный плагин, но это может привести к штрафам от хостинг-компании за выполнение ресурсоёмких задач. Также можно использовать основанные на Linux программы, среди которых встречаются общие веб-сканеры, способные обнаружить неработающие ссылки (например, wget), и специально разработанные программы проверки ссылок (как linkchecker и klinkstatus). Они обладают широкими возможностями настройки и могут свести к минимуму негативное воздействие на время отклика целевого сайта. Данное руководство демонстрирует использование wget для обнаружения неработающих ссылок. ТребованияДля выполнения руководства вам понадобится:
Данное руководство написано для системы Debian 7, но его инструкции действительны для других современных дистрибутивов Linux. Примечание: На дистрибутивы, которые не поставляются с предустановленной wget по умолчанию, нужно установить утилиту самостоятельно. 1: Создание страницыДля начала создайте тестовую страницу сайта, заведомо разместив на ней неработающие ссылки. Войдите на сервер webserver-1. Откройте новый файл spiderdemo.html для редактирования в любом удобном текстовом редакторе (в данном случае это nano). # sudo nano /var/www/spiderdemo.html Вставьте в файл следующий текст. Это очень простая веб-страница, содержащая две неработающие ссылки, одна из которых внешняя, вторая – внутренняя (укажите IP своего сервера). <html>
<head> <title>Hello World!</title> </head>
<body>
<p>
<a href="http://your_server_ip/badlink1">Internal missing link</a>.
<a href="https://www.digitalocean.com/thisdoesntexist">External missing link</a>.
</p>
</body>
</html>
Сохраните и закройте файл. Затем передайте права на файл spiderdemo.html стандартному пользователю по имени www-data. # sudo chown www-data:www-data /var/www/spiderdemo.html Затем измените права на новый HTML-файл. # sudo chmod 664 /var/www/spiderdemo.html Теперь можно просмотреть новую страницу по ссылке: # http://ip_сервера/spiderdemo.html 2: Запуск wgetWget – это универсальный загрузчик, который также может быть использован в качестве веб-сканера. В данном разделе показано, как настроить wget для проверки ссылок и обнаружения неработающих ссылок. Примечание: Проверяйте ссылки только на своём сайте! Проверка ссылок влечёт значительную вычислительную нагрузку, потому подобные действия могут быть приняты за спам. Войдите на сервер generic-1 и запустите следующую команду wget (в случае необходимости отредактируйте её). Разбор данной команды можно найти ниже. # wget --spider -r -nd -nv -H -l 1 -w 2 -o run1.log http://ip_сервера/spiderdemo.html Базовые флаги:
Следующие параметры опциональны:
Запустив вышеприведённую команду wget, извлеките неработающие ссылки из файла вывода при помощи: # grep -B1 'broken link!' run1.log При помощи параметра -B1 для каждого совпадения утилита wget отображает дополнительную предшествующую строку с контекстом (в которой и содержится неработающий URL). Пример вывода команды grep: http://your_server_ip/badlink1:
Remote file does not exist -- broken link!!!
https://www.digitalocean.com/thisdoesntexist:
Remote file does not exist -- broken link!!!
3: Обнаружение рефереровИтак, на данном этапе нерабочие ссылки обнаружены, но нет никаких данных о реферер-страницах (или реферерах, англ referer – это страницы сайта, содержащие эти ссылки). Рефереры очень просто обнаружить при помощи лога доступа веб-сервера. Войдите на webserver-1 и найдите неработающие ссылки в логе Apache. # sudo grep Wget /var/log/apache2/access.log | grep "HEAD /badlink1" Первая команда grep находит все запросы доступа, отправленные веб-серверу утилитой wget. Каждый такой запрос содержит строку User Agent, в которой указан программный агент, ответственный за запрос. User Agent утилиты wget: Wget/1.13.4 (linux-gnu)
Вторая команда grep ищет partial URL неработающей ссылки (/badlink1), который является частью URL-а после домена. Пример вывода цепи команд grep: 111.111.111.111 - - [10/Apr/2015:17:26:12 -0800] "HEAD /badlink1 HTTP/1.1" 404 417 "http://your_server_ip/spiderdemo.html" "Wget/1.13.4 (linux-gnu)"
Реферер находится в строке: # http://your_server_ip/spiderdemo.html. ЗаключениеПри помощи данного руководства можно найти нерабочие ссылки на сайте, а также выяснить, на каких страницах они находятся. После этого рекомендуется обновить или удалить эти ссылки. Материал взят с сайта:Главная > Программы |