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

SingleFile

SingleFile — браузерное расширение для Firefox, Chrome и других браузеров и консольная утилита single-file-cli. Оба сохраняют полную копию веб-страницы в один HTML-файл. Автор — Gildas Lormeau, лицензия AGPL-3.0.

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

✅ Подходит, если нужно:

  • сохранить одну страницу со всеми CSS, изображениями и шрифтами в один самодостаточный HTML;
  • работать в браузере вручную: открыли страницу, нажали кнопку, получили файл;
  • сохранить страницу так, как её видит браузер после выполнения JavaScript.

❌ Не подходит, если:

  • нужна массовая архивация по расписанию: используйте Browsertrix Crawler или wparc;
  • нужен стандартный WARC: SingleFile отдаёт HTML (или ZIP), а не WARC;
  • сайт блокирует автоматизированные браузеры: CLI управляет браузером через протокол отладки, и защита от ботов может это обнаружить.

Как устроено​

SingleFile сериализует текущее состояние страницы (DOM после выполнения скриптов) и встраивает ресурсы в HTML. Расширение работает внутри вашего браузера, поэтому видит страницу так же, как вы, включая сессию входа. single-file-cli запускается через Deno и внедряет тот же скрипт в страницу через Chrome DevTools Protocol (или WebDriver BiDi для Firefox).

По умолчанию скрипты в сохранённую копию не включаются (--block-scripts включён): файл открывается как статичный снимок. Отложенные (lazy-loaded) изображения подгружаются перед сохранением (--load-deferred-images, тоже включён по умолчанию).

Установка​

Браузерное расширение​

CLI​

Варианты из README single-file-cli:

# готовый исполняемый файл: скачать со страницы релизов
# https://github.com/gildas-lormeau/single-file-cli/releases

# через npm (нужен Deno)
npm install single-file-cli
npx single-file --help

# через Docker
docker pull capsulecode/singlefile
docker run capsulecode/singlefile "https://example.com" > page.html

Нужен установленный Chrome или Chromium; путь к нестандартной установке задаётся --browser-executable-path. Firefox подключается через --browser-engine firefox (с ограничениями, описанными в справке).

Команды и флаги сверены с README и options.js single-file-cli 2.18.1 (октябрь 2026). Утилита локально не запускалась.

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

Браузерное расширение​

  1. Откройте страницу, которую хотите сохранить.
  2. Нажмите на иконку SingleFile на панели инструментов.
  3. Файл сохранится в папку загрузок.

CLI​

Синтаксис: single-file <url> [output] [options ...]. Имя выходного файла — второй позиционный аргумент.

# сохранить страницу в page.html
single-file https://example.com page.html

# вывести HTML в консоль
single-file https://example.com --dump-content

# список URL из файла, результаты — в существующий каталог
single-file --urls-file=urls.txt --output-directory=./saved

# подождать 5 секунд перед сохранением и удалить фреймы
single-file https://example.com page.html --browser-wait-delay=5000 --remove-frames

# сохранить с выполняемыми скриптами (по умолчанию они блокируются)
single-file https://example.com page.html --block-scripts=false

# записать манифест того, что наблюдалось при сохранении (для последующей проверки)
single-file https://example.com page.html --manifest

Страница, доступная после входа: сначала создайте профиль браузера и войдите на сайт, затем используйте профиль:

single-file --create-browser-profile ./profiles/example https://www.example.com/login
single-file https://www.example.com/account account.html --browser-profile=./profiles/example

Обход внутренних ссылок (небольшие сайты):

single-file https://example.com --crawl-links=true --crawl-inner-links-only=true --crawl-max-depth=1

Полезные флаги:

ФлагЧто делает
--output-directoryКаталог для файлов (должен существовать)
--filename-templateШаблон имени файла, например {page-title}.html
--urls-fileФайл со списком URL
--block-scriptsНе включать скрипты в копию (по умолчанию true)
--remove-framesУдалить фреймы
--browser-wait-delayПауза перед сохранением, мс
--browser-wait-untilКогда считать страницу загруженной (по умолчанию networkIdle)
--browser-load-max-timeМаксимальное время загрузки, мс (по умолчанию 60000)
--browser-cookies-fileФайл cookies
--compress-contentСохранить в ZIP вместо HTML
--crawl-links, --crawl-max-depthОбход ссылок

Полный список — single-file --help.

Сравнение с другими решениями​

ИнструментБраузерное расширениеCLIВыполняет JS при сохраненииЯзык
SingleFile✅✅✅ (через браузер)JavaScript
monolith❌✅❌Rust (CLI и библиотека)
Obelisk❌✅❌Go (CLI и библиотека)

SingleFile — основной вариант для страниц, которым нужен JavaScript. monolith и Obelisk удобны там, где не хочется запускать браузер.

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

  • Файл может быть очень большим (десятки мегабайт) для страниц с длинной лентой или видео.
  • Не подходит для больших сайтов и глубокого рекурсивного обхода.
  • Не создаёт WARC: HTTP-заголовки и исходные ответы сервера не сохраняются. Если нужен WARC, используйте Browsertrix или ArchiveWeb.page.
  • Ресурсы встраиваются как data:-URI в base64, это увеличивает размер файла примерно на треть по сравнению с исходными бинарными файлами.

Что дальше​

  • Нужен стандартный WARC и поиск по тексту — соберите страницу в WARC и проиндексируйте metawarc.
  • Регулярная автоматизация — Browsertrix Crawler.

Ресурсы​

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