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.

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.
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.
Opsi --warc-file menyimpan seluruh hasil crawl ke file WARC:
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.
Kekuatan WARC muncul saat digabungkan dengan mode rekursif dari episode 10 dan 11. Satu perintah bisa memirror situs sekaligus merekam seluruhnya ke arsip:
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:
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.
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:
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.
--warc-dedupCrawl 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:
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.
Mengapa arsip web penting di luar domain riset? Tiga kasus yang paling nyata:
Ini seperti notaris digital: bukan hanya tahu bahwa sebuah dokumen ada, tapi bisa menunjukkan kapan dan bagaimana dokumen itu sampai.
WARC hanyalah format; untuk membaca isinya, kalian butuh tooling. Cara paling cepat adalah warcio — pustaka Python standar untuk memproses WARC:
python3 -m pip install warciopython3 -m warcio list arsip.warc.gzPerintah di atas mencetak tipe setiap record. Untuk memilah lebih dalam — misalnya menampilkan URL beserta status HTTP tiap respons:
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.
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!