Cara Mengunduh File dengan cURL: Flag, Solusi, dan Script

Terakhir diperbarui pada August 11, 2026
Hand-drawn file download flowing from a terminal window into a verified folder
Ringkasan AI
Panduan praktis cURL untuk mengunduh file yang membahas redirect, autentikasi, retry, perilaku resume, script batch, verifikasi, dan mode kegagalan yang umum.

Saya sudah menghabiskan begitu banyak malam sampai larut hanya untuk debugging script yang seharusnya cuma “ambil file lalu selesai.” Sering kali, biang keroknya adalah cURL yang menjalankan persis apa yang saya perintahkan, bukan apa yang sebenarnya saya mau. Ternyata, ada jarak yang lumayan jauh antara “curl -O berhasil” dan “curl -O berhasil dengan andal di produksi.”

Panduan ini dibuat untuk menjembatani jarak itu. cURL sudah terpasang secara default di macOS, sebagian besar distro Linux, dan Windows 10 ke atas, jadi kemungkinan besar Anda sudah memilikinya sekarang. Tapi di antara kegagalan redirect yang diam-diam, 403 yang bikin bingung, dan lompatan dari “unduh satu file” ke “unduh 500 file tanpa bikin terminal nge-freeze,” ada banyak titik orang bisa tersandung. Di sini saya akan bahas flag yang paling penting, langkah-langkah perintah yang benar-benar saya pakai, error yang paling sering menjebak orang, dan kapan cURL memang sudah tidak bisa bantu lagi — plus apa yang sebaiknya dipakai sebagai gantinya.

Apa Itu cURL (dan Kenapa Anda Harus Peduli)?

cURL adalah alat command-line gratis dan open-source untuk mentransfer data ke atau dari server lewat URL. cURL mendukung HTTP, HTTPS, FTP, SFTP, dan masih banyak protokol lain, makanya alat ini muncul di mana-mana, mulai dari script bash, Dockerfile, sampai pipeline CI. Di balik layar, perintah curl yang Anda ketik di terminal memakai libcurl, yaitu library transfer C yang juga tertanam di banyak aplikasi dan binding bahasa pemrograman. Ekstensi cURL di PHP adalah salah satu contohnya; sementara library Requests yang populer di Python adalah HTTP client terpisah yang dibangun di atas urllib3, bukan libcurl.

Rilis stabil terbaru saat tulisan ini dibuat adalah curl 8.21.0, dirilis pada Juni 2026 — walaupun jangan mengira OS Anda pasti menyertakan build yang sama persis. Versi curl bawaan distro sering tertinggal beberapa bulan dari proyek upstream, kadang lebih lama, jadi sebaiknya jalankan curl --version dulu sebelum berasumsi flag seperti --parallel sudah tersedia.

Kenapa Mengunduh File Pakai cURL? Kasus Penggunaan Utama

Saya cukup sering ditanya kenapa orang repot-repot pakai alat command-line padahal browser bisa unduh file dengan baik. Jawaban jujurnya: browser bagus sampai Anda perlu mengotomatiskan sesuatu.

Kasus PenggunaanKenapa cURL Unggul
Mengunduh binary di pipeline CI/CDBisa di-scripting, tanpa GUI
Mengambil respons API atau ekspor dataMendukung custom header, autentikasi, dan piping output
Melanjutkan unduhan file besar lewat SSHDukungan resume bawaan (-C -)
Mengotomatiskan unduhan berkala (cron job)Ringan, mudah dipadukan dengan shell script
Mengambil file di balik autentikasiOpsi autentikasi fleksibel (basic, token, cookies, .netrc)

Unduhan lewat browser itu aksi manual sekali klik. cURL mengubah aksi yang sama jadi sesuatu yang bisa dijadwalkan, dirangkai ke pipeline, dicoba ulang kalau gagal, dan dijalankan identik di ratusan server sekaligus. Itulah daya tariknya — bukan lebih canggih, tapi lebih konsisten dan bisa diulang dengan andal.

Alur gambar tangan dari sumber web ke file yang terunduh dan folder lokal

