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 в браузере | ✅ Высокая | Интерактивный просмотр без сервера |
| pywb | Replay-сервер | ✅ Высокая | Публичный архив с поиском по URL |
Когда использовать warc2html
- Простой офлайн-просмотр.
- Размещение копии на обычном веб-сервере без replay-системы.
- Не нужна полная интерактивность.
Когда использовать другие инструменты
- Нужна полная интерактивность — ReplayWeb.page.
- Нужен веб-сервис с поиском по снимкам — pywb.
- Нужно сохранить архив целиком с метаданными — храните исходный WARC.
Best practices
- Храните исходный WARC вместе с HTML-экспортом: экспорт — это производная копия, а не замена архива.
- Записывайте в README рядом с экспортом источник, дату архивации и команду конвертации.
- Если в WARC несколько снимков одного URL, сначала отберите нужные записи через CDX-файл.