Belajar Wget - Recursive Download & Spider
Episode 9 of 23

Belajar Wget - Recursive Download & Spider

Merangkak di dalam situs dengan recursive download, mengendalikan kedalaman dan batas direktori, menghormati robots.txt, serta memanfaatkan mode spider untuk memeriksa ketersediaan link tanpa mengunduh konten.

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

Pendahuluan

Di episode 8 kalian merapikan wget lewat file konfigurasi. Sekarang saatnya fitur yang paling ikonik sekaligus paling berbahaya: recursive download. Dengan satu opsi -r, wget berubah dari alat download sederhana menjadi crawler — ia mengikuti link dari halaman ke halaman, mengunduh semuanya, lalu mengikuti lagi link dari halaman yang baru diunduh.

Kekuatan ini harus diimbangi kontrol. Tanpa batas yang jelas, -r bisa mengunduh situs jauh lebih besar dari yang kalian bayangkan, menghabiskan bandwidth, dan membebani server. Episode ini mengajarkan cara merangkak dengan benar: kedalaman, batas direktori, etika robots.txt, dan mode spider yang menghemat semuanya.

Rekursi Dasar: -r

Opsi -r (recursive) mengaktifkan perangkakan. Wget mengambil halaman yang kalian berikan, mengurai semua link di dalamnya, mengunduh yang relevan, lalu mengulang proses dari halaman yang baru diunduh:

Rekursi dasar
wget -r http://docs.example.com/guide/

Mekanisme ini seperti mengikuti petunjuk berantai: setiap halaman memberi tahu wget ke mana harus berjalan berikutnya. Secara default, wget membatasi diri pada host yang sama dengan URL awal (tidak melompat ke domain lain), dan kedalaman maksimal bawaan wget adalah 5 level. Batasan bawaan ini sengaja dibuat konservatif untuk melindungi kalian dari kesalahan besar.

Batas Kedalaman: -l N

Level kedalaman menentukan seberapa dalam wget menyusuri struktur link. Analogikan dengan pohon folder: level 1 adalah URL awal, level 2 adalah halaman yang dirujuk URL awal, level 3 adalah halaman yang dirujuk oleh halaman-halaman tersebut, dan seterusnya.

Batasi kedalaman dua level
wget -r -l 2 http://docs.example.com/guide/
Kedalaman tak terbatas
wget -r -l inf http://docs.example.com/guide/

Menetapkan -l 2 membatasi wget pada halaman awal dan halaman yang langsung dirujuknya — sangat masuk akal untuk dokumentasi yang hanya butuh satu lapis sub-halaman. Nilai -l 0 atau -l inf berarti tak terbatas; gunakan hanya saat kalian benar-benar menginginkan seluruh situs, biasanya bersama dengan batasan direktori di bawah ini.

Tidak Naik ke Parent: -np

Masalah klasik rekursi: banyak halaman berisi link relatif seperti ../ yang menunjuk ke direktori di atas. Tanpa pengaman, wget bisa "naik" ke direktori induk dan tanpa sadar mengunduh seluruh situs dari atas — jauh melebihi bagian yang kalian inginkan.

Rekursi tanpa naik ke direktori induk
wget -r -np http://docs.example.com/guide/

Opsi -np (no-parent) memastikan wget tidak pernah naik ke direktori di atas titik awal. Ini adalah pengaman yang paling sering dipakai dalam praktik: kalian menargetkan guide/, dan wget berhenti di sana — tidak peduli berapa banyak link ../ yang ditemuinya. Biasakan menulis -np setiap kali merekursi subdirektori situs.

Menghormati robots.txt

Wget memiliki etika bawaan: dalam mode rekursif, ia mengunduh dan mematuhi file robots.txt milik situs. Jika file itu menyatakan suatu path tidak boleh diakses bot, wget akan melewatkannya.

Contoh robots.txt sebuah situs
User-agent: *
Disallow: /admin/
Disallow: /search

Bypass tetap dimungkinkan lewat -e robots=off, karena robots adalah variabel yang bisa diubah saat runtime. Namun ini adalah senjata yang harus digunakan dengan sangat hati-hati — hanya untuk konten yang memang berhak kalian ambil dan dengan kesadaran penuh bahwa kalian sedang mengabaikan permintaan pemilik situs.

Warning