Flag cURL yang Wajib untuk Mengunduh File

Saya terus kembali ke sekitar selusin flag yang sama untuk 90% pekerjaan saya. Berikut cheat sheet yang dulu ingin sekali saya punya, dikelompokkan berdasarkan fungsinya.

Flag Output dan Penyimpanan File

  • -O (--remote-name) menyimpan file memakai bagian terakhir dari URL sebagai nama file. Praktis, tapi bisa menimpa file yang sudah ada dengan nama yang sama tanpa peringatan.
  • -o <filename> (--output) memungkinkan Anda menentukan nama file secara tepat: curl -o report.pdf https://example.com/downloads/file.pdf.
  • -J (--remote-header-name) memakai nama file dari header Content-Disposition server, bukan dari URL. Ini berguna untuk unduhan dari API, tapi anggap nama file dari server sebagai input yang belum tentu tepercaya — unduh ke folder khusus, bukan ke direktori home, sesuai panduan keamanan cURL.

Flag Perilaku yang Dibutuhkan Setiap Unduhan

  • -L (--location) memberi tahu curl untuk mengikuti redirect HTTP. Tanpa ini, respons 3xx akan disimpan sebagai halaman HTML redirect kecil alih-alih file asli Anda — ini kesalahan paling umum yang saya lihat saat orang bertanya, “kenapa unduhan saya rusak?”
  • -C - (--continue-at -) melanjutkan unduhan yang terputus dari titik terakhir.
  • -s / -S menjalankan secara senyap tapi tetap menampilkan error — bagus untuk script yang tidak ingin progress bar memenuhi log.
  • --limit-rate 1M membatasi bandwidth (berguna di koneksi bersama atau saat Anda tidak mau menghabiskan kuota jaringan).
  • --connect-timeout 10 dan --max-time 300 mencegah koneksi yang macet membekukan script selamanya.
  • --retry 3 dan --retry-delay 5 otomatis mencoba ulang saat ada gangguan sementara — menurut halaman manual cURL, kombinasikan dengan --retry-all-errors hanya kalau mengulang request yang sama memang aman.

Flag Progress dan Debugging

  • -# menampilkan progress bar sederhana alih-alih tabel statistik bawaan.
  • -v menampilkan output verbose, termasuk header request/response lengkap — ini jadi andalan saya saat ada sesuatu yang tidak beres.
  • -I (--head) hanya mengambil header respons, bagus sebagai pengecekan awal sebelum melanjutkan unduhan besar.
  • -w memungkinkan Anda mencetak output kustom setelah transfer, seperti curl -o /dev/null -s -w "%{http_code}\n" <url> untuk hanya mengecek status code.

Sebelum Anda Mulai

  • Tingkat Kesulitan: Pemula hingga menengah (bagian batch dan autentikasi sedikit lebih lanjut)
  • Waktu yang Dibutuhkan: Sekitar 15-20 menit untuk mengikuti perintah inti
  • Yang Anda Perlukan: Terminal (macOS Terminal, shell Linux, atau Windows PowerShell/WSL), curl yang sudah terinstal (cek dengan curl --version), dan URL uji — saya akan pakai aset rilis publik GitHub sebagai contoh karena stabil dan bisa diakses gratis

Cara Mengunduh File dengan cURL: Langkah demi Langkah

Langkah 1: Mengunduh Satu File

Dasarnya sangat simpel: curl -O <url> menyimpan file dengan nama aslinya, sedangkan curl -o myfile.zip <url> memungkinkan Anda mengganti nama saat mengunduh.

curl -LO https://github.com/curl/curl/releases/download/curl-8_21_0/curl-8.21.0.tar.gz

Sekarang saya hampir selalu menambahkan -L secara default, tanpa pengecualian — saya sudah terlalu sering kena saat redirect diam-diam mengubah “unduhan” saya jadi file HTML 400 byte. Anda seharusnya melihat meteran progress bergerak di terminal, lalu file muncul di direktori saat ini.

