Preflight-чеклист перед архивацией сайта
Прежде чем запустить кроулер — будь то одна статья или сайт из миллиона страниц — полезно пройти короткий чек-лист. Это снижает риск пропустить контент, получить бан, нарушить авторские права или обнаружить через месяц, что архив никому не нужен.
Принцип: 1 час подготовки экономит 10 часов на переделку. Для регулярных архивов чек-лист должен стать шаблоном.
1. Зачем и для кого
Сформулируйте цель
Прежде чем скачивать, ответьте на пять вопросов:
- Зачем этот сайт нужно сохранить? Возможные причины: риск закрытия, культурная/историческая ценность, исследовательский запрос, журналистское расследование, требование закона.
- Кто основной пользователь архива? Исследователи, журналисты, общественность, юристы, внутренняя команда.
- Когда архив должен быть готов? Дедлайн часто диктует стратегию.
- Где будет жить архив? Локально (S3), публично (Ruarxive, IA), на собственном сервере (pywb).
- Какой уровень полноты нужен? Только главная страница, только статьи, всё включая админку.
Пример хорошей постановки задачи
Цель: сохранить архив ежедневных отчётов правительственного сайта X за период 2018–2026.
Пользователь: исследователи прозрачности государственных закупок.
Срок: к Q2 2027 собрать всё за 2018–2025; регулярно (ежемесячно) — 2026.
Хранилище: S3 Standard в РФ + копия на R2 для публичного доступа.
Полнота: все страницы отчётов + прикреплённые PDF + связанные документы.
Не годятся цели вроде «просто сохранить», «на всякий случай», «пока не закрыли». У каждого архива должен быть адресат.
2. Scope — что именно скачивать
Уровни глубины
| Уровень | Что скачиваем | Когда использовать |
|---|---|---|
| L1 — Single page | 1 URL | Цитата, разовая страховка |
| L2 — Section | Раздел сайта + вложенные 1–2 уровня | Тематическая архивация |
| L3 — Whole site | Весь сайт по sitemap, в пределах лимитов | Полная архивация |
| L4 — Whole domain | Домен + поддомены | Организация, портал |
| L5 — Time series | L3 или L4, регулярно по расписанию | Динамический контент |
Что включить и исключить
Зафиксируйте в seeds.csv или seeds.txt:
url,include_regex,exclude_regex,max_depth,priority
https://example.com/,.*,\.json$,5,high
https://example.com/news/.*,.*,\?preview=.*,10,high
https://example.com/admin/,❌,❌,0,none
Include — что хотим собрать:
- Основные разделы.
- Архивы (например,
/2024/,/archive/). - API-эндпойнты для статического контента.
Exclude — что НЕ собирать:
- Админка и личные кабинеты (
/admin/,/user/). - Динамические превью (
?preview=*,?draft=*). - Логи запросов.
- Ленты обновлений (RT-уведомления), которые могут вызвать зацикливание.
Размер и лимиты
Зафиксируйте:
- Максимум страниц: 1000 / 10 000 / 100 000 / без лимита.
- Максимум байт: 1 ГБ / 10 ГБ / 100 ГБ.
- Максимум длительности: 1 час / 1 день / 1 неделя.
- Что делать при превышении: остановить / продолжить с предупреждением / собрать только high-priority.
3. Инструменты и режимы
Выбор инструмента
| Сценарий | Инструмент | Почему |
|---|---|---|
| Одна статическая страница без JS | wget | Простота, есть в любой ОС |
| Сайт на WordPress | ⭐ wparc | Чистые данные через WP REST API |
| Современный сайт на JS | Browsertrix | Полная отрисовка |
| Браузерная сессия, требуется логин | Browsertrix + профиль | Сохраняет cookies |
| Telegram-канал | ⭐ tgarc | API + метаданные |
| Видео | yt-dlp | Лучшее качество, метаданные |
| Большой сайт, очередь | Heritrix | Стандарт Internet Archive |
| Научный поиск | Web Curator Tool | Workflow с рецензированием |
Поведения (behaviors) для JS-сайтов
Для Browsertrix включайте нужные:
- ✅
autoscroll— прокрутка для подгрузки lazy-load. - ✅
autoplay— запуск видео (для ленты новостей с видео). - ⚠️
autofetch— клики по ссылкам; включать осторожно, может зациклиться. - ✅
siteSpecific— youtube/twitter-специфичные пресеты. - 📝 Кастомные поведения — через CDP-скрипты.
Cookies и аутентификация
Если сайт требует логин:
- Создать отдельную учётную запись для архивиста (не основной личный аккаунт).
- Экспортировать cookies через Chrome → DevTools → Application → Cookies → Copy.
- Передать в Browsertrix через
--userCookiesили profile.
[!WARNING] Хранение cookies от чужих сервисов, особенно соцсетей, может нести юридические риски. Используйте только для публично доступного контента в авторизованной зоне.
4. Юридические ограничения
Что проверить
- Авторские права. Кто владеет контентом сайта? Государственный сайт — общественное достояние. Корпоративный блог — зависит от лицензии.
- Персональные данные. Есть ли на сайте пользовательский контент (комментарии, отзывы)? Подробнее: Персональные данные.
- Условия использования (ToS). Что говорит
robots.txtи ToS про ботов? Подробнее: Условия использования. - Региональные ограничения. Сайт заблокирован в РФ/ЕС? Доступ через VPN может быть ограничен юрисдикцией.
- Cookies/логин. Авторизованный доступ — отдельная правовая зона.
Когда НЕ нужно спрашивать разрешения
- Государственные сайты в от крытом доступе.
- Открытые лицензии (CC-BY, CC0, MIT и т. п.).
- Собственный сайт архивиста.
- Экстренная архивация под угрозой закрытия (FAA-стиль Archive Team).
Когда нужно разрешение
- Авторизованный контент (платный, личный кабинет).
- Исследовательский проект с обязательством не публиковать.
- Партнёрство с редакцией СМИ — договор о передаче материалов.
5. Расписание
| Тип расписания | Когда использовать | Пример |
|---|---|---|
| Однократно | Разовое сохранение | archive.su/archive-once.sh |
| Регулярно (cron) | Еженедельно/ежемесячно | 0 2 * * 0 archive-weekly.sh |
| По событию | Site Watcher | watcher --on-change archive-url |
| Кластером | Несколько ресурсов | Серия архиваций в течение недели |
Что фиксировать
- Длительность одного прохода (для мониторинга).
- Интервал между проходами (для оценки нагрузки).
- Кто отвечает за запуск.
- Когда прекратить (например, после явного закрытия сайта).