Web İçeriğini Neden Koruyalım?

Web sayfaları, gazeteler, araştırma raporları ve yasal duyuruların modern karşılığıdır. Bir makale, bir ürün lansmanı, bir politika güncellemesi gibi bir anı yakalar—ancak altında yatan kod, üçüncü‑taraf betikleri ve hatta barındırma sunucusu bir gecede kaybolabilir. Kütüphaneciler, araştırmacılar, uyum görevlileri ve güvenilir bir kayda ihtiyaç duyan herkes için bir sayfayı koruma‑hazır formatına dönüştürmek vazgeçilmezdir. Dönüşüm, görsel sadakati korumalı, hiperlinkleri çalışır durumda tutmalı ve arşivin kendini tanımlayıcı kalmasını sağlamak için gerekli üst verileri (yazar, yayın tarihi, kaynak URL) eklemelidir.

Doğru Hedef Formatını Seçmek

Arşivleme iş akışlarını hâkim olan üç format vardır:

  1. PDF/A – uzun vadeli koruma için tasarlanmış ISO‑standardı PDF sürümü. Dış bağımlılıkları yasaklar, yazı tiplerini gömerek saklar ve üst veri içerir. PDF/A‑2 ve PDF/A‑3, gömülü dosyaları ve şeffaflığı destekler; bu da ek veri paketlemek istediğinizde işe yarar.
  2. WARC (Web ARChive) – başlangıçta Internet Archive için geliştirilen bir konteyner formatı. Ham HTTP yanıtlarını, başlıkları, çerezleri ve ikili kaynakları depolar; orijinal sayfanın sadık bir yeniden oluşturulmasını sağlar. Yalnızca görsel renderi değil, tam ağ değişimini korumanız gerektiğinde WARC idealdir.
  3. MHTML (MIME HTML) – HTML, görseller, CSS ve diğer kaynakları çok parçalı bir MIME belgesine paketleyen tek‑dosya temsili. WARC’a göre daha hafiftir ve sayfayı çoğu tarayıcıda görüntülenebilir tutar, ancak PDF/A’nın katı doğrulama garantileri yoktur.

Seçim, nihai amaca bağlıdır: yasal uyum genellikle PDF/A’yı tercih eder, bilimsel arşivleme yeniden üretilebilirlik için WARC’ı, hızlı referans ya da iç dökümantasyon ise MHTML’i seçebilir.

Kaynak Sayfayı Hazırlama

Herhangi bir dönüşümden önce temiz bir kaynak, sonraki hataları azaltır.

Kararlı Bir Anlık Görüntü Yakala

Dinamik sayfalar AJAX ile içerik yeniler, görselleri tembel‑yükler ya da reklamları döndürür. Ağ boşalana kadar bekleyen bir başsız tarayıcı (örn. Puppeteer, Playwright) kullanın, ardından tam bir DOM anlık görüntüsü alın. Üçüncü‑taraf izleyicileri devre dışı bırakmak da sonraki betik hatalarını önleyebilir.

URL’leri Normalleştir ve Göreli Yolları Çöz

Kaynaklar göreli URL’lerle referans gösterildiğinde dönüşüm motoru bunları sayfanın temel URL’sine göre çözmelidir. Tüm src ve href özniteliklerini mutlak URL’lere dönüştüren basit bir ön‑uç betiği, arşivde kırık bağlantıları ortadan kaldırır.

Gereksiz Öğeleri Temizle

Kenarbârlıklar, açılır pencereler ve onay banner’ları arşivi kirletir ve gereksiz bayt ekler. .cookie-consent ya da #ad-container gibi bilinen sınıflara sahip öğeleri kaldıran hafif bir DOM manipülasyonu adımı, çekirdek içeriği kaybetmeden daha temiz bir çıktı üretir.

Dönüşüm İş Akışı

Aşağıda, standart bir iş istasyonu ya da bulut fonksiyonu üzerinde çalıştırılabilecek pratik bir hat hattı verilmiştir. Adımlar kasıtlı olarak belirli bir sırada dizilmiştir; böylece süreç belirlenebilir ve denetlenebilir olur.

1. Sayfayı Sanal Bir Kanvasa Render Et