Saat perintah berhasil, progress meter mencapai 100% dan curl-8.21.0.tar.gz muncul di direktori saat ini. Pastikan file-nya benar sebelum dipakai:

ls -lh curl-8.21.0.tar.gz

Langkah 2: Mengunduh dan Mengganti Nama File

Gunakan -o saat Anda ingin nama file lokal tertentu, bukan nama yang kebetulan ada di akhir URL:

curl -L -o curl-latest.tar.gz -S https://github.com/curl/curl/releases/download/curl-8_21_0/curl-8.21.0.tar.gz

-S di sini mengaktifkan lagi tampilan error jika Anda juga memakai -s di bagian lain script. Kombinasi -L -o <name> -S ini pada dasarnya adalah perintah default saya untuk unduhan satu file.

Langkah 3: Melanjutkan Unduhan yang Terputus

Kalau unduhan file besar putus di tengah jalan (Wi-Fi jelek, VPN ngadat, atau apa pun), jangan mulai dari nol. Jalankan:

curl -C - -LO https://example.com/large-file.iso

Catatannya: ini hanya bekerja kalau server mendukung byte-range request. Accept-Ranges: bytes adalah sinyal positif yang berguna, tapi ketiadaannya tidak otomatis berarti range tidak didukung. Cara cek yang paling andal adalah melihat respons server terhadap request range sungguhan: respons yang bisa dilanjutkan biasanya akan mengembalikan 206 Partial Content dengan Content-Range yang valid. Jalankan perintah resume dan periksa status dengan -v atau -D -; kalau server mengabaikan range atau menolak offset, mulai ulang dengan sengaja daripada menganggap file parsial itu aman.

Unduhan cURL yang tangguh melanjutkan setelah terputus dan selesai dengan verifikasi checksum

Langkah 4: Mengunduh dengan Progress Bar (atau Tanpa Tampilan)

Untuk tampilan yang lebih rapi di terminal interaktif: curl -# -LO <url>. Untuk script dan cron job yang cuma butuh error, bukan noise: curl -sS -LO <url>. Saya hampir selalu pakai versi silent kecuali saat debugging manual.

Langkah 5: Membatasi Kecepatan Unduh

Di koneksi kantor bersama, atau saat saya tidak mau jadi orang yang menghabiskan bandwidth waktu meeting video, saya membatasinya dengan:

curl --limit-rate 1M -LO https://example.com/big-dataset.zip

Satuan yang dipakai adalah K, M, dan G untuk kilobyte, megabyte, dan gigabyte per detik.

Langkah 6: Menyimpan Header Respons Bersama File

Kadang saya perlu tahu persis apa yang dikirim server — content type, cache header, dan semacamnya — tanpa bikin terminal penuh:

curl -L -D headers.txt -o file.zip https://example.com/file.zip

Ini menyimpan header respons ke headers.txt sementara file aslinya masuk ke file.zip. Sangat berguna untuk debugging ketidaksesuaian content-type atau memastikan CDN memang melakukan cache seperti yang Anda kira.

Tips & Kesalahan Umum

  • Tip: Selalu default ke -L. Saya benar-benar sulit memikirkan sisi negatif dari menambahkannya, dan saya sudah kehilangan banyak jam karena lupa flag ini.
  • Tip: Saat menulis script, kombinasikan --fail dengan perintah unduhan Anda supaya respons non-2xx benar-benar membuat script keluar dengan error, alih-alih diam-diam menyimpan halaman error seolah-olah itu file Anda.
  • Kesalahan: Jangan gabungkan -C - dengan --remove-on-errorcURL mendokumentasikan keduanya sebagai tidak kompatibel, karena resume butuh file parsial itu tetap ada.
  • Kesalahan: -O bisa menimpa file tanpa peringatan. Jika Anda batch-download ke direktori bersama, gunakan --output-dir agar semuanya tetap rapi.

Cara Mengunduh Banyak File dan Batch Download dengan cURL

Contoh satu file memang bagian yang mudah. Workflow nyata yang saya bangun — menarik ekspor data harian, sinkronisasi binary antar build server — butuh concurrency, dan di sinilah banyak tutorial biasanya berhenti. Ada tiga pendekatan yang layak diketahui, masing-masing dengan tingkat kompleksitas berbeda.