Mematikan robots.txt bukan cara untuk menembus pembatasan akses. Itu etika yang buruk dan bisa berujung pada pemblokiran IP atau pelanggaran ketentuan layanan. Gunakan -e robots=off hanya pada situs milik kalian sendiri atau yang secara eksplisit memberi izin, dan beri jarak antar request dengan -w agar tidak membebani server.

Rekursi menghasilkan banyak request dalam waktu singkat — dan request yang membeludak adalah cara tercepat untuk membuat IP kalian diblokir. Opsi -w (wait) memaksa wget menunggu sejumlah detik sebelum setiap request:

Rekursi dengan jarak antar request
wget -r -np -w 2 http://docs.example.com/guide/

Perintah di atas berhenti dua detik di antara setiap request. Untuk rekursi yang menjangkau situs besar, -w bukan sekadar sopan santun — ia menjaga kalian tetap disambut server dan mengurangi risiko rate limiting. Saat merangkak situs orang lain, nilai -w 1 hingga -w 5 adalah praktik umum yang baik; untuk situs kalian sendiri, silakan bebas.

Tidak semua pekerjaan wget berakhir dengan file di disk. Terkadang yang kalian butuhkan hanyalah jawaban: apakah URL ini masih hidup? Untuk itu ada mode spider:

Periksa satu URL
wget --spider http://example.com/halaman

Dalam mode spider, wget hanya mengirim request dan membaca respons tanpa menyimpan konten apa pun. Output standar menampilkan Remote file exists. jika halaman ditemukan, atau pesan error 404 jika tidak. Fitur ini mengubah wget menjadi pemeriksa link dan alat monitoring yang ringan — tanpa membanjiri disk.

Untuk memeriksa banyak link sekaligus, kombinasikan dengan input file dan -nv untuk output yang bersih:

Periksa banyak URL dari file
wget --spider -nv -i daftar-url.txt

Setiap baris di daftar-url.txt diperiksa satu per satu. Ini pola yang pas untuk audit berkala: ambil semua link dari halaman profil atau sitemap, simpan ke file, lalu jalankan spider untuk menemukan link yang mati.

Tip

Wget menandai hasil lewat exit code: 0 berarti semua URL ditemukan, 8 berarti ada URL yang gagal (404 atau error). Di dalam script, periksa nilai exit code untuk memicu alert — misalnya wget --spider -nv -i daftar-url.txt && echo "semua sehat". Ini fondasi sederhana untuk monitoring link di CI.

Pola spider paling berguna ketika dijalankan berulang — misalnya setiap malam melalui cron. Simpan daftar URL penting (halaman landing, halaman produk, endpoint status), lalu jalankan audit otomatis:

Script audit link sederhana
URLS=( https://example.com/ https://example.com/produk https://example.com/status )
for url in "${URLS[@]}"; do
  if wget --spider -q "$url"; then
    echo "OK $url"
  else
    echo "FAIL $url"
  fi
done

Script di atas mencetak status tiap URL dan menandai yang gagal. Dijadwalkan lewat cron, ia menjadi sistem peringatan dini: jika sebuah halaman penting mulai mengembalikan 404, kalian mengetahuinya dalam hitungan jam — bukan setelah pelanggan mengeluh. Potongan ini memakai syntax array bash; jika shell kalian bukan bash, versi sederhana yang memproses daftar URL di satu baris pun sudah cukup.

Penutup

Episode 9 membekali kalian dengan perangkakan yang terkendali: rekursi dasar dengan -r, batas kedalaman dengan -l N, pengaman -np agar tidak naik ke parent, penghormatan terhadap robots.txt dengan bypass yang penuh tanggung jawab, kesopanan antar request dengan -w, serta mode spider untuk memeriksa ketersediaan URL tanpa mengunduh konten.

Inti yang harus dibawa pulang: rekursi memberi wget kekuatan, dan kontrol memberi kalian ketenangan. Selalu tetapkan -np dan kedalaman yang masuk akal, hormati robots.txt, dan gunakan --spider untuk pekerjaan yang hanya butuh jawaban ya atau tidak.

Di episode 10 berikutnya semua elemen ini dirangkai menjadi fitur andalan wget: website mirroring — satu perintah untuk menyalin seluruh situs ke disk, lengkap dengan halaman, aset, dan link yang bisa dibuka secara offline. Sampai jumpa!