26 puan yazan GN⁺ 2024-03-25 | 3 yorum | WhatsApp'ta paylaş
  • Web sayfalarını tek bir HTML dosyası halinde paketler
  • Mevcut "sayfayı kaydet" özelliğinden farklı olarak monolith, yalnızca hedef belgeyi değil CSS, görselleri ve JavaScript varlıklarını da tek seferde dahil ederek kaydeder
  • Tüm varlıkları veri URL'leri olarak gömerek, ağ bağlantısı olmasa bile sayfanın internettekiyle aynı şekilde render edilmesini sağlar
  • Rust ile yazılmıştır; macOS/Windows/Linux üzerinde cargo/brew/choco/snap/apk ile kurulabilir

Kullanım

Seçenekler

  • -a: ses kaynaklarını hariç tut
  • -b: özel base URL kullan
  • -B: belirli alan adlarından varlık alınmasını engelle
  • -c: CSS'i hariç tut
  • -C: çerezleri file içinden oku
  • -d: yalnızca belirtilen domain(s) üzerinden varlık alınmasına izin ver
  • -e: ağ hatalarını yoksay
  • -E: belgeyi özel encoding ile kaydet
  • -f: frame'leri atla
  • -F: web fontlarını hariç tut
  • -h: yardım bilgisini göster
  • -i: görselleri kaldır
  • -I: belgeyi izole et
  • -j: JavaScript'i hariç tut
  • -k: geçersiz X.509 (TLS) sertifikalarını kabul et
  • -M: zaman damgası ve URL bilgisi ekleme
  • -n: NOSCRIPT öğelerinin içeriğini çıkar
  • -o: çıktıyı file olarak yaz (STDOUT için "-" kullan)
  • -s: sessiz mod
  • -t: network request timeout ayarla
  • -u: özel User-Agent belirt
  • -v: videoları hariç tut

Alan adı beyaz listeleme ve kara listeleme

  • -d ve -B seçenekleriyle varlıkların alınabileceği alan adlarını kontrol edebilirsiniz.

Dinamik içerik

  • Monolith içinde bir JavaScript motoru yoktur; bu nedenle ilk yüklemeden sonra veri çekip gösteren web siteleri için ek araçlar gerekebilir.
  • Örneğin Chromium (Chrome), bu tür sayfalar için bir ön işleyici olarak kullanılabilir.

Proxy ayarları

  • https_proxy, http_proxy, no_proxy ortam değişkenleri ayarlanmalıdır.

Lisans

  • Creative Commons Zero v1.0 Universal
  • Yazar, mümkün olan yasal kapsam içinde bu yazılım üzerindeki tüm telif haklarını ve bağlantılı hakları dünya genelinde kamu malına adamaktadır

GN⁺ görüşü

  • monolith, web sayfalarını çevrimdışı durumda bile orijinaliyle aynı şekilde koruyabilen etkili bir araçtır ve araştırmacılar ya da geliştiriciler için faydalı olabilir.
  • Bu araç, özellikle web arşivleme veya içerik korumayla ilgilenen kişiler için cazip olabilir; internet bağlantısı olmayan ortamlarda da web sayfalarını inceleme imkanı sunar.
  • Eleştirel açıdan bakıldığında, dinamik olarak yüklenen içeriği işleyememesi bir sınırlamadır ve bu durum kullanıcıların ek araçlar kullanma zahmetine girmesine neden olabilir.
  • Benzer işlevler sunan diğer projeler arasında HTTrack ve Wget bulunur; bunlar da web sitelerini çevrimdışı kaydetmek için kullanılabilir.
  • monolith kullanmadan önce, kaydetmek istediğiniz web sayfasının telif hakkı ve kullanım izinlerini kontrol etmek önemlidir; kaydedilen içeriğin kullanım amacının hukuki sorunlara yol açmamasına dikkat edilmelidir.

3 yorum

 
yangeok 2024-04-04

Bundle dosyası olarak kaydedilmesine sinir oluyordum ama tek dosya olarak kaydediyorsa süper olur haha Statik site arşivi alıp web sunucusuna yüklerken kullanışlı olur ^^

 
secret3056 2024-03-28