Pendekatan 1: Banyak URL dalam Satu Perintah cURL

Opsi paling sederhana adalah cukup mendaftar URL:

curl -LO https://example.com/a.zip -LO https://example.com/b.zip -LO https://example.com/c.zip

Ini berfungsi, tapi sifatnya berurutan — curl menyelesaikan satu file dulu sebelum memulai file berikutnya. Oke untuk tiga file, bikin capek untuk tiga ratus.

Pendekatan 2: Unduhan Paralel dengan --parallel (curl 7.66+)

Sejak curl 7.66, Anda bisa menambahkan --parallel (atau -Z) untuk mengambil banyak URL secara bersamaan:

curl --parallel --parallel-max 5 --remote-name-all \
  https://example.com/a.zip https://example.com/b.zip https://example.com/c.zip

Yang perlu diketahui: batas paralel default sebenarnya 50, jauh lebih banyak koneksi simultan daripada yang disukai sebagian besar server, atau bahkan jaringan Anda sendiri. Saya lebih suka menulis --parallel-max secara eksplisit dan konservatif — biasanya 4 sampai 8 — daripada mengandalkan default.

Pendekatan 3: xargs dan Bash Loop untuk Concurrency dari Daftar URL

Untuk daftar URL besar yang disimpan di file teks, saya biasanya memakai xargs:

cat urls.txt | xargs -n1 -P 8 curl -O -L

Atau, kalau saya ingin kontrol lebih besar atas tiap pekerjaan, pakai loop bash dengan proses latar belakang:

while read -r url; do
  curl -O -L "$url" &
done < urls.txt
wait

Perintah wait di akhir penting — tanpa itu, script Anda bisa keluar sebelum unduhan di latar belakang selesai.

Kapan Harus Pakai wget atau aria2 sebagai Ganti

Saya akan jujur: cURL tidak selalu alat yang tepat. Kalau Anda perlu menyalin seluruh pohon direktori situs web secara rekursif, wget -r memang dirancang untuk crawling rekursif secara bawaan, sesuatu yang memang bukan tujuan utama cURL. Kalau Anda butuh unduhan multi-source dan tersegmentasi untuk throughput maksimal pada satu file sangat besar, aria2c memang lebih cepat.

AlatPaling Cocok Untuk
cURLPresisi, scripting, unduhan satu file atau batch kecil, interaksi API
wgetUnduhan situs secara rekursif/mirror, pengambilan file statis massal yang lebih sederhana
aria2Unduhan multi-source/tersegmentasi, memaksimalkan throughput pada file besar

Kekuatan cURL selalu ada pada presisi dan kemampuan dirangkai — piping, scripting, fleksibilitas protokol — bukan pada crawling brute-force.

Cara Mengunduh File Proteksi dengan cURL: Pola Autentikasi

Kebanyakan tutorial cURL berhenti di -u user:pass lalu selesai. Itu sisa era internet yang lebih lama. Di 2026, file yang benar-benar saya unduh datang dari REST API, dashboard berbasis sesi, dan sistem CI — dan masing-masing minta jenis kredensial yang berbeda.

Basic Auth

curl -u username:password -O https://legacy-server.example.com/file.zip

Cocok untuk server FTP lawas atau endpoint HTTP sederhana. Tapi ingat, password akan muncul di history shell dan daftar proses kalau Anda tidak hati-hati — bukan sesuatu yang saya sarankan untuk hal sensitif.

Auth Bearer / Token OAuth

Ini yang sebenarnya masih kurang dibahas di banyak panduan, dan ini juga yang paling sering saya pakai sekarang:

curl -H "Authorization: Bearer $GITHUB_TOKEN" \
  -LO https://api.github.com/repos/curl/curl/releases/assets/12345

Itu pola nyata untuk mengambil aset private GitHub release — ganti token dan asset ID sesuai milik Anda. REST API dan resource yang dilindungi OAuth2 pada dasarnya sudah berbicara dengan bahasa ini sekarang.

