내가 사용하는 Discourse 포럼이 몇 주 안에 오프라인으로 전환될 예정이라, 해당 사이트를 아카이브로 저장하기로 했다. 많은 조사와 시행착오를 거친 끝에 HTTrack을 사용한 간단한 해결책을 찾았다. 여기서 배운 모든 내용을 공유한다.
HTTrack으로 Discourse 사이트 아카이브하기
Windows 사용자에게 가장 좋은 해결책은 HTTrack인 것으로 보인다. 이 방법은 훌륭하게 작동했으며, 사이트를 HTML 파일로 아카이브했다. 모든 카테고리, 스레드, 게시글이 상대적 내비게이션 링크를 포함한 모든 페이지와 함께 아카이브되었다.
HTTrack에 대한 기본 튜토리얼은 여기에 있다. 설정은 기본적으로 유지하되, 다음과 같은 사용자 지정 설정을 사용했다.
- Web Addresses:
https://forums.gearboxsoftware.com/c/homeworld/https://forums.gearboxsoftware.com/c/homeworld-dok/
- Scan Rules:
-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/*
- Browser ID (aka 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로 저장하면 접힌 세부 정보 섹션이 포함되지 않는다.
- URL 끝에
?_escaped_fragment_를 추가하면 페이지를 기본 HTML로 로드할 수 있지만, 이 트릭은 카테고리가 아닌 스레드에서만 작동한다.
위 도전 과제들은 모든 Discourse 페이지/콘텐츠가 크롤러를 위해 HTML로 올바르게 렌더링될 수 있다는 사실을 알게 되면 더 이상 문제가 되지 않는다. 이를要做到 하려면, 크롤러/브라우저의 user agent를 googlebot으로 변경하여 페이지의 HTML 버전을 가져와야 한다.
Archive.org
web.archive.org의 “Save Page Now” 기능을 사용하면 JavaScript 버전의 Discourse가 아카이브되며 결과가 좋지 않다. Archive.org는 아카이브를 요청한 사람의 user agent를 사용한다. 따라서 user agent를 googlebot으로 변경해야 한다. "User-Agent Switcher for Chrome"이라는 Chrome 확장 프로그램을 사용할 수 있다. 옵션에 다음을 추가한다:
- Name: Googlebot
- String:
Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) - Group: Chrome
- Indicator Flag: 1
대안 아카이브 도구
많은 도구가 여기 나열되어 있다: Archive an old forum "in place" to start a new Discourse forum
Cyotek WebCopy, A1 Website Download, WAIL과 같은 GUI 도구도 잠시 테스트해 보았다.
명령줄 도구로는 mcmcclur의 도구와 wget이 있다. wget에 대한 튜토리얼은 [여기](https://letswp.justifiedgrid.com/download-discourse-forum-wget/)에 있다.
그러나 Windows 사용자에게 가장 좋은 해결책은 여전히 HTTrack인 것으로 보인다.
참고: 나는 신규 사용자라 게시글당 링크를 두 개까지만 사용할 수 있다. 그래서 일부 링크를 미리 형식화된 텍스트로 변환했다.