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 Penggunaan | Kenapa cURL Unggul |
|---|---|
| Mengunduh binary di pipeline CI/CD | Bisa di-scripting, tanpa GUI |
| Mengambil respons API atau ekspor data | Mendukung custom header, autentikasi, dan piping output |
| Melanjutkan unduhan file besar lewat SSH | Dukungan resume bawaan (-C -) |
| Mengotomatiskan unduhan berkala (cron job) | Ringan, mudah dipadukan dengan shell script |
| Mengambil file di balik autentikasi | Opsi 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.

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 headerContent-Dispositionserver, 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/-Smenjalankan secara senyap tapi tetap menampilkan error — bagus untuk script yang tidak ingin progress bar memenuhi log.--limit-rate 1Mmembatasi bandwidth (berguna di koneksi bersama atau saat Anda tidak mau menghabiskan kuota jaringan).--connect-timeout 10dan--max-time 300mencegah koneksi yang macet membekukan script selamanya.--retry 3dan--retry-delay 5otomatis mencoba ulang saat ada gangguan sementara — menurut halaman manual cURL, kombinasikan dengan--retry-all-errorshanya kalau mengulang request yang sama memang aman.
Flag Progress dan Debugging
-#menampilkan progress bar sederhana alih-alih tabel statistik bawaan.-vmenampilkan 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.-wmemungkinkan Anda mencetak output kustom setelah transfer, seperticurl -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.

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
--faildengan 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-error— cURL mendokumentasikan keduanya sebagai tidak kompatibel, karena resume butuh file parsial itu tetap ada. - Kesalahan:
-Obisa menimpa file tanpa peringatan. Jika Anda batch-download ke direktori bersama, gunakan--output-diragar 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.
| Alat | Paling Cocok Untuk |
|---|---|
| cURL | Presisi, scripting, unduhan satu file atau batch kecil, interaksi API |
| wget | Unduhan situs secara rekursif/mirror, pengambilan file statis massal yang lebih sederhana |
| aria2 | Unduhan 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 Autentikasi | Flag/Opsi | Paling Cocok Untuk |
|---|---|---|
| Basic auth | -u user:pass | FTP 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-file | CI/CD, lingkungan scripting |

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.
| Gejala | Penyebab Kemungkinan | Solusi |
|---|---|---|
curl: (60) SSL certificate problem | Sertifikat self-signed atau kedaluwarsa | --cacert <file> atau -k (khusus dev) |
403 Forbidden / file kosong | Server memblokir User-Agent default curl | -A "Mozilla/5.0..." atau -H "User-Agent: ..." |
Unduhan mulai dari 0 lagi dengan -C - | Server tidak mendukung Range | Cek dengan curl -I <url> untuk Accept-Ranges: bytes |
| File 0 byte tersimpan | Redirect tidak diikuti | Tambahkan flag -L |
curl: (28) Operation timed out | Server lambat atau masalah jaringan | --connect-timeout 10 --max-time 300 + --retry 3 |
| Halaman HTML tersimpan bukan file | Halaman butuh render JavaScript | curl 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
| Tugas | Perintah |
|---|---|
| Unduhan dasar | curl -LO <url> |
| Nama file khusus | curl -L -o myfile.zip <url> |
| Lanjutkan unduhan | curl -C - -LO <url> |
| Senyap tapi error tetap tampil | curl -sSL -O <url> |
| Unduhan paralel | curl --parallel --parallel-max 5 -O <url1> -O <url2> |
| Autentikasi bearer token | curl -H "Authorization: Bearer <token>" -LO <url> |
| Perintah unduh andalan untuk scripting | curl -LO --retry 5 --retry-delay 3 --max-time 600 --fail <url> |
| Pipe ke alat ekstraksi | curl -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.