Autentikasi Berbasis Cookie untuk Sesi

Untuk aplikasi web di mana login membuat sesi, simpan cookie jar saat login lalu gunakan lagi saat mengunduh:

curl -c cookies.txt -d "user=me&pass=secret" https://example.com/login
curl -b cookies.txt -O https://example.com/protected/file.zip

File .netrc untuk Lingkungan Script dan CI

Ini metode favorit saya untuk hal-hal yang berjalan tanpa pengawasan. Buat file ~/.netrc (atau _netrc di Windows):

machine example.com
login myusername
password mypassword

Kunci file tersebut dengan chmod 600 ~/.netrc, lalu gunakan:

curl --netrc -LO https://example.com/protected-file.zip

Keunggulannya adalah kredensial tidak pernah masuk ke history shell atau source script — sangat penting di CI/CD, di mana script sering dicatat secara penuh.

Metode AutentikasiFlag/OpsiPaling Cocok Untuk
Basic auth-u user:passFTP legacy, HTTP sederhana
Bearer token-H "Authorization: Bearer <token>"REST API, OAuth2
Cookie auth-b cookies.txt (+ -c untuk menyimpan)Aplikasi web berbasis sesi
File .netrc--netrc atau --netrc-fileCI/CD, lingkungan scripting

Blok progress gambar tangan, panah retry, dan folder selesai

Mengatasi Kegagalan Unduhan cURL yang Umum

Ini bagian yang sebenarnya saya harap sudah ada waktu saya mulai belajar, karena hampir tidak ada yang membahasnya. “Kenapa download curl saya tidak jalan” adalah pencarian yang nyata, sering banget, dan bikin frustrasi — dan solusinya biasanya cuma satu baris setelah penyebabnya ketemu.

GejalaPenyebab KemungkinanSolusi
curl: (60) SSL certificate problemSertifikat self-signed atau kedaluwarsa--cacert <file> atau -k (khusus dev)
403 Forbidden / file kosongServer memblokir User-Agent default curl-A "Mozilla/5.0..." atau -H "User-Agent: ..."
Unduhan mulai dari 0 lagi dengan -C -Server tidak mendukung RangeCek dengan curl -I <url> untuk Accept-Ranges: bytes
File 0 byte tersimpanRedirect tidak diikutiTambahkan flag -L
curl: (28) Operation timed outServer lambat atau masalah jaringan--connect-timeout 10 --max-time 300 + --retry 3
Halaman HTML tersimpan bukan fileHalaman butuh render JavaScriptcurl tidak bisa menjalankan JS — lihat bagian di bawah

Error SSL Certificate: Artinya Apa dan Cara Memperbaikinya

Error 60 berarti curl tidak bisa memverifikasi sertifikat SSL server — biasanya karena sertifikatnya self-signed, kedaluwarsa, atau diterbitkan oleh CA yang tidak dipercaya curl. Kalau Anda mengontrol server, arahkan curl ke bundle CA yang benar dengan --cacert /path/to/ca.pem. Flag -k (--insecure) melewati verifikasi sepenuhnya, aman untuk lingkungan dev lokal, tapi ide yang sangat buruk untuk hal yang menyentuh produksi atau data pengguna sungguhan.

403 Forbidden dan Unduhan Kosong

Cukup banyak server yang memblokir request yang mengidentifikasi diri sebagai curl/8.21.0 (string User-Agent default curl), karena dianggap bot atau scraper. Solusinya biasanya cukup dengan berpura-pura jadi browser:

curl -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64)" -LO https://example.com/file.zip

Untuk mengecek apa yang benar-benar kembali sebelum melakukan unduhan penuh, saya pakai: curl -o /dev/null -s -w "%{http_code}\n" <url>.

Timeout, Retry, dan Koneksi yang Tidak Stabil

Ini perintah yang akan saya tato di lengan kalau saya lebih berani soal tato.

Perintah unduhan andalan saya, yang benar-benar saya pakai dalam script produksi, menggabungkan semua flag keandalan sekaligus:

curl -L -C - --retry 5 --retry-delay 3 --connect-timeout 10 --max-time 600 --fail -O <url>

Artinya: ikuti redirect, lanjutkan unduhan, retry lima kali dengan jeda 3 detik, timeout koneksi 10 detik, batas total 10 menit, dan gagal keras pada status HTTP yang buruk — intinya semua hal yang saya pelajari harus selalu disertakan.

cURL dalam Otomatisasi Nyata: Pipeline CI/CD, Piping, dan Keamanan Script

Meneruskan Output cURL ke Alat Lain

curl tidak harus menyimpan apa pun ke disk — langsung di-pipe ke command lain adalah salah satu fitur yang paling underrated:

curl -sL https://example.com/archive.tar.gz | tar xz
curl -s https://api.example.com/data | jq '.results'

Unduh lalu ekstrak, atau unduh lalu parse, dalam satu baris. Ini pola yang terus saya pakai untuk pengambilan data sekali jalan.

Menggunakan cURL di GitHub Actions dan CI/CD

Contoh minimal langkah GitHub Actions yang mengunduh binary dengan logika retry dan gagal secara jelas saat error:

- name: Download binary
  run: |
    curl -L --fail --retry 3 --retry-delay 5 \
      -o app-binary "https://example.com/releases/app-binary"

Simpan token sebagai CI secret dan referensikan lewat environment variable — jangan pernah menuliskannya langsung di script. Dan gunakan --fail (atau --fail-with-body kalau Anda perlu melihat isi error untuk debugging) supaya unduhan yang rusak benar-benar mematahkan build, bukan diam-diam dianggap sukses dengan hasil sampah.

Pertanyaan Keamanan curl | sh

Ini hampir selalu muncul di forum developer mana pun yang pernah saya baca, dan ada alasan bagusnya: mengalirkan curl langsung ke sh berarti mengeksekusi kode remote yang belum Anda periksa, hanya bermodal kepercayaan bahwa server tidak dibobol dan koneksinya tidak dimanipulasi. Itu risikonya — bukan paranoid, cuma kekhawatiran rantai pasok yang memang sangat nyata.

Pola yang lebih aman adalah unduh dulu, cek script-nya, verifikasi checksum atau tanda tangan GPG kalau tersedia, baru jalankan:

curl -sL https://example.com/install.sh -o install.sh
cat install.sh   # benar-benar baca isinya
sha256sum install.sh   # bandingkan dengan checksum publik jika ada
bash install.sh

Installer terkenal seperti rustup dan Homebrew masih memakai pola curl | sh, dan umumnya dianggap wajar untuk kasus tertentu karena maintainer serta saluran distribusinya sudah mapan. Tapi saya tetap lebih suka meluangkan 10 detik ekstra untuk memeriksa script daripada menyesal karena terlalu percaya.

Saat cURL Tidak Cukup: Halaman yang Dirender JavaScript, Situs Anti-Bot, dan Data Terstruktur

Ada satu mode kegagalan yang sering bikin orang frustrasi, dan biasanya itu bukan salah mereka: Anda menjalankan curl -O ke halaman yang terlihat normal, lalu alih-alih konten yang diharapkan, yang Anda dapat justru kerangka HTML kosong, atau halaman challenge Cloudflare, atau sesuatu yang tampak acak. curl sudah melakukan apa yang memang dirancang untuk dilakukan — mengambil respons HTTP mentah — hanya saja curl tidak bisa menjalankan JavaScript, menyelesaikan CAPTCHA, atau menembus fingerprinting anti-bot. Itu bukan bug di curl; itu memang di luar tugasnya.

Kenapa cURL Gagal pada Halaman Web Modern

Banyak aplikasi single-page modern cuma mengembalikan kerangka HTML yang hampir kosong, lalu konten aslinya dirender di sisi klien oleh JavaScript setelah halaman dimuat — sesuatu yang tidak pernah dijalankan curl. Selain itu, sistem seperti Cloudflare dan Akamai aktif menampilkan halaman challenge kepada apa pun yang tidak terlihat seperti browser asli, dan request curl berulang dari IP yang sama bisa cepat dianggap traffic bot atau kena rate limit.