Bicycle - Bisikletin nasıl hareket ettiğine dair her şey sayfasını arşivlemeyi denedim.
Daha önce kullandığım benzer bir tarayıcı eklentisi olarak SingleFile - web sayfasını tek bir HTML dosyası olarak kaydetmeye yarayan araç vardı.

Her iki araç da webgl’i düzgün şekilde çalıştırmadı.
monolith modeli hiç indirmedi
SingleFile ise modeli indirip ilk görsele kadar çiziyor ama o etkileşimli davranışı çalıştırmıyor.

Her çıktının boyutu sırasıyla 2MB ve 9MB. Geliştirici araçlarında hard refresh yaptığımda ise 3MB indiriliyor.

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

Hacker News görüşleri

  • README dosyasında, macOS'ta Google Chrome kullanarak JavaScript çalıştıktan sonraki web sayfasının HTML dosyasını nasıl alacağını öğrendiğini söylüyor. Ayrıntıları bir TIL gönderisinde derlemiş ve Playwright Chromium kullanan kendi aracı shot-scraper'ın da benzer bir özellik sunduğunu belirtiyor.

    • /Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome \ --headless --incognito --dump-dom https://github.com > /tmp/github.html
  • Mümkün olduğunca tek dosyalı sayfalar dağıtmayı tercih ettiğini söylüyor. Bunun nedeni, kaynak görüntüleme ile her şeyin görülebilmesi gerektiği yönündeki ilkesi. Bu sayfalar kendi kendine yeterli; çevrimdışı kullanılabiliyor veya yeniden yüklenebiliyor. TypeScript kullanarak oyunlar yazıp bunları tek bir HTML dosyasına derleyen basit bir build sistemi kurmuş. Tarayıcı TypeScript sözdizimini desteklemeye başladığında derleyiciye ya da build aşamasına ihtiyaç kalmayacağını düşünüyor.

  • SingleFile ile karşılaştırıldığında nasıl olduğunu soruyor.

  • Daha sonra okumak için web sayfalarını kaydeden servisleri sık kullandığını, ancak gerçekten okumaya çalıştığında sayfanın artık mevcut olmadığını sıkça gördüğünü söylüyor. Bu yüzden çevrimdışı arşiv sürümüne geçmenin daha iyi bir seçenek olabileceğini düşünüyor.

  • Wayback Machine'den tam bir web sitesinin nasıl geri yükleneceğini soruyor. Sevdiği bir web sitesinin veritabanı silinmiş, ancak tüm içerik Internet Archive'da duruyor. Bunun muhtemelen manuel scraping ve Python ile CSS URL'lerini düzeltme gibi işlemler gerektireceğini belirtiyor.

  • Birkaç yıl önce benzer bir şey yazdığını ve bunu çoğunlukla Go programından HTML üretirken kullandığını söylüyor. Harici stylesheet ve JavaScript bağlantıları kullanıp bunları tek bir HTML dosyasına dönüştürüyor.

  • Belirli bir derinliğe kadar bağlantıları takip etme desteği olmasının güzel olacağını söylüyor. Httrack benzeri bir işlevden bahsediyor.

  • Aracın ilginç olduğunu, ancak tarayıcıların web sayfalarını işleme biçimindeki bir sorunu çözmek için geliştirilmiş geçici bir çözüm gibi göründüğünü söylüyor. Tarayıcıların sayfayı "blah.html" dosyası ve "blah_files" klasörü olarak kaydetmek yerine, bu ikisini tek bir klasörde toplayarak kolay taşınabilir ve kopyalanabilir hale getirmesi gerektiğini savunuyor.

  • wget kullanarak bir web sayfasını ve tüm varlıklarını indirme yöntemini açıklıyor ve belgelere bağlantı veriyor.

  • Ağustos 2019'da Hacker News'te paylaşılan "Show HN: CLI tool for saving web pages as a single file" başlıklı gönderiye ilgili bağlantıyı paylaşıyor.