Başsız bir Chromium örneği kullanarak hazırlanan URL’yi açın, networkidle0 bekleyin ve ardından render edilmiş sayfayı PDF olarak dışa aktarın. Çoğu tarayıcı, komut satırı bayrakları ya da bir uzantı kütüphanesi aracılığıyla PDF/A uyumluluğu belirtmenize izin verir. Motor doğrudan PDF/A’yı desteklemiyorsa, önce yüksek çözünürlüklü bir PDF oluşturun.

2. PDF/A’ya Son‑İşlem Uygula

İlk PDF PDF/A değilse, standardı zorlayan bir dönüşüm aracıyla geçirin — örneğin -dPDFA bayrağıyla Ghostscript ya da convertise.app gibi özel bir hizmet. Araç eksik yazı tiplerini gömer, renkleri cihaz‑bağımsız bir profile (genellikle sRGB) dönüştürür ve JavaScript gibi yasak özellikleri temizler.

3. WARC Dosyası Oluştur (İsteğe Bağlı)

PDF görsel renderı yakalarken, WARC ham HTTP değişimini kaydeder. wget --warc-file=archive ya da warcio Python kütüphanesi gibi araçlar sayfayı ve tüm kaynaklarını tek bir .warc dosyasında toplar. İsteğin Accept‑Encoding: identity başlığını içermesini sağlayın; böylece daha sonra opak hâle gelebilecek sıkıştırılmış yüklerden kaçınılır.

4. MHTML Belgesi Oluştur (İsteğe Bağlı)

Daha hafif, tarayıcı‑dostu bir paket gerekiyorsa, Chrome’un Save AsMHTML seçeneğini kullanın ya da DevTools Protokolü aracılığıyla page.saveAsMHTML()’yi çağırın. Bu adım PDF/A üretimiyle birleştirilebilir: MHTML kaydedildikten sonra aynı dönüşüm platformunda çalıştırarak gömülü varlıkların bütünlüğünü doğrulayın.

5. Üst Verileri Ekle

Üç format da gömülü üst veri destekler. Aşağıdaki alanları doldurun:

  • Başlık<title> etiketi ya da manuel girilen tanımlayıcı.
  • Yazar – varsa <meta name="author"> etiketi.
  • Oluşturulma Tarihi – ISO‑8601 biçimindeki yakalama tarihi.
  • Kaynak URL – orijinal sayfanın adresi.
  • Checksum – bütünlüğü daha sonra doğrulamak için orijinal HTML’in SHA‑256 karması.

PDF/A için bu değerler XMP paketine; WARC için WARC‑Info kaydına; MHTML için MIME başlıklarına eklenir.

Arşivi Doğrulama

Bir dönüşüm, doğrulama kadar iyidir.

Görsel Sadakat Kontrolleri

PDF/A’yı doğrulama‑bilinçli bir görüntüleyicide (Adobe Acrobat Pro, VeraPDF) açın ve seçili sayfaları canlı siteyle karşılaştırın. Eksik karakterler, kırpılmış görseller ya da kaymış tablolar için kontrol edin. WARC için wayback aracı ya da pywb ile arşivi yeniden oynatıp etkileşimli öğeleri gözden geçirin.

Teknik Uyum

  • PDF/A – ISO‑19005 doğrulayıcısını (VeraPDF) çalıştırarak sıkı uyumu teyit edin.
  • WARCwarcat ile kayıt bütünlüğünü inceleyin ve her HTTP başlığının mevcut olduğunu onaylayın.
  • MHTML – Dosyayı Chrome, Edge ve Firefox gibi farklı tarayıcılarda açarak tüm kaynakların doğru render edildiğini doğrulayın.

Kontrol Kumu ve Denetimler

Her oluşturulan dosyanın SHA‑256 karmasını, kısa bir denetim günlüğü (zaman damgası, araç sürümleri, kullanılan komut satırı) ile saklayın. Bu günlük, düzenleyicilerin dijital kanıtlar için sıkça talep ettiği kaynak kaydı (provenance) kaydının bir parçası olur.

Yaygın Tuzaklar ve Önleme Yolları