Langkah Berikutnya: API Scraping AI untuk Developer

Menurut saya, curl adalah alat yang tepat untuk sekitar 80% kebutuhan unduh file dan data — aset statis, respons API, apa pun yang disajikan sebagai resource HTTP biasa. Sisanya, sekitar 20% yang berat JavaScript atau dilindungi bot, adalah tempat banyak developer menghabiskan berjam-jam melawan header dan user-agent sebelum akhirnya menyerah dan pakai lapisan lain.

Itulah celah yang benar-benar ingin kami tutup dengan Thunderbit, bersama ekstensi Chrome yang paling banyak dikenal orang. Di sisi developer, Open API Thunderbit menyediakan POST /distill, yang mengembalikan Markdown bersih siap LLM dari sebuah URL — dengan rendering halaman ditangani oleh layanan — dan POST /extract, yang mengembalikan JSON terstruktur sesuai skema saat Anda butuh data berbentuk field, bukan teks yang bisa dibaca. Ada juga MCP server supaya agent di Claude atau Cursor bisa memanggil thunderbit_distill dan thunderbit_extract di tengah tugas, serta CLI (npx @thunderbit/thunderbit-cli distill <url>) yang terasa sangat mirip dengan cURL di terminal. Anda bisa menyalurkan output JSON ke jq, misalnya thunderbit distill <url> --format json | jq -r '.data.markdown'; atau kirim output --format markdown ke alat teks atau file.

Kalau dilihat berdampingan, perbedaannya sangat jelas. Request curl ke halaman produk yang dirender JavaScript bisa saja cuma mengembalikan <div id="root"></div> yang nyaris kosong. Sementara perintah thunderbit distill yang setara akan mengembalikan konten halaman yang sudah dirender dalam Markdown bersih. Distill menggunakan 1 credit per URL dan Extract 20 credit per URL. Batas endpoint saat ini juga berbeda: Batch Distill mendukung hingga 100 URL per job, sedangkan Batch Extract menerima hingga 50 URL dengan satu schema bersama. Selalu cek dokumentasi API terbaru sebelum menentukan ukuran antrean produksi.

Kalau Anda masih baru dengan konsep ini secara umum, penjelasan kami tentang apa sebenarnya yang dimaksud dengan web scraping bisa jadi titik awal yang baik, dan panduan scraping tanpa coding membahas sisi non-developer dari masalah yang sama untuk siapa pun di tim Anda yang tidak akan menyentuh terminal. Untuk perbandingan alat yang lebih luas di area ini, kami juga menyusun ringkasan AI web scraper terbaik yang layak dikenali.

Referensi Cepat: Cheat Sheet Unduhan cURL

TugasPerintah
Unduhan dasarcurl -LO <url>
Nama file khususcurl -L -o myfile.zip <url>
Lanjutkan unduhancurl -C - -LO <url>
Senyap tapi error tetap tampilcurl -sSL -O <url>
Unduhan paralelcurl --parallel --parallel-max 5 -O <url1> -O <url2>
Autentikasi bearer tokencurl -H "Authorization: Bearer <token>" -LO <url>
Perintah unduh andalan untuk scriptingcurl -LO --retry 5 --retry-delay 3 --max-time 600 --fail <url>
Pipe ke alat ekstraksicurl -sL <url> | tar xz

Kesimpulan dan Poin Utama

Mengunduh file dengan curl memang sederhana di awal — curl -O dan Anda hampir selesai — tapi keterampilan sebenarnya ada di lapisan bawahnya: tahu kapan harus menambah -L, kapan melanjutkan unduhan alih-alih mulai ulang, pola autentikasi mana yang cocok dengan workflow Anda, dan apa yang harus dilakukan begitu 403 atau kerangka HTML kosong muncul bukan file yang Anda harapkan. Saya sudah mengandalkan semua pola ini setidaknya sekali, biasanya tepat setelah belajar dengan cara yang agak menyakitkan kenapa itu penting.

