> ipsaya.id

Panduan CURL untuk Yang Tidak Sabaran

@ 2025.01.02

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:

Salin sebagai CURL

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.