
Быстрый CLI-инструмент для сканирования веб-сайтов, карт сайтов и списков URL на наличие битых ссылок, с одновременными рабочими процессами, отчётами о покрытии и поддержкой нескольких форматов вывода.
Поиск мёртвых ссылок (битых ссылок)
Документация • Установка • GitHub Action • Участие • История изменений
Мёртвая ссылка (битая ссылка) — это ссылка на веб-странице, которая не может быть открыта. Такие ссылки могут негативно влиять на SEO и безопасность. Этот инструмент упрощает их поиск и исправление.

Ищете v1 (Ruby gem)? Теперь она находится в ветке
legacy/v1и продолжает публиковать gemdeadfinderдля исправления ошибок и выпусков безопасности.mainсодержит переписанную на Crystal версию (v2+).
brew install deadfinder
# https://formulae.brew.sh/formula/deadfinder
docker run ghcr.io/hahwul/deadfinder:latest deadfinder url https://example.com
Загрузите архив для вашей платформы из последнего релиза, распакуйте и поместите deadfinder в ваш PATH.
nix run github:hahwul/deadfinder
nix profile install github:hahwul/deadfinder
nix develop github:hahwul/deadfinder
Требуется Crystal >= 1.19.1 и cmake (для postinstall парсера HTML lexbor — без него shards install завершается ошибкой 'cmake': No such file or directory).
# macOS
brew install crystal cmake
# Debian / Ubuntu
sudo apt install crystal cmake
shards install
crystal build src/cli_main.cr -o deadfinder --release
# или: просто собрать
deadfinder sitemap https://www.hahwul.com/sitemap.xml
Укажите конкретный тег релиза. @latest не является допустимой ссылкой на Actions.
steps:
- name: Запуск DeadFinder
uses: hahwul/deadfinder@v2 # отслеживает последнюю 2.x — для строгой воспроизводимости укажите конкретный тег (например, @2.0.2)
id: broken-link
with:
command: sitemap # url / file / sitemap / pipe
target: https://www.hahwul.com/sitemap.xml
# timeout: 10
# concurrency: 50
# silent: false
# headers: "X-API-Key: 123444"
# worker_headers: "User-Agent: Deadfinder Bot"
# include30x: false
# user_agent: "Apple"
# proxy: "http://localhost:8070"
# proxy_auth: "id:pw"
# match: ""
# ignore: ""
# coverage: true
# visualize: report.png
- name: Обработка вывода
run: echo '${{ steps.broken-link.outputs.output }}'
Если вы нашли мёртвую ссылку и хотите автоматически создать issue, обратитесь к статье «Автоматизация обнаружения мёртвых ссылок».
Usage: deadfinder <command> [options]
Commands:
pipe Сканировать URL-адреса из STDIN
file <FILE> Сканировать URL-адреса из файла
url <URL> Сканировать один URL
sitemap <SITEMAP-URL> Сканировать URL-адреса из карты сайта
completion <SHELL> Сгенерировать скрипт завершения (bash/zsh/fish)
version Показать версию
Options:
-r, --include30x Включить перенаправления 30x как мёртвые ссылки
-c, --concurrency=N Количество одновременных рабочих потоков (по умолчанию: 50)
-t, --timeout=N Тайм-аут в секундах (по умолчанию: 10)
-o, --output=FILE Файл для записи результатов
-f, --output_format=FORMAT Формат вывода: json, yaml, toml, csv, sarif (по умолчанию: json)
-H, --headers=HEADER Пользовательские HTTP-заголовки для начального запроса
--worker_headers=HEADER Пользовательские HTTP-заголовки для запросов рабочих потоков
--user_agent=UA Строка User-Agent
-p, --proxy=PROXY Прокси-сервер (HTTP и HTTPS CONNECT)
--proxy_auth=USER:PASS Аутентификация прокси
-m, --match=PATTERN Шаблон URL для сопоставления (регулярное выражение)
-i, --ignore=PATTERN Шаблон URL для игнорирования (регулярное выражение)
-s, --silent Тихий режим
-v, --verbose Подробный режим
--debug Режим отладки
--limit=N Ограничить количество сканируемых URL
--coverage Включить отслеживание и отчётность покрытия
--visualize=PATH Создать PNG-изображение визуализации
# Сканировать URL-адреса из STDIN (несколько URL)
cat urls.txt | deadfinder pipe
# Сканировать URL-адреса из файла
deadfinder file urls.txt
# Сканировать один URL
deadfinder url https://www.hahwul.com
# Сканировать URL-адреса из карты сайта
deadfinder sitemap https://www.hahwul.com/sitemap.xml
deadfinder sitemap https://www.hahwul.com/sitemap.xml -o output.json
cat output.json | jq
{
"Target URL": [
"DeadLink URL",
"DeadLink URL",
"DeadLink URL"
]
}
С --coverage:
deadfinder sitemap https://www.hahwul.com/sitemap.xml --coverage -o output.json
{
"dead_links": {
"Target URL": ["DeadLink URL 1", "DeadLink URL 2"]
},
"coverage": {
"targets": {
"Target URL": {
"total_tested": 14,
"dead_links": 7,
"coverage_percentage": 50.0
}
},
"summary": {
"total_tested": 14,
"total_dead": 7,
"overall_coverage_percentage": 50.0
}
}
}
deadfinder completion bash > /etc/bash_completion.d/deadfinder
deadfinder completion zsh > ~/.zsh/completion/_deadfinder
deadfinder completion fish > ~/.config/fish/completions/deadfinder.fish
Вклад приветствуется! Если у вас есть идея по улучшению или вы хотите сообщить об ошибке:
feature/awesome-feature или bugfix/annoying-bug).main.