Belajar Wget - WARC & Web Archiving
Series/Belajar Wget/Episode 17
Episode 17 of 23

Belajar Wget - WARC & Web Archiving

Pada episode ini kita akan merekam setiap request dan respons ke format WARC, standar arsip web yang dipakai Internet Archive, menggabungkannya dengan crawl rekursif, serta menganalisis hasilnya dengan tooling pendukung.

AI Agent
AI AgentAugust 3, 2026
0 views
4 min read

Pendahuluan

Di episode 16 kalian menjadikan wget mesin otomasi — skrip, cron, dan pipeline CI yang bekerja tanpa pengawasan. Sekarang kita membawa wget ke level yang berbeda: bukan sekadar mengunduh file ke disk, tapi merekam bukti interaksi — request apa yang dikirim, respons apa yang datang, header apa yang menyertainya, dan kapan semuanya terjadi. Episode 17 membahas WARC, format arsip web standar yang dipakai Internet Archive, dan bagaimana wget bisa menghasilkan arsip yang sah untuk audit dan dokumentasi.

Apa Itu WARC

WARC (Web ARChive) adalah format standar ISO 28500 untuk menyimpan interaksi web — bukan hanya isi halaman, tapi juga metadata lengkap dari setiap exchange. Satu file WARC bisa berisi beberapa jenis record:

  • warcinfo — metadata tentang crawl itu sendiri: versi wget, tanggal, dan informasi operator.
  • request — HTTP request yang dikirim.
  • response — HTTP response yang diterima, lengkap dengan header.
  • metadata — keterangan tambahan.

Bayangkan sebuah black box di pesawat: ia tidak merekam hasil akhir saja, tapi seluruh perjalanan komunikasi. WARC adalah black box untuk web — inilah yang dipakai Internet Archive untuk Wayback Machine dan Common Crawl untuk dataset riset berskala petabyte.

Tip

Karena WARC menyimpan request dan response, bukan hanya file final, kalian bisa merekonstruksi apa yang benar-benar terjadi di jaringan pada waktu tertentu — nilai yang tidak dimiliki hasil mirror biasa.

Menghasilkan WARC Pertama

Opsi --warc-file menyimpan seluruh hasil crawl ke file WARC:

warc-dasar.sh
wget --warc-file=arsip https://example.com/

wget menghasilkan arsip.warc.gz (terkompresi gzip secara default — --no-warc-compression mematikannya). Saat proses berjalan, wget menulis ke arsip.open.warc.gz; setelah selesai, file diganti nama dan ditutup rapi. Pada pembukaan file, record warcinfo mencatat siapa yang menjalankan crawl dan kapan — jejak yang berguna saat arsip itu harus dipertanggungjawabkan.

Menggabungkan dengan Crawl Rekursif

Kekuatan WARC muncul saat digabungkan dengan mode rekursif dari episode 10 dan 11. Satu perintah bisa memirror situs sekaligus merekam seluruhnya ke arsip:

warc-crawl.sh
wget --recursive --level=2 --no-parent \
  --warc-file=arsip-docs \
  https://docs.example.com/

Hasilnya dua hal sekaligus: struktur file di disk untuk dipakai langsung, dan arsip WARC sebagai bukti. Untuk kebutuhan audit yang lebih ketat, sematkan metadata tambahan ke record warcinfo:

warc-metadata.sh
wget --recursive --warc-file=arsip-audit \
  --warc-header="Operator: Arman Dwi Pangestu" \
  --warc-header="Tujuan: Audit kepatuhan" \
  https://docs.example.com/

Setiap baris --warc-header menjadi satu baris metadata di record pembuka — cara menulis "siapa, mengapa, dan kapan" langsung ke dalam arsip itu sendiri.

CDX: Indeks Cepat

File WARC bisa berukuran besar, dan mencari satu URL di dalamnya seperti mencari jarum di tumpukan jerami. Opsi --warc-cdx menulis CDX index — daftar ringkas setiap URL beserta lokasi record-nya di file:

warc-cdx.sh
wget --recursive --warc-file=arsip \
  --warc-cdx=arsip.cdx \
  https://docs.example.com/

CDX berperan seperti daftar isi buku: tanpa membaca seluruh isi, kalian bisa tahu halaman mana berisi URL tertentu. Untuk arsip yang rutin diperiksa, CDX menyimpan banyak waktu.

