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….