Оригинал статьи здесь: https://austinblackstoneengineering.com/how-to-scan-a-website-for-broken-links/
Серьезной проблемой для любой группы документации является тот факт, что документы со временем обновляются, а ссылки разрываются. Неработающая ссылка — один из худших опытов разработчиков. Пользователь хочет получить информацию, он нажал на ссылку, активно интересуется, а затем ему активно отказывают в доступе. Это ужасный опыт, но, к счастью, его легко избежать. В этой статье я собираюсь показать вам, как внедрить программу проверки ссылок, чтобы сканировать ваш веб-сайт на наличие неработающих ссылок, создать отчет, и благодаря усердным усилиям команды вы сможете сделать так, чтобы неработающие ссылки остались в прошлом.
Решение
Существует множество инструментов, которые сканируют ваш сайт на наличие битых ссылок. Некоторые из них бесплатные, некоторые платные, некоторые простые в использовании, а некоторые супер тупые. В этой статье мы будем использовать инструмент Python под названием [Linkchecker](https://linkchecker.github.io/linkchecker/).
Мы расскажем, как запустить сканирование.
— Локально на вашем компьютере — подходит для разовых запусков. Полезно для первоначального определения масштаба проекта.
- Github Action — подходит для периодических запусков, т. е. еженедельно или ежемесячно, с отчетами, отправляемыми на выбранный вами канал (slack, zendesk, jira и т. д.).
Это позволит вам запускать сканирование вручную или периодически по мере необходимости. Конечная цель — автоматизация, чтобы неработающие ссылки исправлялись, как только они появляются, и становились частью итеративного процесса вашей команды.
Запуск локально
Настраивать
Установите программу `linkchecker`
и убедитесь, что она установлена.
1. Установите, запустив `pip install linkchecker`
1. Подтвердите установку, запустив `linkchecker — version`
. Вывод должен выглядеть примерно так: $ linkchecker — version
LinkChecker 10.0.1 released 29.1.2021
Copyright © 2000–2016 Bastian Kleineidam, 2010–2021 LinkChecker Authors
Бегать
Чтобы запустить программу, нам нужно знать три вещи
1. Имя программы `linkchecker`
1. Формат вывода, который мы хотим использовать, в данном случае ` — output html`
(другие допустимые типы вывода — 'none ', 'gml', 'html', 'csv', 'xml', 'failures', 'text', 'sql', 'dot', 'sitemap', 'gxml')
1. Веб-сайт для сканирование. В этом случае я просканирую `https://www.WebsiteToScan.com`
. Обратите внимание, что необходимо полное `https://www`
.
Чтобы запустить это простое сканирование, полная команда будет выглядеть следующим образом:linkchecker — output html https://www.WebsiteToScan.com > ./scanresults.html
Это запустит сканирование и создаст файл `scanresults.html` с журналом сканирования. Тип файла html является наиболее удобным для человека форматом для анализа. Пожалуйста, измените `WebsiteToScan.com` на адрес вашего веб-сайта.
Исправить неработающие ссылки
Поначалу выходной файл может показаться запутанным, но на самом деле он довольно прост.
- **URL** — это неверный URL-адрес.
— **Имя** — это текст ссылки, отображаемый на page.
- **Родительский URL** — это страница, на которой находится неработающая ссылка.
На странице «Родительский URL» есть неработающая ссылка «Имя», которая ссылается на URL. Иди исправь это.
Чтобы эффективно исправить ссылки, выполните следующие действия
1. Откройте страницу **Родительский URL**
1. Найдите ссылку **Имя** на страница. Обычно я ищу страницу по **Имени**
1. Замените **URL** ссылки на правильный URL.
1. Сохраните страницу и опубликуйте.
Сделай это быстро
По умолчанию программа проверки ссылок работает с 10 потоками. Это может занять много времени для любого среднего и крупного веб-сайта. Вы можете увеличить количество потоков до 9999, но я обычно нахожу, что \~100 потоков делают свое дело.
Вот команда со 100 потокамиlinkchecker — output html — threads 100 https://www.WebsiteToScan.com > ./scanresults.html
Исключить разделы сайта
Иногда на вашем веб-сайте есть области, которые вы не хотите сканировать. Это может быть что угодно: от областей, которые доступны только зарегистрированным пользователям и, таким образом, недоступны для общедоступных пользователей, или областей, которые просто не имеют отношения к делу и которые вы не хотите сканировать.
Чтобы игнорировать определенные ссылки, вы можете использовать подкоманду ` — ignore-url`
.
Например, на веб-сайтах Atlassian, основанных на слиянии, есть множество ссылок `*.action`
, которые действительны только для внутренних пользователей и поэтому будут отображаться как неработающие ссылки.
Чтобы игнорировать все эти типы ссылок, мы можем использовать следующую команду:linkchecker \
— output html \
— threads 100 \
— ignore-url /*\.action \
— ignore-url /anotherSection/toIgnore/* \
https://www.WebsiteToScan.com > ./scanresults.html
Обратите внимание на `\`
в конце каждой строки, кроме последней, это необходимо для расширения одной команды на несколько строк.
Вы можете использовать подкоманду ` — ignore-url`
несколько раз в одной и той же команде, чтобы игнорировать любое количество различных ссылок или шаблонов.
Краткое содержание
Теперь у вас есть все необходимое для сканирования вашего сайта. Давай, попробуй. Я рекомендую оставить это на ночь, так как иногда может потребоваться несколько часов для работы на любом веб-сайте значительного размера. Прокрутите вниз результаты вывода, чтобы увидеть, сколько у вас неработающих ссылок. Удачной охоты!
Действие GitHub
Запуск проверки ссылок на локальном компьютере — это хорошо, но требует много времени. Лучшее решение — автоматически запускать средство проверки ссылок, чтобы результаты стали действенными для вашей команды. В следующем примере я покажу вам, как использовать GitHub Actions для автоматического запуска проверки ссылок каждый месяц и отправки результатов во внутренний канал Slack. Другим хорошим решением было бы автоматическое создание тикетов Jira для каждой ссылки, которую нужно исправить и добавить в бэклог вашей команды.
В этом разделе я предполагаю, что вы уже знакомы с тем, как работают действия GitHub, и вам удобно их использовать.
Настраивать
Получите код действия из моего репозитория здесь: [BlackstoneEngineering/linkchecker-action](https://github.com/BlackstoneEngineering/linkchecker-action/blob/main/.github/workflows/check_broken_links.yaml).
Обратите внимание, что в этом репозитории есть два действия:
- `check_broken_links.yaml`
— это действие, которое мы будем использовать в этом руководстве.
- `check_regex_string.yaml`
— это действие будет искать на веб-сайте шаблон регулярного выражения. Это полезно для поиска утечек безопасности ключей API или аналогичных материалов в ваших документах.
Перед использованием в этом скрипте необходимо настроить несколько параметров.
1. Измените веб-сайт для сканирования на свой веб-сайт env:
WEBSITE_URL: www.YOURWEBSITEHERE.com
2. Измените команду, игнорируя URL-адреса. — name: Check Links
run: |
linkchecker \
— no-warnings \
-t 100 \
-o html \
— ignore-url /internal/* \
— ignore-url /some_other_directory/~.* \
— ignore-url /*\.extension \
$WEBSITE_URL > ./logs/$WEBSITE_URL.html
3. Установите расписание. Я настроил его для запуска каждый месяц. schedule:
# Run on 1st day of every month
— cron: ‘0 0 1 * *’
4. Необязательно — включите интеграцию со Slack. Это включает в себя раскомментирование закомментированного кода внизу и добавление секрета репо для `SLACK_WEBHOOK`
. Если включено, это будет пинговать слабый канал с именем `channel_name`
с неработающими ссылками, а также ссылку на выходные результаты.
В качестве альтернативы я предлагаю настроить уведомление по электронной почте или интеграцию с задачами Jira.
Проверять
Вы можете убедиться, что действие проверки ссылок работает, перейдя к своим действиям и запустив его вручную. Затем вы сможете увидеть результаты вывода, а также журнал вывода, когда он завершит работу.
Краткое содержание
Теперь вы должны быть знакомы с тем, как запускать программу проверки ссылок вручную на локальном компьютере и автоматически как действие GitHub. Таким образом, у вас есть бесплатный и действенный метод проверки неработающих ссылок. Я ожидаю, что больше не будет битых ссылок на ваши проекты в будущем :-P . Иди будь классным!
Дальнейшее чтение
- [Документация по проверке ссылок](https://linkchecker.github.io/linkchecker/)
- [Репозиторий BlackstoneEngineering Github] (https://github.com/BlackstoneEngineering/linkchecker-action)
- Оригинал статьи: https://austinblackstoneengineering.com/how-to-scan-a-website-for-broken-links/