Discourseフォーラムが数週間後にオフラインになるため、サイトをアーカイブすることにしました。多くの調査と試行錯誤を経て、HTTrackで簡単な解決策を見つけました。学んだことをすべて紹介します。
HTTrackでDiscourseサイトをアーカイブする
Windowsユーザーの場合、最善の解決策はHTTrackのようです。これはうまく機能し、サイトをHTMLファイルにアーカイブしました。すべてのカテゴリ、スレッド、投稿が、相対ナビゲーションリンクを持つすべてのページを含めてアーカイブされました。
HTTrackの基本的なチュートリアルはこちらにあります。設定はデフォルトのまま、以下のカスタム設定を使用しました。
- Webアドレス:
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/*
- ブラウザID(別名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ページが読み込まれます。ユーザーは印刷モードで1時間に5ページしか印刷できませんが、この制限はDiscourseサイト管理者によって増加させることができます。 - Adrelanosは、複数ページの投稿がHTTrackによって正しくアーカイブされていないと指摘しましたが、これは私の設定では問題なかったので、彼のHTTrack設定によるものだと推測します。
- ページをPDFとして保存しても、折りたたまれた詳細セクションは含まれません。
- URLの末尾に
?_escaped_fragment_を追加することで、ページを基本的なHTMLで読み込むことができますが、このトリックはスレッドにのみ機能し、カテゴリには機能しません。
上記の課題は、すべてのDiscourseページ/コンテンツがクローラーに対してHTMLとして正しくレンダリングされることを知れば、問題ではなくなります。これを行うには、クローラー/ブラウザのユーザーエージェントをGooglebotに変更して、ページのHTMLバージョンを取得する必要があります。
Archive.org
web.archive.orgの「Save Page Now」機能を使用すると、DiscourseのJavaScriptバージョンがアーカイブされ、結果が悪くなります。Archive.orgは、アーカイブを要求しているユーザーのエージェントを使用します。そのため、ユーザーエージェントを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
Cyotek WebCopy、A1 Website Download、WAILなどのGUIツールも簡単にテストしました。
コマンドラインツールには、mcmcclurのツールやwgetが含まれます。wgetのチュートリアルはこちらにあります。
しかし、Windowsユーザーの場合、最善の解決策はHTTrackのようです。
注: 新規ユーザーのため、投稿できるリンクは2つに制限されています。そのため、一部のリンクをプリフォーマットテキストに変換しました。