TuzakBelirtiÇözüm
Eksik Yazı TipleriMetin kutu ya da yedek karakterle gösterilirDönüşüm adımının tüm referans verilen yazı tiplerini gömdüğünden emin olun; başsız tarayıcının web fontlarını render’dan önce indirmesini yapılandırın.
Dış Betikler BozulmuşDüğmeler ya da formlar arşivde çalışmazDönüşümden önce JavaScript’i kaldırın ya da statik yedeklerle değiştirin; WARC için betiği tutun fakat yeniden oynatma sırasında çalıştırılamayacağını not edin.
Kaynak TamamlanmamışGörseller ya da CSS eksik, tasarım çöküyorwget’te --page-requisites bayrağını ya da başsız tarayıcılarda networkidle2 bekleme koşulunu kullanarak tüm varlıkların yüklendiğinden emin olun.
Aşırı Büyük DosyalarWARC ya da PDF/A depolama bütçesini aşarAnalitik betikleri, koşullu yorumları gibi gereksiz kaynakları seçici olarak ayıklayın; görselleri gömmeden önce kayıpsız PNG ya da WebP ile sıkıştırın.
Üst Veri KaybıKaynak URL kaydedilmemişÜst veri eklemeyi son adımda otomatikleştirin; manuel girişe güvenmeyin.

Büyük Ölçekli Arşivleme İçin Otomasyon İpuçları

Yüzlerce ya da binlerce sayfayı korumanız gerektiğinde manuel adımlar uygulanamaz hâle gelir. Tekrar üretilebilir bir hat hattı, konteynerleştirilmiş komut dizileri olarak ifade edilebilir:

# 1. HTML ve kaynakları yakala
wget --warc-file=page-${ID} --adjust-extension --page-requisites --convert-links --no-parent "$URL"

# 2. Başsız Chrome ile PDF/A render et
chrome --headless --disable-gpu \
       --print-to-pdf=page-${ID}.pdf \
       --print-to-pdf-no-header \
       "$URL"

# 3. Ghostscript ile PDF/A uyumluluğunu zorla
gs -dPDFA -dBATCH -dNOPAUSE -sProcessColorModel=DeviceRGB \
   -sDEVICE=pdfwrite -sOutputFile=page-${ID}-pdfa.pdf page-${ID}.pdf

# 4. Kontrol karmalarını hesapla ve denetim günlüğü oluştur
sha256sum page-${ID}-pdfa.pdf > audit-${ID}.log

Bu betiği bir Docker konteyneri içinde çalıştırmak, Chrome, wget ve Ghostscript sürümlerinin makineler arası tutarlılığını garanti eder; bu da denetlenebilirlik için kritik önemdedir.

Bir Formatı Diğerine Tercih Etme Durumları

  • Yasal ya da düzenleyici dosyalar – PDF/A çoğu zaman zorunludur; çünkü tek bir dosyada saklanır ve standart kırılmadan değiştirilemez.
  • Akademik web materyali atıfları – WARC, HTTP başlıkları (örn. ETag, Last‑Modified) gibi kaynak verilerini de koruduğu için en sadık yeniden oluşturmayı sunar.
  • İç bilgi tabanları – MHTML, çalışan bir tarayıcıda doğrudan açılabilen hafif, göz atılabilir anlık görüntüler sağlar.

Dönüşümü Mevcut İş Akışlarına Entegre Etmek

Birçok kuruluş zaten içerik yönetim sistemleri (CMS) ya da dijital koruma platformları kullanır. Dönüşüm hattı, bir izleme listesine yeni bir URL eklendiğinde bir webhook ile tetiklenebilir. Webhook, adımları yukarıda tarif edilen şekilde yürüten bir API uç noktasını (AWS Lambda, Azure Functions vb.) çağırır ve ortaya çıkan dosyaları değiştirilemez bir nesne deposuna (ör. Amazon S3 + Object Lock) yazar. Kilitleme, yanlışlıkla silinmeyi önler ve koruma politikalarını karşılar.

Son Düşünceler

Bir web sayfasını arşivlemek sadece bir ekran görüntüsü almak değildir; görsel düzeni, alt kaynakları ve bağlamsal üst veriyi yakalayan disiplinli bir yaklaşım gerektirir. Hedef formatı (PDF/A yasal kesinlik için, WARC araştırma‑düzeyi sadakat için, MHTML hızlı referans için) doğru seçerek ve tekrarlanabilir, doğrulanmış bir iş akışı izleyerek, bugünün geçici web içeriğinin yıllarca ulaşılabilir ve güvenilir kalmasını sağlarsınız. convertise.app gibi araçlar, format‑özel uyumluluk yükünü üstlenerek sizin küratörye, kaynak kaydı ve uzun vadeli bakım odaklı çalışmalarınıza zaman ayırmanızı sağlar.