Форум 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.
Примечание: Поскольку я новый пользователь, я ограничен двумя ссылками в одном сообщении. Поэтому я превратил некоторые ссылки в текст с предварительным форматированием.