Шутка в тему по памяти не помню откуда:

Слушай, а можно как-нибудь дома накачать интернет, а потом по дороге его использовать?

Да, заголовок желтушный. Но какие времена, такие и потребности.

Если отвечать на вопрос в общем виде, то для людей технически подкованных ответ очевиден. Никак, на то это глобальная сеть.

Но есть та часть ресурсов в Интернет, которые можно предварительно скачать и использовать почти также как и оригинал. Например сайты с документацией.

Собственно первый вопрос, который естесственно возникает: "А зачем?". Даже год назад я сам себе мог бы ответить, что потребность в таком инструменте далеко не высокая. Но ситуация явно изменилась. Многие, думаю, застали времена диалап, когда доступ в сеть был по времени и нужно было накачаться впрок. И вот, колесо истории сделало, так сказать, полный оборот. И такие инструменты, как мне видится, могут получить вторую жизнь.

Немного предыстории

Скрытый текст

Давным давно, году в 2016 занимался я переносом одного корпоративного сайта с одной очень большой и очень дорогой системы на другую не такую дорогую CMS. Задача стояла сделать это максимально плавно, что-бы внешние пользователи не заметили подмены. Сложность заключалась в том, что доступа в исходную систему не было. По этому переносили только то, что было видно снаружи.

Я написал небольшой прокси сервер, который занимался принудительным кешированием всех запросов, что через него проходили. И в нужный момент исходный источник данных отключили и все картинки и документы, что были на сайте отдавались уже этим прокси. Profit.

Лежал у меня это проект, лежал. Я его по-немногу обновлял, прикрутил typescript, eslint. Не знал я куда его ещё можно приспособить.

И тут наступили нынешние времена. Я понял, что пора.

Подготовка к разработке

Собственно само решение в технической части было готово. Осталось всего ничего привести его в приличный вид, чтобы нажать кнопочку "Включить" и всё заработало.

И это был отличный повод для меня с одной стороны наконец-то познокомиться с electron, а с другой ворваться в vibe-кодинг и в принципе попробовать в работе агентов. Вроде задача не сложная. Пишешь агенту что делать - он делает.

Хватило меня не надолго, но какое-то фундаментальное понимание процесса появилось. Агент нарисовал мне базовые формы, помог с управлением сертификатами и реализацией переводов приложения на языки. В общем пока впечатления смешанные, будем пробовать дальше.

Принцип работы

Как некоторые, вероятно, догадались, работает приложение в качестве MITM. При запуске генерирует самоподписанные сертификат и предлагает его установить. Для веб-сёрфинга запускает встроенный chrome/chromium с отдельным профилем. Читает http(s) запросы и запоминает их. При offline режиме отдаёт то, что запомнил.

Дополнительный функционал

  1. Автоматическое "Скачивание" сайтов. Можно использовать встроенного робота на базе https://crawlee.dev и https://playwright.dev/, но качество его работы сильно зависит от источника. Он не всегда корректно может словить событие полной заргузки страницы.

  2. Прокси. Не все сайты одинаково доступны. Можно использовать внешний socks5.

  3. Пространства. Скачивать стоит в разные пространства. Один сайт в одно пространство, другой в другое.

  4. Экспорт / Импорт. Пространства можно выгружать в файл и импортировать в другом месте.

Старался сделать минимум кнопок, чтобы без инструкции можно было обойтись.

Главное окно программы.
Главное окно программы.

Заключение

Лично у меня потребность в таком инструменте уже возникла. Некоторые сайты с документацией не открываюся так как должны. Тот же https://electron-vite.org или https://primereact.org/

Наверняка существуют инструменты со сходным функционалом. Но для меня основной целью было освоить новые навыки.

Помимо очевидного, приложение можно использовать для создания старой копии сайта, который его авторы решили обновить или вообще закрыли, а также использовать эти копии в местах где заведомо нет доступа к сети.

Будет отлично, если кому-то этот инструмент тоже пригодится. Если проект действительно окажется актуальным есть идея реализовать HUB для обмена пространствами.

У сообщества хотелось бы попросить пару дельных советов:

  • Под какой лицензией публиковать приложение

  • Можно ли безопасно выгружить и импортировать профили от chrome целиком или какие есть иные способы переноса данных для автозаполнения и истории браузера

Отдельная благодарность друзьям-коллегам за участие в alfa-тесте.

Качать тут

https://github.com/irvinzz/web-memoir/releases

Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Актуальны ли подобные инстументы сегодня
80%Актуально12
20%Не актуально3
Проголосовали 15 пользователей. Воздержались 3 пользователя.