Mengunduh Secara Massal Menggunakan Curl

Pernah berkeinginan mengunduh banyak berkas dari internet namun ternyata alamatnya diblokir oleh pemerintah?
Saya pernah. Dan berikut cara saya kala itu mengatasinya.

Alat yang biasa digunakan untuk mengunduh secara massal biasanya adalah wget. Alasannya sederhana saja; karena ia biasa telah terpasang di banyak sistem operasi Linux dan kalaupun belum maka memasangnya pun mudah karena umum ada dalam lumbung berkas banyak distro Linux.
Namun saya belum mengetahui cara agar wget bisa memintasi blokir sebuah laman. Jadi untuk keperluan memintasi blokir ini saya beralih ke perkakas serupa bernama curl.

curl belum tentu terpasang dalam sistem Linux, namun untuk memasangnya mudah saja. Misal untuk memasang curl dalam sistem Debian:

sudo apt install curl

Umumnya blokir di Indonesia dilakukan pada tingkat DNS, jadi untuk memintasinya kita gunakan curl dengan parameter --doh-url. Seperti namanya, parameter ini akan menggunakan laman DNS over HTTPS untuk mengelabui sistem blokir penyedia layanan internet.
Misal jika menggunakan DoH dari CloudFlare:

curl --doh-url 'https://cloudflare-dns.com/dns-query' -O TAUTAN_YANG_AKAN_DIUNDUH

karena waktu itu berkas-berkas yang ingin saya unduh adalah berupa gambar-gambar dari laman TAUTAN_YANG_AKAN_DIUNDUH di atas, maka perlu untuk mengumpulkan tautan-tautan dalam laman ini dan menyimpannya ke dalam sebuah berkas.
Parsing atau scrapping laman HTML menggunakan reguler expression (regex) menurut para ahli adalah a big no no, namun karena yang akan dilakukan kali ini bukanlah hal penting maka petuah tersebut bisa diabaikan. Paduan grep dan regex akan menjadi senjata kita kali ini.

Misal tautan dalam laman TAUTAN_YANG_AKAN_DIUNDUH tersimpan sebagai kode HTML berikut:

<a href="http://tautan/ke/gambar/anu.jpg" target="_blank"><img src="http://tautan/ke/gambar/anu.jpg" border="0" alt="" /></a>

Kita gunakan grep untuk menangkap tautan-tautan dalam tag <img> dan menyimpannya ke dalam sebuah berkas.

grep -oP '(?<=<img src=").*?(?=")' TAUTAN_YANG_AKAN_DIUNDUH > daftar_tautan

Perintah di atas akan membaca berkas TAUTAN_YANG_AKAN_DIUNDUH dan menangkap string tepat setelah <img src=" hingga karakter " yang pertama ditemuinya kemudian menyimpannya ke dalam berkas daftar_tautan.

Ada baiknya untuk menyunting berkas daftar_tautan ini karena kemungkinan besar grep menangkap juga tautan-tautan lain yang tidak diinginkan. \

Saat untuk mengunduh berkas-berkas tersebut secara massal menggunakan curl.

xargs -n 1 curl --doh-url 'https://cloudflare-dns.com/dns-query' -O < daftar_tautan

There you go, enjoy the files….