26P by neo 8달전 | favorite | 댓글 3개
  • 웹 페이지를 단일 HTML 파일로 번들링
  • 기존의 "페이지 저장" 기능과 달리, monolith는 대상 문서뿐만 아니라 CSS, 이미지, 자바스크립트 애셋을 한 번에 포함시켜 저장
  • 모든 애셋을 데이터 URL로 내장하여, 네트워크 연결이 없는 상태에서도 인터넷에서와 똑같이 페이지를 렌더링할 수 있게 함
  • Rust로 작성되어 맥/윈/리눅스 모두 설치 가능: cargo/brew/choco/snap/apk..

사용 방법

옵션

  • -a: 오디오 소스 제외
  • -b: 사용자 정의 base URL 사용
  • -B: 특정 도메인에서 자산 검색 금지
  • -c: CSS 제외
  • -C: file에서 쿠키 읽기
  • -d: 지정된 domain(s)에서만 자산 검색 허용
  • -e: 네트워크 오류 무시
  • -E: 사용자 정의 encoding으로 문서 저장
  • -f: 프레임 생략
  • -F: 웹 폰트 제외
  • -h: 도움말 정보 출력
  • -i: 이미지 제거
  • -I: 문서 격리
  • -j: 자바스크립트 제외
  • -k: 유효하지 않은 X.509 (TLS) 인증서 수락
  • -M: 타임스탬프 및 URL 정보 추가 안 함
  • -n: NOSCRIPT 요소의 내용 추출
  • -o: 출력을 file로 작성 (STDOUT을 위해 “-” 사용)
  • -s: 조용한 모드
  • -t: network request timeout 조정
  • -u: 사용자 정의 User-Agent 제공
  • -v: 비디오 제외

도메인 화이트리스팅 및 블랙리스팅

  • -d-B 옵션을 통해 애셋을 검색할 수 있는 도메인을 제어할 수 있음.

동적 콘텐츠

  • Monolith에는 자바스크립트 엔진이 없어 초기 로드 후 데이터를 검색하고 표시하는 웹사이트는 추가 도구가 필요할 수 있음.
  • 예를 들어, Chromium(Chrome)을 사용하여 이러한 페이지에 대한 사전 처리기로 작동시킬 수 있음.

프록시 설정

  • https_proxy, http_proxy, no_proxy 환경 변수를 설정해야 함.

라이선스

  • Creative Commons Zero v1.0 Universal
  • 저자는 가능한 법적 범위 내에서 이 소프트웨어의 모든 저작권 및 인접 권리를 전 세계적으로 퍼블릭 도메인에 헌정함

GN⁺의 의견

  • monolith는 웹 페이지를 오프라인에서도 원본과 동일하게 보존할 수 있는 효과적인 도구로, 연구자나 개발자들에게 유용할 수 있음.
  • 이 도구는 웹 아카이빙이나 콘텐츠 보존에 관심이 있는 사람들에게 특히 매력적일 수 있으며, 인터넷이 연결되지 않은 환경에서도 웹 페이지를 검토할 수 있는 능력을 제공함.
  • 비판적인 시각에서 볼 때, 동적으로 로드되는 콘텐츠를 처리하지 못하는 한계가 있으며, 이는 사용자가 추가적인 도구를 사용해야 하는 번거로움을 초래할 수 있음.
  • 비슷한 기능을 제공하는 다른 프로젝트로는 HTTrack이나 Wget이 있으며, 이들도 웹사이트를 오프라인으로 저장하는 데 사용될 수 있음.
  • monolith를 사용하기 전에, 저장하려는 웹 페이지의 저작권 및 사용 권한을 확인하는 것이 중요하며, 저장된 콘텐츠의 사용 목적이 법적인 문제를 야기하지 않도록 주의해야 함.

번들파일 저장돼서 짜증났는데 1파일 저장이면 땡큐겠네요 ㅎㅎ 정적사이트 아카이브 떠서 웹서버에 올릴 때 유용하겠네요^^

