Битые ссылки — не единственная головная боль техлида. Кривые canonical, дубли title, N+1 редиректов — каждый из этих багов снижает позиции в выдаче. Screaming Frog SEO Spider — де-факто стандарт технического аудита. Мы используем его в каждом проекте и настраиваем автоматический краулинг для регулярного мониторинга. Многолетний опыт нашей команды подтверждает: ни одна проблема не останется незамеченной. Экономия на ручном аудите достигает 70–90% за счёт автоматизации. Стоимость настройки варьируется от 15 000 до 45 000 рублей в зависимости от объёма. Получите консультацию — подберём конфигурацию под ваш стек.
Какие проблемы решает Screaming Frog?
- Битые ссылки и редиректы: находим 4xx и 5xx ошибки, цепочки редиректов, циклические перенаправления. На одном проекте с каталогом в 20 000 товаров обнаружили 12-звенную цепочку редиректов — ранжирование упало на 30%.
- Проблемы с мета-тегами: отсутствующие или дублированные title, слишком длинные мета-описания, кривые H1. Краулер подсвечивает все несоответствия.
- Проблемы индексации: страницы без canonical, неправильные hreflang, закрытые в robots.txt URL, которые должны индексироваться. Например, блокировка страниц фильтрации приводит к потере 40% трафика.
Автоматический краулинг через CLI в 5 раз быстрее ручного запуска GUI и позволяет интегрировать аудит в CI/CD. Для сайта в 20 000 URL с JS-рендерингом требуется 4-8 ГБ RAM, а время простоя из-за необнаруженных ошибок — в 3-5 раз выше. Свяжитесь с нами, чтобы оценить экономию на вашем проекте.
Почему автоматический краулинг — стандарт технического аудита?
GUI-версия удобна для разовых проверок, но для регулярного мониторинга нужен CLI. Сравнение подходов:
| Критерий | GUI | CLI |
|---|---|---|
| Запуск | Ручной, каждый раз | Автоматический по расписанию |
| Скорость | Зависит от интерфейса | В 5 раз быстрее |
| Интеграция | Нет | В CI/CD, cron, уведомления |
| Ресурсы | Фиксированный heap | Настраиваемый -Xmx |
| Повторяемость | Разный каждый раз | Идентичный конфиг |
Также стоит учесть типичные ошибки конфигурации:
| Ошибка | Последствие | Решение |
|---|---|---|
| Не задан User-Agent | Блокировка краулера | Установить --user-agent соответствующий |
| Слишком большая глубина | Долгое сканирование | Ограничить --max-crawl-depth до 5-10 |
| Не включён рендеринг JS | Пропущенные ссылки | Использовать --use-rendered |
| Отсутствие исключений | Зацикливание | Настроить --exclude для параметров |
Развёрнутый пример конфигурации для cron
0 3 * * 1 /usr/bin/screamingfrogseospider --crawl https://example.com --headless --config /etc/screamingfrog/standard-audit.seospiderconfig --output-folder /var/reports/$(date +\%Y\%m\%d) --export-tabs "Internal:All,Response Codes:All,Page Titles:All,Meta Description:All,H1:All,Canonical:All,Directives:All,Hreflang:All,Structured Data:All,Links:All,Sitemaps:All" --timestamped-output
Настройка автоматического краулинга
Установка и лицензия
Screaming Frog — Java-приложение. Бесплатная версия ограничена 500 URL, платная лицензия для коммерческих проектов.
# Ubuntu/Debian
wget https://download.screamingfrog.co.uk/products/seo-spider/screamingfrogseospider_21.0_all.deb
sudo dpkg -i screamingfrogseospider_21.0_all.deb
Запуск через CLI
Ключевое — режим --headless. Параметры: --crawl, --save-crawl, --export-tabs, --output-folder.
screamingfrogseospider \
--crawl https://example.com \
--headless \
--save-crawl \
--export-tabs "Internal:All,Response Codes:All,Page Titles:All,Meta Description:All,H1:All,Canonical:All,Directives:All,Hreflang:All,Structured Data:All,Links:All,Sitemaps:All" \
--output-folder /var/reports/example-com/$(date +%Y%m%d) \
--timestamped-output
Конфигурация и рендеринг
Для стандартизации сохраните конфиг в GUI и передавайте через --config. Для JavaScript-сайтов включите рендеринг через встроенный Chromium (--use-rendered). Время краулинга с JS увеличивается в 3–5 раз, поэтому применяйте только где критично.
Аутентификация
# Cookie
screamingfrogseospider --crawl https://example.com/admin/ --headless --set-cookies "PHPSESSID=abc123; laravel_session=xyz789" --output-folder /var/reports/
# HTTP Basic
screamingfrogseospider --crawl https://example.com --headless --auth-details "user:password" --output-folder /var/reports/
Как настроить CLI для автоматического запуска?
В cron-задаче используйте полный путь к бинарнику и параметры выше. Убедитесь, что Java heap достаточен: для сайта 50 000 URL с JS-рендерингом требуется 4-8 ГБ RAM (-Xmx). Для мониторинга добавьте уведомления в Telegram или email при появлении 4xx- и 5xx-ошибок.
Когда нужен рендеринг JavaScript?
Для сайтов на React, Vue или Angular, где контент подгружается динамически. Без рендеринга краулер увидит только пустой шаблон — вы пропустите до 80% ссылок. Рекомендуем включать --use-rendered для SPA-приложений.
Почему рендеринг JavaScript критичен для SPA?
В SPA отсутствуют статические HTML-страницы. Краулер без рендеринга не найдет внутренние ссылки, мета-теги, структурированные данные. Как указывает официальная документация Screaming Frog, для полного аудита SPA необходим headless Chrome. Это единственный способ выявить все технические проблемы.
Процесс работы
- Аналитика: определяем цели аудита, список URL, роботс, карту сайта.
- Проектирование: создаём конфигурацию краулера (User-Agent, глубину, исключения).
- Реализация: настраиваем CLI-запуск, экспорт данных, скрипты обработки.
- Тестирование: проверяем на тестовом поддомене, верифицируем результаты.
- Деплой: размещаем на сервере, настраиваем cron, уведомления в Telegram/email.
Что входит в результат
- Конфигурация краулера:
standard-audit.seospiderconfig. - Bash-скрипт автоматического запуска с логированием.
- Python-скрипт анализа основных метрик (коды ответов, дубли title/H1, битые ссылки).
- Настройка уведомлений (Telegram/email) при аномалиях.
- Инструкция по обновлению и поддержке.
Обработка результатов
Screaming Frog экспортирует CSV для каждой вкладки. Мы подготовили Python-скрипты для загрузки и сводки.
import pandas as pd
from pathlib import Path
def load_crawl_results(output_dir: str) -> dict[str, pd.DataFrame]:
results = {}
for csv_file in Path(output_dir).glob('*.csv'):
name = csv_file.stem.lower().replace(' ', '_')
try:
df = pd.read_csv(csv_file, encoding='utf-8-sig', low_memory=False)
results[name] = df
except Exception as e:
print(f'Could not load {csv_file}: {e}')
return results
def audit_summary(results: dict) -> dict:
summary = {}
if 'internal_all' in results:
internal = results['internal_all']
summary['total_urls'] = len(internal)
summary['indexable'] = len(internal[internal.get('Indexability', '') == 'Indexable'])
if 'response_codes_all' in results:
codes = results['response_codes_all']
for code, prefix in [('2xx','2'),('3xx','3'),('4xx','4'),('5xx','5')]:
summary[code] = len(codes[codes['Status Code'].astype(str).str.startswith(prefix)])
if 'page_titles_all' in results:
titles = results['page_titles_all']
summary['missing_title'] = titles['Title 1'].isna().sum() + (titles['Title 1']=='').sum()
summary['duplicate_title'] = titles['Title 1'].duplicated().sum()
if 'h1_all' in results:
h1 = results['h1_all']
summary['missing_h1'] = h1['H1-1'].isna().sum() + (h1['H1-1']=='').sum()
if 'H1-1 Count' in h1:
summary['multiple_h1'] = (h1['H1-1 Count'] > 1).sum()
return summary
Сводка позволяет сразу выявить критические проблемы и оценить масштаб работ. Например, более 5% 4xx-ошибок — повод для срочного редизайна структуры. Автоматизация краулинга позволяет сократить затраты на технический аудит на 70–90% по сравнению с ручным тестированием. Получите консультацию и пример конфигурации под ваш сайт — свяжитесь с нами для предварительной оценки.







