← На главную

kage клонирует сайты без трекеров и JS

14.06.2026 17:25 · hackernews

Вы нажимаете «Save As...» — и через полгода открываете пустой экран или страницу, которая всё ещё пытается достучаться до несуществующего аналитического сервера. kage решает эту проблему иначе: он открывает сайт в настоящем headless Chrome, ждёт полной загрузки, снимает финальный DOM, который увидел бы человек, вырезает оттуда весь JavaScript, скачивает CSS, картинки и шрифты, переписывает пути на локальные — и кладёт на диск папку, которая выглядит как живой сайт, но не исполняет никакого кода. Ни трекеров, ни внешних запросов, никаких сюрпризов.

Ставится одной командой go install github.com/tamnd/kage/cmd/kage@latest или через готовый архив с релиза — .deb, .rpm, .apk. Можно и докер-образом, внутри которого уже есть Chromium. Инструмент сам находит браузер на хосте, но можно указать путь флагом --chrome или переменной KAGE_CHROME.

Основная команда — kage clone. Это вежливый обход в ширину: он читает robots.txt, стартует от sitemap.xml, не уходит с исходного хоста. Каждая страница рендерится ровно один раз — даже если до неё добрались по http и https. Если нажать Ctrl-C, kage сохранит прогресс и продолжит с того же места. Флаг --refresh перерендерит страницы заново, --force сотрёт зеркало и начнёт с нуля.

Готовое зеркало можно посмотреть локально: kage serve поднимает мини-сервер по адресу http://127.0.0.1:8800. Чтобы превратить кучу файлов в один — пригодится kage pack. Он упаковывает всё в открытый формат ZIM — тот самый, на котором держатся Kiwix, офлайн-версии Wikipedia и Stack Overflow. ZIM можно открыть в любом совместимом плеере, не обязательно в kage.

Можно пойти дальше и сделать самодостаточный бинарник: kage pack paulgraham.com --format binary -o paulgraham. Файл ./paulgraham сам поднимает HTTP-сервер — получателю не нужно ничего ставить. Если собрать kage с тегом webview, такой бинарник откроет сайт не в браузере, а в собственном окне операционной системы — на WKWebView, WebView2 или WebKitGTK.

Код полностью открыт под лицензией MIT, живёт на GitHub. Релизы собираются через GoReleaser с подписями cosign и мультиархитектурным образом для Docker.

Читать оригинал →