Bicycle - 자전거가 움직이는 원리에 대한 모든 것을 아카이빙 해보았습니다.
기존에 사용하던 비슷한 브라우저 확장으로 SingleFile - 웹페이지를 HTML 파일 하나로 저장해주는 도구가 있었는데요,

두 도구 모두 정상적인 webgl 동작은 하지 않았습니다.
monolith는 아예 모델을 다운로드 하지 않았고
SingleFile은 모델을 다운로드해서 첫 이미지까지는 그려주는데 그 인터렉티브한 동작은 하지 않습니다.

각 출력물의 크기는 2MB와 9MB 입니다. 개발자 도구에서 hard refresh 했을때는 3MB를 다운로드 받습니다.

chrome.exe `  
--headless `  
--incognito `  
--virtual-time-budget=50000 `  
--dump-dom https://ciechanow.ski/bicycle/ | monolith `  
- `  
-I `  
-b https://ciechanow.ski/bicycle/ `  
-o bicycle.html  

Hacker News 의견

  • macOS에서 Google Chrome을 사용하여 JavaScript가 실행된 후의 웹 페이지 HTML 파일을 얻는 방법을 README 파일에서 배움. 자세한 내용은 TIL에 정리하고, Playwright Chromium을 사용하는 자신의 도구인 shot-scraper도 비슷한 기능을 제공함.

    • /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \ --headless --incognito --dump-dom https://github.com > /tmp/github.html
  • 단일 파일 페이지를 가능한 한 배포하는 것을 선호함. 소스 보기를 통해 모든 것을 볼 수 있어야 한다는 원칙 때문. 이러한 페이지들은 자체 포함적이며, 오프라인으로 사용하거나 다시 업로드할 수 있음. TypeScript를 사용하여 게임을 작성하고 이를 단일 HTML 파일로 빌드하는 간단한 빌드 시스템을 만듦. 브라우저가 TypeScript 문법을 지원하게 되면 컴파일러나 빌드 단계가 필요 없어질 것임.

  • SingleFile과의 비교해서 어떤지?

  • 나중에 읽기 위해 웹 페이지를 저장하는 서비스를 자주 사용하지만, 실제로 읽으려 할 때 페이지가 더 이상 존재하지 않는 경우가 많음. 오프라인 아카이브 버전으로 이동하는 것이 더 나은 옵션일 수 있음을 고려 중.

  • Wayback Machine에서 전체 웹사이트를 복원하는 방법에 대한 질문. 사랑하는 웹사이트의 데이터베이스가 삭제되었으나, 모든 내용이 인터넷 아카이브에 존재함. 수동 스크래핑과 파이썬을 사용한 CSS URL 수정 등이 필요할 것으로 보임.

  • 몇 년 전에 비슷한 것을 작성했으며, 주로 Go 프로그램에서 HTML을 생성할 때 사용함. 외부 스타일시트와 자바스크립트에 링크를 사용하고, 이를 단일 HTML 파일로 처리함.

  • 지정된 깊이까지 링크를 따라가는 기능에 대한 지원이 있으면 좋겠다는 의견. Httrack과 유사한 기능을 언급.

  • 이 도구는 흥미롭지만, 브라우저가 웹 페이지를 처리하는 방식에 대한 문제를 해결하기 위한 임시방편이라는 의견. 브라우저가 페이지를 "blah.html" 파일과 "blah_files" 폴더로 저장하는 대신, 둘을 하나의 폴더로 묶어서 쉽게 이동하고 복사할 수 있게 해야 한다고 주장함.

  • wget을 사용하여 웹 페이지와 모든 자산을 다운로드하는 방법에 대한 설명과 문서 링크 제공.

  • 2019년 8월에 해커뉴스에 게시된 "Show HN: CLI tool for saving web pages as a single file"에 대한 관련 링크 제공.