curl tetap, tanpa ragu, alat default saya untuk unduhan file langsung dan pekerjaan HTTP yang bisa di-scripting — cepat, ada di mana-mana, dan sangat cocok dengan pipeline shell lainnya. Tapi saat Anda menemui halaman yang dirender JavaScript atau dinding anti-bot, itu bukan masalah yang bisa diselesaikan curl dengan lebih banyak flag; itu tanda bahwa Anda butuh lapisan lain, dan di situlah API seperti Thunderbit mengambil alih pekerjaan tanpa memaksa Anda keluar dari terminal.

Simpan cheat sheet ini, coba perintah retry dan resume pada unduhan berikutnya yang tidak stabil, dan kalau Anda mentok di titik di mana curl cuma mengembalikan sampah, Anda sudah tahu langkah berikutnya seperti apa — halaman pricing Thunderbit menampilkan rincian credit terbaru kalau Anda ingin melihat biaya escalation-nya secara konkret, dan channel YouTube kami punya panduan langkah demi langkah kalau Anda lebih suka nonton daripada membaca.

FAQ Tentang Mengunduh File dengan cURL

Bagaimana cara mengunduh file dengan cURL dan menyimpannya dengan nama tertentu?

Gunakan -o diikuti nama file yang Anda mau: curl -L -o namafile.ext <url>. Tambahkan -L supaya redirect tidak mengacaukan unduhan.

Bagaimana cara melanjutkan unduhan cURL yang gagal?

Jalankan curl -C - -LO <url>. Ini hanya bekerja kalau server mendukung range request — cek dulu dengan curl -I <url> dan lihat apakah responsnya memuat Accept-Ranges: bytes.

Apakah cURL bisa mengunduh file yang memerlukan login?

Ya, ada empat cara utama: basic auth (-u user:pass), bearer token (-H "Authorization: Bearer <token>"), sesi berbasis cookie (-b cookies.txt), atau file .netrc untuk lingkungan scripting. Lihat bagian autentikasi di atas untuk penjelasan lengkap dan kapan masing-masing cocok.

Apa perbedaan cURL dan wget untuk mengunduh file?

cURL mendukung lebih banyak protokol dan umumnya lebih baik untuk scripting, piping, dan unduhan satu file atau batch kecil yang presisi. wget dibuat untuk crawling rekursif dan menyalin seluruh direktori situs, jadi lebih cocok untuk pengambilan file statis massal.

Kenapa cURL mengunduh halaman HTML bukan file aslinya?

Biasanya ada dua kemungkinan: Anda lupa flag -L sehingga server mengarahkan Anda ke tempat lain, atau halaman itu memerlukan JavaScript untuk merender konten aslinya — sesuatu yang memang tidak bisa dijalankan curl. Dalam kasus kedua, Anda perlu alat yang bisa melakukan rendering, bukan sekadar lebih banyak flag curl.

Pelajari Lebih Lanjut

Ke
Ke
CTO di Thunderbit | Senior Data Scientist & Expert ML Dengan pengalaman hampir satu dekade di bidang machine learning dan data science, Ke Shen adalah lulusan Columbia University dan mantan Senior Data Scientist di Walmart Labs. Dengan keahlian mendalam yang diakui sejawat dalam Python, R, Java, dan Statistik, ia membagikan wawasan teruji lapangan tentang bagaimana membawa algoritma AI yang kompleks dari teori ke arsitektur siap produksi.
Topics
Unduh file dengan cURLOtomatisasi command-lineTransfer file yang andal
Daftar isi
Thunderbit · Agen data web AI

Ekstrak data dari halaman apa pun dalam 1 klik

Dipercaya 250.000+ pengguna
tersedia paket gratis
Dari halaman web ke spreadsheet
Jelaskan kebutuhanmu — Agen AI Thunderbit akan men-scrape lalu mengekspor ke Excel, Google Sheets, Airtable, atau Notion. Gratis untuk memulai.
Chrome Store Rating
PRODUCT HUNT#1 Product of the Week