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

warc2html

warc2html — утилита на Java, которая конвертирует WARC-файлы в статический сайт: записи сохраняются как обычные файлы, а ссылки переписываются на относительные пути. Результат можно смотреть офлайн или выложить на любой веб-сервер. Код опубликован в репозитории iipc/warc2html, автор — Национальная библиотека Австралии (лицензия Apache 2.0).

примечание

Это не npm-пакет: npm install warc2html не существует. Утилита распространяется как JAR-файл.

Описание​

warc2html извлекает ответы из WARC и раскладывает их по каталогам в соответствии с путями URL. Для просмотра результата не нужны ни replay-сервер, ни браузерный плеер.

Особенности​

  • Статический HTML: обычные файлы и каталоги.
  • Относительные ссылки: ссылки в HTML переписываются так, чтобы навигация работала с диска или с обычного веб-сервера.
  • Выборка записей: можно конвертировать не весь WARC, а список записей из CDX-файла или результат запроса к CDX-серверу.

Установка​

Готовый JAR​

В релизах репозитория есть warc2html-0.1.0.jar (ноябрь 2021). Для запуска нужна Java.

Сборка из исходников​

Нужны OpenJDK 17 или новее и Apache Maven:

git clone https://github.com/iipc/warc2html
cd warc2html
mvn package
# JAR появится в target/

Команды сверены с README и pom.xml репозитория iipc/warc2html (октябрь 2026).

Использование​

Весь WARC-файл​

java -jar warc2html.jar -o output/ input.warc.gz

Выборка по CDX​

Можно передать список записей в формате CDX11 и путь или URL, где лежат соответствующие WARC-файлы:

java -jar warc2html.jar -o output/ -b http://server/warcs/ input.cdx

Запрос к CDX-серверу​

java -jar warc2html.jar -o output/ -b http://server/warcs/ \
--cdx-server http://cdx-server/collection http://example.com/

Структура вывода​

  • Файлы раскладываются по путям URL; URL, оканчивающиеся на /, сохраняются как index.html.
  • Символы, недопустимые в именах файлов на некоторых системах (например, ?), удаляются.
  • Расширение файла добавляется или исправляется по заголовку Content-Type.
  • Если две записи дают одинаковое имя файла, к имени добавляется номер: ~1, ~2, ~3.

Отдельного оглавления со ссылками на все страницы утилита не создаёт.

Ограничения​

Из README проекта:

  • Ссылки внутри JavaScript не переписываются.
  • Предполагается, что в WARC есть только один снимок каждого URL.
  • Записи типа resource пока не обрабатываются.

Кроме того, это неизбежно для любого статического экспорта:

  • Динамический контент, который загружается скриптами с сервера, не работает.
  • Часть метаданных архива (WARC-заголовки, дата снимка) в HTML-файлы не попадает — исходный WARC нужно хранить рядом.

Сравнение с другими методами​

МетодРезультатИнтерактивностьКогда выбирать
warc2htmlСтатические HTML-файлы⚠️ ОграниченнаяНужна простая копия для офлайн-просмотра или обычного веб-сервера
ReplayWeb.pageПросмотр WARC/WACZ в браузере✅ ВысокаяИнтерактивный просмотр без сервера
pywbReplay-сервер✅ ВысокаяПубличный архив с поиском по URL

Когда использовать warc2html​

  • Простой офлайн-просмотр.
  • Размещение копии на обычном веб-сервере без replay-системы.
  • Не нужна полная интерактивность.

Когда использовать другие инструменты​

  • Нужна полная интерактивность — ReplayWeb.page.
  • Нужен веб-сервис с поиском по снимкам — pywb.
  • Нужно сохранить архив целиком с метаданными — храните исходный WARC.

Best practices​

  • Храните исходный WARC вместе с HTML-экспортом: экспорт — это производная копия, а не замена архива.
  • Записывайте в README рядом с экспортом источник, дату архивации и команду конвертации.
  • Если в WARC несколько снимков одного URL, сначала отберите нужные записи через CDX-файл.

Ресурсы​

Связанные материалы​