Базовый инструмент архивации для Discourse

Форум Discourse, который я использую, через пару недель будет закрыт, поэтому я решил создать его архив. Я провёл много исследований, методом проб и ошибок нашёл простое решение с помощью HTTrack. Вот всё, что я узнал.

Архивирование сайта Discourse с помощью HTTrack
Для пользователей Windows лучшим решением, по-видимому, является HTTrack. Это сработало отлично: сайт был сохранён в виде HTML-файлов. Были архивированы все категории, темы и сообщения, включая все страницы с относительными навигационными ссылками.

Базовое руководство по HTTrack можно найти здесь. Я оставил настройки по умолчанию, но добавил следующие пользовательские параметры:

  • Веб-адреса:
    • https://forums.gearboxsoftware.com/c/homeworld/
    • https://forums.gearboxsoftware.com/c/homeworld-dok/
  • Правила сканирования:
    • -gearboxsoftware.com/* -forums.gearboxsoftware.com/* +forums.gearboxsoftware.com/c/homeworld/* +forums.gearboxsoftware.com/c/homeworld-dok/* +forums.gearboxsoftware.com/t/* +forums.gearboxsoftware.com/user_avatar/* +sea2.discourse-cdn.com/*
  • Идентификатор браузера (также известный как User Agent):
    • Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)

Примечание: Существует проблема с CSS, из-за которой ссылки на категории не работают, однако её можно легко исправить, как описано ниже.

Проблема с CSS
При просмотре страниц категорий как Googlebot ссылки на темы не работают. Пример можно найти здесь.

Это делает навигацию по страницам категорий невозможной в HTTrack, archive.org и кэше Google. Похоже, что это проблема Discourse, связанная с файлом CSS. Чтобы исправить ссылки, просто заблокируйте или удалите следующий CSS-файл:

  • stylesheets/desktop_theme_10_1965d1d398092f2d9f956b36e08b127e00f53b70.css?__ws=forums.gearboxsoftware.com

@codinghorror — Не могли бы вы это исправить?

Трудности
Я столкнулся со следующими трудностями, но в итоге преодолел их после множества проб и ошибок.

  • Страницы Discourse динамически генерируются с помощью JavaScript. Это приводит к плохим результатам при использовании большинства инструментов архивации/сканирования.
  • Большинство тем загружают только первые ~20 сообщений; остальные сообщения появляются только при прокрутке вниз. Нажатие Ctrl+P открывает страницу /print, где видны все сообщения. Пользователи ограничены печатью 5 страниц в час в режиме печати, но этот лимит может быть увеличен администратором сайта Discourse.
  • Adrelanos отметил, что многостраничные темы не архивировались HTTrack должным образом, однако я подозреваю, что эта проблема была связана с его настройками HTTrack, так как у меня её не было.
  • Сохранение страницы в PDF не включает свёрнутые разделы деталей.
  • Страницы можно загрузить в базовом HTML, добавив ?_escaped_fragment_ в конец URL, но этот трюк работает только для тем, а не для категорий.

Упомянутые выше трудности перестают быть проблемой, как только вы узнаете, что все страницы/контент Discourse могут быть корректно отображены как HTML для сканеров. Для этого необходимо изменить идентификатор пользователя (User Agent) вашего сканера/браузера на Googlebot, чтобы получить HTML-версию страниц.

Archive.org
Если вы используете функцию «Сохранить страницу сейчас» на web.archive.org, будет сохранена JavaScript-версия Discourse с плохими результатами. Archive.org использует идентификатор пользователя (User Agent) человека, запрашивающего архив. Поэтому вы должны изменить свой User Agent на Googlebot. Вы можете установить расширение для Chrome под названием «User-Agent Switcher for Chrome». В настройках добавьте:

  • Название: Googlebot
  • Строка: Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
  • Группа: Chrome
  • Индикатор: 1

Альтернативные инструменты архивации
Многие инструменты перечислены здесь: Archive an old forum "in place" to start a new Discourse forum
Я также кратко протестировал GUI-инструменты, такие как Cyotek WebCopy, A1 Website Download и WAIL.
К инструментам командной строки относятся утилита mcmcclur и wget. Руководство по wget можно найти здесь.
Однако для пользователей Windows лучшим решением, по-видимому, является HTTrack.

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