Перейти к основному содержимому

Preflight-чеклист перед архивацией сайта

Прежде чем запустить кроулер — будь то одна статья или сайт из миллиона страниц — полезно пройти короткий чек-лист. Это снижает риск пропустить контент, получить бан, нарушить авторские права или обнаружить через месяц, что архив никому не нужен.

Принцип: 1 час подготовки экономит 10 часов на переделку. Для регулярных архивов чек-лист должен стать шаблоном.

1. Зачем и для кого​

Сформулируйте цель​

Прежде чем скачивать, ответьте на пять вопросов:

  • Зачем этот сайт нужно сохранить? Возможные причины: риск закрытия, культурная/историческая ценность, исследовательский запрос, журналистское расследование, требование закона.
  • Кто основной пользователь архива? Исследователи, журналисты, общественность, юристы, внутренняя команда.
  • Когда архив должен быть готов? Дедлайн часто диктует стратегию.
  • Где будет жить архив? Локально (S3), публично (Ruarxive, IA), на собственном сервере (pywb).
  • Какой уровень полноты нужен? Только главная страница, только статьи, всё включая админку.

Пример хорошей постановки задачи​

Цель: сохранить архив ежедневных отчётов правительственного сайта X за период 2018–2026.
Пользователь: исследователи прозрачности государственных закупок.
Срок: к Q2 2027 собрать всё за 2018–2025; регулярно (ежемесячно) — 2026.
Хранилище: S3 Standard в РФ + копия на R2 для публичного доступа.
Полнота: все страницы отчётов + прикреплённые PDF + связанные документы.

Не годятся цели вроде «просто сохранить», «на всякий случай», «пока не закрыли». У каждого архива должен быть адресат.

2. Scope — что именно скачивать​

Уровни глубины​

УровеньЧто скачиваемКогда использовать
L1 — Single page1 URLЦитата, разовая страховка
L2 — SectionРаздел сайта + вложенные 1–2 уровняТематическая архивация
L3 — Whole siteВесь сайт по sitemap, в пределах лимитовПолная архивация
L4 — Whole domainДомен + поддоменыОрганизация, портал
L5 — Time seriesL3 или 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. Инструменты и режимы​

Выбор инструмента​

СценарийИнструментПочему
Одна статическая страница без JSwgetПростота, есть в любой ОС
Сайт на WordPress⭐ wparcЧистые данные через WP REST API
Современный сайт на JSBrowsertrixПолная отрисовка
Браузерная сессия, требуется логинBrowsertrix + профильСохраняет cookies
Telegram-канал⭐ tgarcAPI + метаданные
Видеоyt-dlpЛучшее качество, метаданные
Большой сайт, очередьHeritrixСтандарт Internet Archive
Научный поискWeb Curator ToolWorkflow с рецензированием

Поведения (behaviors) для JS-сайтов​

Для Browsertrix включайте нужные:

  • ✅ autoscroll — прокрутка для подгрузки lazy-load.
  • ✅ autoplay — запуск видео (для ленты новостей с видео).
  • ⚠️ autofetch — клики по ссылкам; включать осторожно, может зациклиться.
  • ✅ siteSpecific — youtube/twitter-специфичные пресеты.
  • 📝 Кастомные поведения — через CDP-скрипты.

Cookies и аутентификация​

Если сайт требует логин:

  1. Создать отдельную учётную запись для архивиста (не основной личный аккаунт).
  2. Экспортировать cookies через Chrome → DevTools → Application → Cookies → Copy.
  3. Передать в 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 Watcherwatcher --on-change archive-url
КластеромНесколько ресурсовСерия архиваций в течение недели

Что фиксировать​

  • Длительность одного прохода (для мониторинга).
  • Интервал между проходами (для оценки нагрузки).
  • Кто отвечает за запуск.
  • Когда прекратить (например, после явного закрытия сайта).

6. Хранилище и публикация​

