Booster (Boosty Downloader) — это высокопроизводительный многопоточный парсер и инструмент для резервного копирования (бэкапа) контента с платформы Boosty.to. Позволяет массово скачивать видео, картинки, аудио, файлы и тексты постов на ваш компьютер.
Проект написан на Go (Golang) для максимальной скорости скачивания, экономного расходования оперативной памяти и портативности. Он работает «из коробки» (zero-dependencies) на Windows, Linux и macOS.
- Умная синхронизация (Бэкап): Инкрементальное обновление. При повторном запуске скачиваются только новые посты. Проверка занимает секунды.
- Докачка файлов (Resume): Если скачивание прервалось или пропал интернет, незавершенные файлы (
.part+Range) будут докачаны с места обрыва. - Тексты в Markdown: Текстовые блоки постов парсятся из внутреннего формата Boosty (Draft.js) и сохраняются в читабельный
.mdсо всеми заголовками, ссылками и жирным шрифтом. - Многопоточность: Умный пул из 5 воркеров максимально нагружает ваш интернет-канал, скачивая медиафайлы параллельно.
- Автоматический выбор качества: Для видео автоматически выбирается наилучшее доступное разрешение (Ultra HD / 1080p).
- Надежность: Автоматические повторные попытки загрузки при ошибках сети и корректное завершение работы (Graceful shutdown) по
Ctrl+C. - Простая авторизация: Получение токена сессии в один клик через JS-скрипт без долгого поиска куки в инструментах разработчика.
В проекте есть готовые скрипты:
build-win.bat— быстрая сборкаbooster.exe.build-releases.bat— массовая сборка релизов под все платформы (Windows, Linux, macOS) и архитектуры (amd64, arm64, x86). Все готовые бинарники складываются в отдельную папкуbuilds/.
Или вручную:
go build -trimpath -ldflags="-s -w -buildid=" -o booster.exe ./cmd/boosterИмя исполняемого файла зависит от вашей ОС и того, какой релиз вы скачали. В примерах ниже используется ./booster.
# Базовый запуск (программа спросит ник в интерактивном режиме)
./booster
# Запуск с указанием автора (ник или ссылка)
./booster -a nickname # или -a https://boosty.to/nickname
# Указание папки для сохранения
./booster -a nickname -o /path/to/downloads
# Плоский режим (все файлы в одну папку без подпапок по постам)
./booster -a nickname -f
# Число параллельных загрузок (по умолчанию 5, максимум 64)
./booster -a nickname -w 12
# Не скачивать фото из внешних галерей, на которые ссылаются посты
./booster -a nickname --no-galleries
# Запуск из скрипта: не ждать Enter в конце
./booster -a nickname --no-waitПригодятся, если запускаете из скрипта или планировщика:
| Код | Значение |
|---|---|
0 |
всё скачано без ошибок |
1 |
критическая ошибка (нет доступа к API, автор не найден) |
2 |
часть файлов не скачалась — см. failed.txt |
130 |
прервано пользователем (Ctrl+C) |
При ошибках отметка синхронизации не обновляется, поэтому следующий запуск повторно обойдёт те же посты и докачает недостающее.
Некоторые авторы выкладывают полные съёмки во внешнюю галерею (платформа
wfolio) и дают ссылку в посте — в самом посте лежат только уменьшенные
превью. Booster распознаёт такие ссылки и забирает галерею целиком одним
архивом, распаковывая её в подпапку gallery_<имя>/ рядом с постом:
2026-07-26_Lina_b7ca72a2/
content.md
001_3ace45fb.jpg ← превью из поста
gallery_lina-mc96q3/
Photos/DSCF7288.jpg ← оригиналы, 1,5 МБ вместо 400 КБ
Готовые галереи помечаются файлом .complete и при следующих запусках
пропускаются, не создавая ни одного обращения к сайту. Запросы к сайту автора
намеренно разрежены во времени, а при отказах загрузка галерей отключается
до конца запуска — иначе сервер банит по IP.
Отключить: --no-galleries. Учтите, что галереи бывают объёмными: у автора
с полусотней съёмок это десяток гигабайт поверх самого Boosty.
Если галерея платная (wfolio умеет продавать фото), Booster сообщит об этом и пропустит её — обхода оплаты нет.
Ролики с YouTube и Vimeo скачать нельзя — Boosty хранит только ссылку на них.
Такие ссылки сохраняются в external_links.txt рядом с постами, чтобы контент
не потерялся. Скачать их можно через yt-dlp:
cut -f3 external_links.txt | yt-dlp -a -Note
Для пользователей Linux: После скачивания бинарного файла необходимо сделать его исполняемым:
chmod +x booster-linux-amd64Warning
Для пользователей macOS: При первом запуске скачанного бинарника macOS заблокирует его (Gatekeeper), так как он не подписан сертификатом Apple. Чтобы разрешить запуск, выполните в терминале (подставьте ваше имя файла):
xattr -rd com.apple.quarantine booster-macos-arm64
chmod +x booster-macos-arm64Альтернативный способ: Правый клик по файлу в Finder → Открыть (Open) → в появившемся предупреждении нажать Открыть (Open Anyway).
Программа идеально подходит для регулярной синхронизации (например, через планировщик):
- Умный пропуск: Полностью скачанные файлы автоматически пропускаются без лишних сетевых запросов.
- Докачка (Resume): Если скачивание прервалось (закрытие программы, обрыв сети), незавершенные файлы (
.part) будут докачаны с места обрыва. - Синхронизация: При новых запусках скачиваются только новые посты и медиафайлы, опубликованные с момента последней проверки.
Токен ищется в переменной окружения BOOSTY_TOKEN,
затем в файле .boosty_token рядом с бинарником, затем в ~/.boosty_token.
Если токена нет или он просрочен — программа пытается скопировать в буфер
обмена JS-скрипт для получения токена из консоли браузера и просит вставить
результат.
Если скрипт автоматически не скопировался в буфер обмена:
- Зайдите на сайт
boosty.toпод своим аккаунтом. - Откройте панель разработчика (обычно
F12илиCtrl+Shift+I) и перейдите на вкладку Console (Консоль). - Скопируйте и вставьте следующий JS-код, затем нажмите Enter:
(function(){function getDecodedCookie(cookieName){const cookies=document.cookie.split(';');r={'%22':'"','%3A':':','%2C':',','%7B':'{','%7D':'}'};for(let c of cookies){const [n,v]=c.trim().split('=');if(n===cookieName&&v){let d=v;Object.entries(r).forEach(([e,dec])=>d=d.replaceAll(e,dec));return d}}return null}if(window.location.hostname==='boosty.to'){const authCookie=getDecodedCookie("auth");if(authCookie){const authObj=JSON.parse(authCookie),token={authorization:authObj.accessToken,expires_in:authObj.expiresAt,full_cookie:document.cookie};console.log("\nJust copy this text:\n\n"+btoa(JSON.stringify(token))+"\n")}else console.warn("Authorization data could not be found. Are you sure you are logged in?")}else console.warn("There is",window.location.hostname,", not boosty.to =)")})();
- Скопируйте появившуюся строку (выглядит как длинная base64 последовательность) и вставьте её в программу.
Идея и оригинальный JS-скрипт авторизации позаимствованы из отличного проекта lowfc/boosty_downloader.
main.go— CLI, сигналы, точка входаauth.go— токен: decode/encode, load/save, буфер обменаclient.go— HTTP-клиент API boosty.to, пагинация, парсинг постов/медиаmodels.go— модели данных (Post, MediaItem)text.go— рендер текстовых блоков поста из формата Draft.js в удобный Markdowntasks.go— построение задач загрузки из постаdownload.go— воркеры, докачка, retrystats.go— статистика загрузкиprogress.go/log.go— однострочный индикатор прогресса и логированиеrun.go— основной цикл (аналогrun()в Python)util.go— safeFilename, signURL, extractNickname, safeUnlink/Replace