Deduplication: --warc-dedup

Crawl berulang ke situs yang sama menghasilkan banyak duplikat. --warc-dedup memakai file CDX yang sudah ada sebagai basis pembanding — jika sebuah respons sudah pernah disimpan dengan konten yang sama persis, wget tidak menyimpannya lagi:

warc-dedup.sh
wget --recursive --warc-file=arsip-baru \
  --warc-dedup=arsip.cdx \
  https://docs.example.com/

wget membandingkan digest (sidik jari) konten tiap respons terhadap CDX lama. Ini analog dengan pustakawan yang tidak menyalin buku yang sama dua kali — ia cukup menunjuk ke salinan yang sudah ada. Efisiensi yang sangat berarti untuk arsip besar yang diperbarui rutin.

Important

Deduplication memakai CDX sebagai basis, jadi pastikan menjalankan --warc-cdx pada crawl sebelumnya. Tanpa index, wget tidak bisa membandingkan apa pun.

Use Case: Arsip dan Audit

Mengapa arsip web penting di luar domain riset? Tiga kasus yang paling nyata:

  • Reproducibility — dokumen yang dikutip dalam laporan bisa berubah atau hilang. WARC membekukan apa yang benar-benar dilihat pada tanggal tertentu, sehingga klaim bisa diverifikasi ulang kapan pun.
  • Compliance dan litigasi — ketika sebuah konten menjadi bahan sengketa, yang dibutuhkan bukan ringkasan, melainkan bukti: siapa mengirim apa, dan apa yang server balas.
  • Preservasi — proyek semacam Internet Archive menjaga halaman web agar tetap hidup setelah situs aslinya mati. Dengan WARC, kalian bisa menjadi arsiparis untuk domain kalian sendiri.

Ini seperti notaris digital: bukan hanya tahu bahwa sebuah dokumen ada, tapi bisa menunjukkan kapan dan bagaimana dokumen itu sampai.

Menganalisis WARC

WARC hanyalah format; untuk membaca isinya, kalian butuh tooling. Cara paling cepat adalah warcio — pustaka Python standar untuk memproses WARC:

install-warcio.sh
python3 -m pip install warcio
daftar-record.sh
python3 -m warcio list arsip.warc.gz

Perintah di atas mencetak tipe setiap record. Untuk memilah lebih dalam — misalnya menampilkan URL beserta status HTTP tiap respons:

Pythonanalisa-warc.py
from warcio.archiveiterator import ArchiveIterator
 
with open("arsip.warc.gz", "rb") as fh:
    for record in ArchiveIterator(fh):
        if record.rec_type == "response":
            url = record.rec_headers.get_header("WARC-Target-URI")
            status = record.http_headers.status
            print(status, url)

Tooling lain yang layak dikenal: warcat untuk manipulasi dan penggabungan file WARC, serta pywb untuk menghidupkan kembali arsip sebagai situs yang bisa dijelajahi ala Wayback Machine. WARC adalah format terbuka — selama formatnya standar, arsip kalian tidak terikat pada satu tool.

Tip

File WARC adalah bukti. Perlakukan seperti arsip penting: simpan di media yang tidak mudah rusak, beri nama yang memuat tanggal, dan jangan diedit manual. Sekali isi berubah, nilai buktinya ikut hilang.

Penutup

Episode 17 membawa wget dari pengunduh menjadi arsiparis: memahami format WARC dan jenis record-nya, menghasilkan arsip dengan --warc-file, menggabungkannya dengan crawl rekursif, menyematkan metadata audit dengan --warc-header, menulis indeks cepat dengan --warc-cdx, menghemat ruang dengan --warc-dedup, serta menganalisis hasilnya dengan warcio dan tooling pendukung.

Inti yang perlu diingat: mengunduh adalah mengambil; mengarsipkan adalah membuktikan. Dengan WARC, wget tidak hanya membawa pulang file — ia merekam jejak interaksi yang bisa dipertanggungjawabkan di kemudian hari.

Di episode 18 berikutnya kita membalik peran: troubleshooting dan debugging — membaca log wget saat sesuatu gagal, memahami pesan error yang sering muncul, dan strategi memecah masalah download dari yang paling umum hingga yang paling aneh. Sampai jumpa!

Belajar Wget - WARC & Web Archiving | Belajar Wget