Tutorial CURL ini membahas tentang opsi CURL yang paling sering digunakan serta tips & triknya. Cocok untuk kamu yang tidak sabaran buat belajar CURL.
Mengunduh Data
Unduh data dengan CURL simpel, cukup dengan:
curl https://example.com
Akan tetapi, data yang diunduh dikirim ke stdout apabila tidak diberi opsi, untuk menyimpan data ke file bisa dengan fitur shell redirect atau opsi CURL -o
/ --output
.
Dengan shell redirect:
curl https://example.com > nama-file.html
Dengan opsi -o
CURL:
curl https://example.com -o nama-file.html
Menulis nama file setiap kali mengunduh agak merepotkan, apalagi bila yang akan diunduh ada banyak sekali.
CURL punya fitur agar nama file otomatis dibuatkan berdasarkan URL dengan opsi -O
/ --remote-name
.
curl -O URL
Sayangnya dengan opsi di atas, CURL tidak mendekode URL (enkoding persen), akibatnya nama filenya akan sulit dikenali apabila mengandung karakter spesial seperti Hello%20%E0%B6%9E
.
Untungnya ada cara agar nama file yang dihasilkan agar perfek, yaitu dengan opsi -J
/ --remote-header-name
.
curl -OJ URL
Dengan opsi ini, CURL akan mengambil nama file dari header respons Content-Disposition.
Melanjutkan Unduhan
Saat koneksi terputus, unduhan tetap bisa dilanjutkan dengan opsi CURL -C -
/ --continue-at -
.
curl -C - -o nama-file URL
Pengalihan
Terkadang ada pengalihan setelah mengirimkan permintaan HTTP.
CURL tidak mengikuti pengalihan ke URL baru secara otomatis, sehingga perlu diatur dengan opsi -L
/ --location
agar URL baru tersebut diikuti oleh CURL.
curl -L URL
Glob
Fitur glob default aktif pada CURL, akan tetapi fitur glob ini bisa bermasalah pada kasus di mana URLnya belum dinormalisasi dengan benar, karena URL seperti itu kadang mengandung karakter yang digunakan untuk glob seperti []
, *
, dan ?
.
Untuk menonaktifkan fitur ini gunakan opsi -g
/ --globoff
:
curl -g 'https://example.com/[Fansub]%20Judul%20-%2001.mp4'
IPv4 & IPv6
Salah satu fitur dari CURL adalah bisa memilih versi IP, salah satu contoh penggunaannya untuk mengecek alamat IPv4 atau IPv6 yang kamu gunakan saat ini.
IPv4:
curl -L -4 ipsaya.id
IPv6:
curl -L -6 ipsaya.id
Manipulasi Permintaan HTTP
Metode seperti GET
dan POST
umum digunakan pada operasi CRUD
(Create, Read, Update, Delete) REST API.
Opsi yang digunakan untuk mengatur jenis metode HTTP pada CURL adalah -X
/ --request
.
curl -X DELETE URL
Sedangkan untuk menambahkan header pada permintaan HTTP, opsi CURL yang digunakan adalah -H
/ --header
.
curl -H "Accept: application/json" URL
HTTP HEAD
CURL punya opsi versi pendek untuk mengirim permintaan HTTP dengan metode HEAD tanpa menggunakan opsi -X
.
curl -I https://example.com
Opsi ini digunakan untuk mengambil informasi header respons dari server tanpa mengunduh datanya.
HTTP POST
Metode POST digunakan untuk mengirim data ke server, bisa berbentuk formulir atau file.
Formulir Sederhana
Formulir seperti ini digunakan untuk mengirim data berbasis teks seperti username yang bisa dijumpai pada formulir bawaan HTML <form>
yang berjenis application/x-www-form-urlencoded
.
Untuk mengirimkan formulir seperti itu, cukup dengan opsi -d
/ --data
diikuti dengan data formulir.
curl -d 'user=admin&pass=88%2099' URL
Atau bisa juga dengan:
curl -d 'user=admin' -d 'pass=88%2099' URL
Data Biner
Untuk mengirim data berbentuk biner, gunakan opsi --data-binary
:
curl --data-binary @file URL
Opsi tersebut ada, karena default-nya CURL bakal menghilangkan karakter carriage return dan newline. Maka, gunakan opsi tersebut agar karakter tersebut tidak dihilangkan oleh CURL.
Formulir Multipart
Formulir seperti ini biasanya dijumpai pada formulir HTML yang mengandung opsi untuk mengunggah file.
Formulir tersebut ditandai dengan adanya enctype="multipart/form-data"
pada elemen <form>
HTML.
<form action="/profile" method="post" enctype="multipart/form-data">
Nama: <input type="text" name="name"><br>
Foto: <input type="file" name="photo">
<input type="submit" value="Submit">
</form>
Cara mengirim formulir seperti ini dengan CURL, maka opsi yang digunakan adalah -F
/ --form
.
curl -F name=agus -F [email protected] URL
JSON
Untuk mengirimkan JSON ke server, dapat menggunakan opsi -d
/ --data
dan perlu juga menambahkan header yang diperlukan untuk mengirim JSON.
curl -d '{"hello": "world"}' -H "Content-Type: application/json"
-H "Accept: application/json" URL
Biar tidak ribet, bisa menggunakan opsi --json
agar CURL menambahkan secara otomatis informasi header yang dibutuhkan untuk mengirim JSON.
curl --json '{"hello": "world"}' URL
Bisa juga mengambil data JSON dari file:
curl --json @file.json URL
Mode Verbose
Fitur verbose berfungsi untuk menampilkan detail alur kerja HTTP, baik itu permintaan maupun responsnya.
Mode verbose dapat diaktifkan dengan opsi -v
/ --verbose
.
curl -v URL
Proksi
Salah satu proksi fungsi agar tetap dapat mengakses server meskipun alamat IP kamu diblokir.
Opsi yang digunakan untuk mengaktifkan proksi adalah -x
/ --proxy
dengan format seperti socks5://192.168.43.1:1080.
curl -x socks5://192.168.43.1:1080 URL
Jenis proksi yang didukung oleh CURL antara lain:
- SOCKS4 (socks4://)
- SOCKS5 (socks5:// & socks5h://)
- HTTP (http://)
- HTTPS (https://)
Perbedaan socks5://
dan socks5h://
adalah pada socks5h://
nama domain di-resolve di sisi server SOCKS5 sedangkan socks5://
nama domain di-resolve di sisi klien.
Kuki
Kuki yang dapat dibaca oleh CURL harus berformat Netscape, format kuki seperti ini bisa kamu ekstrak dari browser dengan ekstensi pengekstrak kuki. .
Untuk menambahkan kuki kustom di CURL, gunakan opsi -b
/ --cookie
:
curl -b kuki.txt URL
Kuki bisa berbentuk file atau string (teks), opsi di atas biasanya digabungkan dengan opsi -c
/ --cookie-jar
, fungsinya untuk menyimpan semua kuki selama sesi CURL ke dalam file.
curl -b kuki.txt -c kuki.txt URL
Salin sebagai CURL
Di browser berbasis Firefox dan Chromium, ada fitur untuk menyalin permintaan HTTP menjadi perintah CURL.
Fitur tersebut tersedia pada inspekstor jaringan di browser masing-masing.
Cara mengakses fitur inspekstor jaringan di browser:
- Bagi pengguna Firefox, ikuti panduan membuka Network Monitor.
- Bagi pengguna Chrome, ikuti panduan untuk membuka Netwok Panel
Trik Resolve Domain
CURL sangat fleksibel, nama domain bisa di-resolve sesuai kemauan penggunanya.
Misalnya, nama domain berikut ini di-resolve ke 192.168.1.55
:
curl --resolve example.com:80:192.168.1.55 http://example.com
Atau juga bisa nama domainnya di-resolve dari domain yang lain.
curl --connect-to example.com:80:another.example.com http://example.com
Selesai
Sudah cukup segitu panduan CURL dasar untuk yang tidak sabaran, untuk informasi lebih detail mengenai CURL ini, bisa membuka halaman manual CURL.