Перед запуском: куда положить результат?​

  • Локально на диск — для тестового прогона.
  • S3 / R2 / Backblaze — для долгосрочного хранения.
  • Internet Archive — для публикации.
  • Ruarxive — для российских ресурсов.
  • Не сохранять — если цель архива — просто проверить качество.

Структура каталогов​

archive-name/
├── raw/
│ └── 2026-11-09_browsertrix_run-001/
│ └── archive.wacz
├── logs/
│ └── 2026-11-09_run.log
├── checksums/
│ └── archive.wacz.sha256
└── metadata/
├── collection.json # datapackage.json
└── README.md

7. Контакты и коммуникация​

С кем связаться​

  • Владелец сайта — если есть контакт; предупредить, что идёт архивация.
  • Юрист / DPO — если есть персональные данные.
  • Хостер — если планируется долгая нагрузка.
  • Команда Ruarxive — для сложных или крупных проектов.
  • Сообщество — для совместных проектов (Archive Team и т. п.).

Куда сообщать о ходе​

  • Airtable Ruarxive — создать запись в таблице.
  • Telegram-чат — если нужны помощники.
  • GitHub — если используются инструменты Ruarxive (issue).

8. Тестовый прогон​

Перед полноценным архивированием:

  • Запустить на 1 странице и проверить результат в ReplayWeb.page.
  • Запустить на 5–10 страницах и оценить скорость, размер, ошибки.
  • Проверить cookies/логин если требуется.
  • Проверить поведения для JS-сайтов.
  • Оценить объём: du -sh /path/to/archive.

9. Мониторинг во время сбора​

МетрикаГде смотретьЧто должно настораживать
Скорость (URL/мин)логи кроулераПадение ниже 50 % от начальной
Объём (ГБ/час)duРезкий рост (возможно, бесконечный цикл)
4xx / 5xx ответылоги> 5 % ответов
Капчи / блокировкилогиСайт начал блокировать
CPU / памятьhtop, docker statsУтечка памяти в кроулере
Сеть (Мбит/с)nethogsПревышение лимита

10. Пост-обработка​

После успешного сбора:

  • Проверить качество в ReplayWeb.page (3–5 случайных страниц).
  • Посчитать статистику: сколько страниц, какой средний размер.
  • Сохранить логи для аудита.
  • Зафиксировать дату в метаданных.
  • Создать SHA-256 для каждого WARC/WACZ.
  • Обновить Airtable в Ruarxive.
  • Сообщить в чат (если нужно помощь с обработкой).

11. Резерв и дубликаты​

Правило 3-2-1 (напоминание)​

  • 3 копии: оригинал + 2 бэкапа.
  • 2 разных носителя.
  • 1 копия вне офиса / в другом регионе.

Автоматизация бэкапа​

#!/bin/bash
# backup-archive.sh
SRC=/data/archive-name/raw
DST_S3=s3://my-bucket/archive-name/
DST_IA=archive-name.wacz

# Копирование в S3
aws s3 sync "$SRC" "$DST_S3"

# Загрузка в Internet Archive
ia upload "$DST_IA" "$SRC/latest.wacz" \
--metadata "mediatype:web" \
--metadata "creator:Ruarxive" \
--metadata "licenseurl:https://creativecommons.org/publicdomain/zero/1.0/"

12. Шаблон preflight.md​

Скопируйте в директорию архива:

# Препарат-чеклист для архивации

## Цель
[краткое описание]

## Scope
- URL: [seeds.txt](seeds.txt)
- Глубина: [L1-L5]
- Лимиты: [X страниц, Y ГБ, Z часов]

## Инструменты
- [инструмент + команда]

## Юридический статус
- Авторские права: [...]
- Персональные данные: [...]
- ToS / robots.txt: [...]

## Расписание
- Старт: [дата]
- Интервал: [раз в неделю]
- Кто отвечает: [@ник]

## Хранилище
- Локально: [...]
- S3 / R2: [...]
- IA / Ruarxive: [...]

## Контакты
- Владелец сайта: [...]
- Куратор: [...]

## Метрики успеха
- [полнота %, объём, срок]

См. также​