Dalam tutorial ini, kita akan membahas perintah cURL di Linux. Ikuti terus saat kami memandu Anda melalui fungsi utilitas canggih ini dengan contoh untuk membantu Anda memahami semua kemampuannya.
Anda dapat menggunakan perintah cURL untuk mengunduh atau mengunggah data ke server, menggunakan salah satu dari 20+ protokol yang didukungnya. Data ini bisa berupa file, pesan email, atau halaman web.
Apa itu perintah cURL?
cURL adalah alat yang ideal untuk berinteraksi dengan situs web atau API, mengirim permintaan, dan menampilkan respons ke terminal atau mencatat data ke file. Terkadang Anda dapat menggunakannya sebagai bagian dari skrip yang lebih besar, menyerahkan data ke fungsi lain untuk diproses lebih lanjut.
Karena penggunaan utama cURL adalah untuk mengambil/mengunduh file dari server. Ia melakukan fungsi ini dengan baik, tetapi terkadang perintah wget lebih baik untuk pekerjaan itu.
Kami akan membahas beberapa perbedaan dan persamaan antara wget dan cURL nanti di artikel ini.
Kami akan menunjukkan cara menggunakan cURL di bagian di bawah ini.
Unduh file
Perintah paling dasar yang dapat kita berikan ke cURL adalah mengunduh situs web atau file. cURL akan menggunakan HTTP sebagai protokol defaultnya kecuali kami menentukan protokol yang berbeda. Untuk mengunduh situs web, cukup jalankan perintah ini:
$ curl http://www.google.com
Tentu saja, masukkan situs web atau halaman apa pun yang ingin Anda ambil.
Melakukan perintah dasar seperti ini tanpa opsi tambahan jarang berguna karena ini hanya memberi tahu cURL untuk mengambil kode sumber halaman yang Anda berikan.
Ketika kami menjalankan perintah kami, terminal kami diisi dengan HTML dan kode skrip web lainnya – bukan sesuatu yang sangat berguna bagi kami dalam formulir ini.
Mari unduh situs web sebagai dokumen HTML, dengan begitu konten dapat ditampilkan. Tambahkan opsi –output ke cURL untuk mencapai ini.
$ curl www.likegeeks.com --output likegeeks.html
Sekarang kita dapat membuka situs web yang kita unduh dan menampilkannya di browser web.
Jika Anda ingin mengunduh file online, perintahnya hampir sama. Tapi pastikan untuk menambahkan opsi –output ke cURL seperti yang kita lakukan pada contoh di atas.
Jika Anda gagal melakukannya, cURL akan mengirimkan output biner dari file online ke terminal Anda, yang kemungkinan besar akan menyebabkan malfungsi.
Berikut tampilannya saat kami memulai pengunduhan dokumen word 500KB.
Dokumen kata mulai diunduh, dan itu menunjukkan kemajuan pengunduhan di terminal. Saat unduhan selesai, file akan tersedia di direktori tempat kita menyimpannya.
Dalam contoh ini, kami tidak menentukan direktori, jadi file disimpan ke direktori kerja kami saat ini (direktori tempat kami menjalankan perintah cURL).
Juga, apakah Anda memperhatikan opsi -L yang kami tentukan dalam perintah cURL kami? Itu diperlukan untuk mengunduh file ini, dan kami membahas fungsinya di bagian selanjutnya.
Ikuti pengalihan
Jika Anda mendapatkan output kosong saat mencoba cURL situs web, itu mungkin berarti situs web tersebut memberi tahu cURL untuk mengarahkan ulang ke URL yang berbeda. Secara default, cURL tidak akan mengikuti pengalihan, tetapi Anda dapat memberitahukannya dengan tombol -L.
$ curl -L www.likegeeks.com
Dalam penelitian kami untuk artikel ini, kami merasa perlu untuk menentukan -L di sebagian besar situs web, jadi pastikan untuk mengingat trik kecil ini. Anda bahkan mungkin ingin menambahkannya ke sebagian besar perintah cURL Anda secara default.
Hentikan dan lanjutkan unduhan
Jika unduhan Anda terganggu, atau jika Anda perlu mengunduh file besar tetapi tidak ingin melakukan semuanya dalam satu sesi, cURL menyediakan opsi untuk menghentikan dan melanjutkan transfer.
Untuk menghentikan transfer secara manual, Anda cukup mengakhiri proses cURL dengan cara yang sama seperti Anda menghentikan hampir semua proses yang sedang berjalan di terminal Anda, dengan kombinasi ctrl+c.
Unduhan kami telah dimulai tetapi terputus dengan ctrl+c, sekarang mari kita lanjutkan dengan sintaks berikut:
$ curl -C - example.com/some-file.zip --output MyFile.zip
Sakelar -C adalah yang melanjutkan transfer file kami tetapi juga memperhatikan bahwa ada tanda hubung (-) langsung setelahnya. Ini memberitahu cURL untuk melanjutkan transfer file tetapi untuk melihat terlebih dahulu bagian yang sudah diunduh untuk melihat byte terakhir yang diunduh dan menentukan di mana untuk melanjutkan.
Transfer file kami dilanjutkan dan kemudian melanjutkan untuk menyelesaikan pengunduhan dengan sukses.
Tentukan batas waktu
Jika Anda ingin cURL mengabaikan apa yang dilakukannya setelah jangka waktu tertentu, Anda dapat menentukan batas waktu dalam perintah. Ini sangat berguna karena beberapa operasi di cURL tidak memiliki batas waktu secara default, jadi harus ditentukan jika Anda tidak ingin itu terhenti tanpa batas.
Anda dapat menentukan waktu maksimum untuk mengeksekusi perintah dengan sakelar -m. Ketika waktu yang ditentukan telah berlalu, cURL akan keluar dari apa pun yang dilakukannya, meskipun sedang mengunduh atau mengunggah file.
cURL mengharapkan waktu maksimum Anda ditentukan dalam hitungan detik. Jadi, untuk timeout setelah satu menit, perintahnya akan terlihat seperti ini:
$ curl -m 60 example.com
Jenis batas waktu lain yang dapat Anda tentukan dengan cURL adalah jumlah waktu yang dihabiskan untuk menghubungkan. Ini membantu memastikan bahwa cURL tidak menghabiskan banyak waktu untuk mencoba menghubungi host yang offline atau tidak dapat dijangkau.
Ia menerima detik sebagai argumen:
$ curl --connect-timeout 60 example.com
Menggunakan nama pengguna dan kata sandi
Anda dapat menentukan nama pengguna dan kata sandi dalam perintah cURL dengan sakelar -u. Misalnya, jika Anda ingin mengautentikasi dengan server FTP, sintaksnya akan terlihat seperti ini:
$ curl -u username:password ftp://example.com
Anda dapat menggunakan ini dengan protokol apa pun, tetapi FTP sering digunakan untuk transfer file sederhana seperti ini.
Jika kita ingin mendownload file yang ditampilkan pada screenshot di atas, kita cukup mengeluarkan perintah yang sama tetapi menggunakan path lengkap ke file tersebut.
$ curl -u username:password ftp://example.com/readme.txt
Gunakan proxy
Sangat mudah untuk mengarahkan cURL untuk menggunakan proxy sebelum terhubung ke host. cURL akan mengharapkan proxy HTTP secara default kecuali jika Anda menentukan sebaliknya.
Gunakan sakelar -x untuk menentukan proxy. Karena tidak ada protokol yang ditentukan dalam contoh ini, cURL akan menganggapnya sebagai proxy HTTP.
$ curl -x 192.168.1.1:8080 http://example.com
Perintah ini akan menggunakan 192.168.1.1 pada port 8080 sebagai proxy untuk terhubung ke example.com.
Anda dapat menggunakannya dengan protokol lain juga. Berikut adalah contoh tampilan menggunakan proxy HTTP untuk cURL ke server FTP dan mengambil file.
$ curl -x 192.168.1.1:8080 ftp://example.com/readme.txt
cURL mendukung banyak jenis proxy dan opsi lain untuk digunakan dengan proxy tersebut, tetapi memperluas lebih jauh akan berada di luar cakupan panduan ini. Lihat halaman manual cURL untuk informasi lebih lanjut tentang tunneling proxy, proxy SOCKS, otentikasi, dll.
Unduh file berukuran besar yang terpotong
Kami telah menunjukkan bagaimana Anda dapat menghentikan dan melanjutkan transfer file, tetapi bagaimana jika kami ingin cURL hanya mengunduh sebagian file? Dengan begitu, kita dapat mengunduh file besar dalam beberapa bagian.
Dimungkinkan untuk mengunduh hanya bagian tertentu dari file, jika Anda perlu tetap berada di bawah batas unduhan atau sesuatu seperti itu. Anda dapat menggunakan flag –range untuk melakukannya.
Anda harus menulis ukuran dalam byte. Jadi jika kita ingin mendownload file .iso Ubuntu terbaru dalam potongan 100 MB, perintah pertama kita akan terlihat seperti ini:
$ curl --range 0-99999999 http://releases.ubuntu.com/18.04/ubuntu-18.04.3-desktop-amd64.iso ubuntu-part1
Perintah kedua perlu mengambil byte berikutnya dan mengunduh potongan 100 MB lainnya.
$ curl --range 0-99999999 http://releases.ubuntu.com/18.04/ubuntu-18.04.3-desktop-amd64.iso ubuntu-part1
$ curl --range 100000000-199999999 http://releases.ubuntu.com/18.04/ubuntu-18.04.3-desktop-amd64.iso ubuntu-part2
Ulangi proses ini hingga cURL mengunduh semua potongan. Langkah terakhir adalah menggabungkan potongan menjadi satu file, yang dapat dilakukan dengan perintah cat.
$ cat ubuntu-part? > ubuntu-18.04.3-desktop-amd64.iso
Sertifikat klien
Untuk mengakses server menggunakan otentikasi sertifikat alih-alih otentikasi dasar, Anda dapat menentukan file sertifikat dengan opsi –cert.
$ curl --cert path/to/cert.crt:password ftp://example.com
cURL memiliki banyak opsi untuk format file sertifikat.
Ada lebih banyak opsi terkait sertifikat juga:–cacert, –cert-status, –cert-type, dll. Lihat halaman manual untuk daftar lengkap opsi.
CURL senyap
Jika Anda ingin menekan pengukur kemajuan dan pesan kesalahan cURL, sakelar -s menyediakan fitur itu. Itu masih akan menampilkan data yang Anda minta, jadi jika Anda ingin perintahnya menjadi 100% diam, Anda harus mengarahkan output ke file.
Gabungkan perintah ini dengan flag -O untuk menyimpan file di direktori kerja Anda saat ini. Ini akan memastikan bahwa cURL kembali dengan 0 keluaran.
$ curl -s -O http://example.com
Atau, Anda dapat menggunakan opsi –output untuk memilih tempat menyimpan file dan menentukan nama.
$ curl -s http://example.com --output index.html
Dapatkan header
Meraih header alamat jarak jauh sangat sederhana dengan cURL, Anda hanya perlu menggunakan opsi -I.
$ curl -I example.com
Jika Anda menggabungkan ini dengan opsi –L, cURL akan mengembalikan header dari setiap alamat yang dialihkan.
$ curl -I -L example.com
Beberapa header
Anda dapat meneruskan header ke cURL dengan opsi -H. Dan untuk melewati beberapa header, Anda hanya perlu menggunakan opsi -H beberapa kali. Ini contohnya:
$ curl -H 'Connection: keep-alive' -H 'Accept-Charset: utf-8 ' http://example.com
Poskan (unggah) file
POST adalah cara umum bagi situs web untuk menerima data. Misalnya, ketika Anda mengisi formulir online, ada kemungkinan besar bahwa data dikirim dari browser Anda menggunakan metode POST. Untuk mengirim data ke situs web dengan cara ini, gunakan opsi -d.
$ curl -d 'name=geek&location=usa' http://example.com
Untuk mengunggah file, bukan teks, sintaksnya akan terlihat seperti ini:
$ curl -d @filename http://example.com
Gunakan tanda -d sebanyak yang Anda butuhkan untuk menentukan semua data atau nama file berbeda yang Anda coba unggah.
Anda dapat menggunakan opsi -T jika Anda ingin mengunggah file ke server FTP.
$ curl -T myfile.txt ftp://example.com/some/directory/
Kirim email
Mengirim email hanyalah mengunggah data dari komputer Anda (atau perangkat lain) ke server email. Karena cURL dapat mengunggah data, kami dapat menggunakannya untuk mengirim email. Ada banyak opsi, tetapi inilah contoh cara mengirim email melalui server SMTP:
$ curl smtp://mail.example.com --mail-from [email protected] --mail-rcpt [email protected] --upload-file email.txt
Anda perlu memformat file email Anda dengan benar. Sesuatu seperti ini:
$ cat email.txt From: Web Administrator <[email protected]> To: John Doe <[email protected]> Subject: An example email Date: Sat, 7 Dec 2019 02:10:15 John, Hope you have a great weekend. -Admin
Seperti biasa, opsi yang lebih terperinci dan khusus dapat ditemukan di halaman manual cURL.
Baca pesan email
cURL mendukung IMAP (dan IMAPS) dan POP3, Anda dapat menggunakan keduanya untuk mengambil pesan email dari server email.
Login menggunakan IMAP seperti ini:
$ curl -u username:password imap://mail.example.com
Perintah ini akan mencantumkan kotak surat yang tersedia, tetapi tidak menampilkan pesan tertentu. Untuk melakukannya, tentukan UID pesan dengan opsi –X.
$ curl -u username:password imap://mail.example.com -X 'UID FETCH 1234'
Perbedaan antara cURL dan wget
Terkadang orang membingungkan cURL dan wget karena keduanya mampu mengambil data dari server. Tapi ini adalah satu-satunya kesamaan yang mereka miliki.
Kami telah menunjukkan dalam artikel ini kemampuan cURL. wget menyediakan serangkaian fungsi yang berbeda. wget adalah alat terbaik untuk mengunduh situs web dan mampu melintasi direktori dan tautan secara rekursif untuk mengunduh seluruh situs.
Untuk mengunduh situs web, gunakan wget. Jika menggunakan beberapa protokol selain HTTP atau HTTPS, atau untuk mengunggah file, gunakan cURL. cURL juga merupakan pilihan yang baik untuk mengunduh file individual dari web, meskipun wget juga dapat melakukannya dengan baik.
Saya harap Anda menemukan tutorial yang bermanfaat. Terus kembali.