Архивация HTML-страниц для бизнеса: что хранить, чем и в каком формате
Меня зовут Семёнов Евгений Сергеевич, директор АйТи Фреш. Запрос «сохранить страницу как доказательство» — один из самых частых, с которыми ко мне приходят юрфирмы и отделы закупок. Конкурс на zakupki.gov.ru снят, поставщик изменил цены на сайте за ночь, партнёр убрал из оферты важный пункт — и если вы не сняли копию, доказать ничего невозможно. Разберусь, какими инструментами правильно это делать и почему обычное «сохранить как» из браузера в 2026 году уже не работает.
Почему веб-страницу нельзя просто «сохранить как»
Встроенное в браузер «сохранить как HTML» десятилетней давности даёт один файл и папку с картинками. В 2026 году это сломано почти везде:
- Большинство современных сайтов строят контент динамически через React/Vue/Angular. При сохранении получаете пустой HTML с одним
<div id="root"></div>. - Шрифты, иконки, CSS подгружаются с CDN — через год этих адресов может не быть, и открыв файл в будущем, увидите страницу без оформления.
- Cookie, localStorage, авторизованное состояние не сохраняются — а именно там часто живёт важная информация (личный кабинет поставщика, ваши комментарии в тендере).
- JS-интерактивность (раскрывающиеся блоки, табы, модальные окна) теряется. Суд не увидит полное содержимое оферты, если её пункты лежали в аккордеоне.
Я видел случай, когда юристы принесли в суд distinct HTML с сайта поставщика — а судья отказался принимать его в качестве доказательства, потому что «из этого файла неясно, что человек реально видел на экране в ту дату». Пришлось проигрывать дело и терять 480 000 руб.
Три задачи, три формата
| Задача | Формат | Инструмент |
|---|---|---|
| Юридическое доказательство (суд, ФАС, нотариус) | PDF + SingleFile | Playwright, SingleFile CLI |
| Архив тендеров отдела закупок | SingleFile | SingleFile CLI, браузерное расширение |
| Мониторинг конкурентов (цены, описания) | Regular HTML + diff | wget, changedetection.io |
| Долгосрочный архив (10+ лет) | WARC | wget --warc, webrecorder |
| Печать/отправка клиенту | Chrome Headless, weasyprint | |
| Быстрое сохранение в один клик | SingleFile | Браузерное расширение SingleFile |
SingleFile — основной инструмент корпоративного архиватора
SingleFile — это браузерное расширение и CLI-утилита, которая сохраняет полную копию страницы в один HTML-файл. Все ресурсы (картинки, шрифты, CSS, inline-JS) встраиваются в файл через data: URI. Открывается в любом браузере без интернета и показывает ровно то, что вы видели на экране.
Установка расширения в Firefox/Chrome занимает 30 секунд. Для корпоративного деплоя я использую автоматический push через GPO (Windows) или MDM (Mac/Linux).
Для автоматизации — CLI-версия на Node.js:
# Установка
npm install -g single-file-cli
# Сохранение одной страницы
single-file https://zakupki.gov.ru/epz/order/notice/ea44/view.html?id=12345 \
--output-filename "tender-12345-$(date +%Y%m%d).html" \
--browser-wait-until networkIdle2
# Пакетная обработка
cat urls.txt | xargs -I{} single-file {} --output-directory /archive/
Для тендера на zakupki.gov.ru типичный файл — 2-6 МБ, со всеми вложенными картинками и JS-виджетами. Открывается в Firefox за секунду, даже через 5 лет после сохранения.
Минус SingleFile: файлы с тяжёлыми галереями раздуваются до сотен МБ. Сайт с 200 фотографиями продукта может превратиться в 150 МБ HTML. На такие случаи мы настраиваем фильтр — исключаем .jpg/.png больше 500 КБ, сохраняем только URL.
Генерация PDF для нотариального заверения
Для суда и нотариуса PDF — главный формат. Во-первых, потому что нотариусы исторически работают с PDF (их программное обеспечение его ест без проблем). Во-вторых, потому что PDF легче подписать электронной подписью с квалифицированным сертификатом (КЭП) — и это юридически значимая копия страницы.
Chrome headless — типовой инструмент:
chromium --headless --disable-gpu \
--print-to-pdf="/archive/offer-20260128.pdf" \
--print-to-pdf-no-header \
--virtual-time-budget=10000 \
https://supplier.example.com/offer/1234
Для более аккуратных PDF с полным рендером SPA я использую Playwright:
const { chromium } = require('playwright');
(async () => {
const b = await chromium.launch();
const p = await b.newPage();
await p.goto('https://supplier.example.com/offer/1234',
{ waitUntil: 'networkidle' });
await p.waitForTimeout(2000);
await p.pdf({
path: '/archive/offer-20260128.pdf',
format: 'A4',
printBackground: true
});
await b.close();
})();
После генерации PDF подписываем КЭП через КриптоПро CSP или CryptoArm — это делает документ юридически значимым.
WARC — для серьёзного долгосрочного архива
WARC — международный стандарт ISO 28500. В WARC-файле хранится не только HTML, но и исходные HTTP-заголовки, request-метаданные, ответы сервера. Это даёт полную реконструкцию того, что происходило при запросе.
Когда нужен WARC:
- Архив сайта конкурента за несколько лет для патентного спора.
- Судебная экспертиза по мошенничеству, где нужно доказать содержимое конкретной страницы в конкретный момент времени с подтверждением HTTP-протокола.
- Крупные закупки (от 10 млн руб.), где архив тендерных условий обязательно нотариально заверяется.
Я использую wget для простых случаев и WebRecorder для сложных:
# Simple WARC через wget
wget --warc-file=tender-20260128 \
--warc-cdx \
--no-check-certificate \
--recursive --level=2 \
https://zakupki.gov.ru/epz/order/notice/ea44/view.html?id=12345
# Получаем:
# tender-20260128.warc.gz (40-200 МБ)
# tender-20260128.cdx (индекс для поиска)
Открывается WARC в ReplayWebPage (replayweb.page) или через Pywb-сервер. Нотариусы пока WARC принимают нехотя — им проще с PDF. Поэтому в реальной практике мы дублируем: WARC для архива, PDF с КЭП — для суда.
Кейс: архиватор для юрфирмы на 18 юристов
В сентябре 2025 года к нам обратилась юридическая фирма: 18 юристов, специализация — споры по поставкам и закупкам. До нас каждый юрист сохранял страницы руками, по-разному: кто-то через Ctrl+S, кто-то скриншотом, кто-то через Evernote. При подготовке к судам выяснялось, что половина сохранённых копий не открывается или не содержит ключевую информацию.
Что мы сделали за 8 рабочих дней:
- Поставили внутренний сервер архивации на Debian 12 в их ЛВС — один KVM на 4 vCPU, 8 ГБ RAM, 2 ТБ NVMe.
- Развернули связку: веб-форма на nginx + backend на Flask + очередь Redis + воркеры SingleFile CLI и Playwright (параллельно).
- Каждая заявка юриста (URL + контекст дела + описание) проходит через три воркера: SingleFile → PDF → SHA-256 от обоих файлов.
- Результат складируется в MinIO S3 с метаданными в PostgreSQL: id, url, timestamp, юрист, номер дела, хеши файлов.
- Автоматически ставится таймер на 3 месяца — архиватор пере-сохраняет те же URL для сравнения (diff по HTML).
- Интеграция с КриптоПро — юрист одним кликом подписывает PDF КЭП компании, подписанный файл сохраняется параллельно.
- Ежедневно в 22:00 — резервная копия всего архива на Synology NAS в офисе + раз в неделю — на offsite NVMe в сейф.
Результат за полгода работы: архив на 14 800 документов, 47 ГБ. Пять судов выиграно с использованием нотариально заверенных PDF из системы, ни один документ не «исчез» между моментом сохранения и судом. Стоимость проекта — 240 000 руб. за настройку плюс 45 000 руб. в месяц на поддержку и обновление.
Мониторинг изменений на сайтах конкурентов и поставщиков
Отдельная полезная задача — следить за изменениями на сайтах. Рекомендую changedetection.io: ставится одним docker-compose, ловит изменения на указанных URL, отправляет diff в Telegram или на email.
# docker-compose.yml
services:
cdio:
image: dgtlmoon/changedetection.io:latest
ports: ["5000:5000"]
volumes: ["./data:/datastore"]
environment:
- PUID=1000
- PGID=1000
Для юрфирмы мы настроили мониторинг 64 сайтов поставщиков клиентов — если меняются условия поставки или цены, автоматически уходит уведомление менеджеру клиентского счёта. За первый месяц поймали три случая, когда поставщики молча поменяли условия договора — двое клиентов сэкономили суммарно 2.2 млн руб. на штрафах.
Куда это всё хранить
Я никогда не советую хранить архив на рабочих станциях сотрудников. Правильные варианты:
- Samba-шара с дедупликацией на Windows Server 2022. Для офиса до 50 человек — типовой выбор. Включайте Data Deduplication, экономит 40-60% места на повторяющихся PDF с тендерных площадок.
- MinIO S3 на Linux-сервере. Если больше 500 ГБ архива — S3-совместимый бэкенд удобнее для поиска и бэкапа. Лицензий не требует.
- Nextcloud с версионированием. Когда нужен ещё и удобный веб-интерфейс с ссылками для юристов и клиентов.
- Резервная копия на NAS + offsite. Правило 3-2-1 — три копии, два носителя, один offsite. Для архива документов — обязательно.
Настроим корпоративный архиватор веб-страниц — от 180 000 руб.
Я лично проектирую и внедряю автоматические архиваторы для юрфирм, отделов закупок и маркетинга в Москве и области. SingleFile + PDF с КЭП + WARC для долгосрочного архива, веб-форма для сотрудников, хранение в Samba/S3/Nextcloud с дедупликацией. Типовой проект — 1-2 недели. Предварительный аудит бизнес-процессов и требований бесплатно.
Телефон: +7 903 729-62-41
Telegram: @ITfresh_Boss
Семёнов Евгений Сергеевич, директор АйТи Фреш
FAQ — архивация HTML для бизнеса
- Зачем бизнесу архивировать веб-страницы?
- Три основные причины: юридические (доказательства оферт и условий договора на момент заключения), закупочные (сохранение состава конкурса на zakupki.gov.ru и коммерческих тендерных площадок), мониторинг конкурентов и цен. Без архивации суд и ФАС вам не поверят на слово.
- Чем SingleFile отличается от PDF-сохранения?
- SingleFile сохраняет полную интерактивную копию страницы в одном HTML-файле с встроенными CSS, JS, картинками — как браузер видел её в момент захвата. PDF даёт только визуальный слой без интерактивности, но легче для печати и отправки в суд. Для юридических целей я рекомендую хранить оба формата.
- Что такое WARC и когда он нужен?
- WARC (Web ARChive) — стандарт консорциума ISO 28500 для долгосрочного архивирования веб-контента. В WARC хранятся HTTP-заголовки, cookies, метаданные. Нужен для крупных архивов (десятки тысяч страниц), когда критична сохранность HTTP-контекста — например, для судебных экспертиз по криптовалюте или расследований.
- Можно ли автоматизировать архивацию в корпоративной сети?
- Да, через SingleFile CLI + cron/Taskscheduler или через WebRecorder Server. Мы ставим сервер архивации на отдельную VM, отдел закупок/юристы отправляют URL через форму — бот сохраняет страницу и выдаёт подписанный SHA-256-хеш для удостоверения неизменности.
- Сколько занимает архив крупных сайтов?
- Одна страница коммерческого тендера — 2-6 МБ в SingleFile, 0.3-1 МБ в PDF. За год отдел закупок накопит 15-40 ГБ. Для хранения отлично подходит Samba-шара с дедупликацией, MinIO S3 или Nextcloud. Затраты на железо — около 5 000 руб. в год за 500 ГБ на NVMe.