CURL adalah sebuah produk project berbasis ‘command line’ yang digunakan sebagai software client HTTP. Dalam prakteknya, CURL digunakan untuk melakukan hit terhadap sebuah URL, dan akan menangkap kembalian dalam wujud text mode. Sederhananya : browsing dengan command line. Mengapa CURL harus ada? CURL ada untuk menjadi cikal-bakal browser lainnya, dapat juga menjadi tool yang digunakan oleh bahasa-bahasa pemrograman, untuk mendapatkan hasil browsing berupa text, sehingga dapat dikenai aksi parsing.
Bagaimana instalasi CURL?
Untuk Linux user, CURL adalah perangkat yang sudah disediakan di repository instalasi distro masing-masing Linux.
Berbasis RedHat dan keturunannnya : yum install curl Berbasis SuSE dan keturunannya : zypper install curl Berbasis Debian dan keturunannya : apt-get install curl
Instalasi dapat juga dilakukan dengan melakukan dowload langsung dari https://curl.haxx.se, kemudian dilakukan kompilasi program sendiri, sesuai petunjuk yang ada pada dokumentasi instalasi situs tersebut.
Bagaimana dengan Windows?
CURL Windows juga tersedia pada halaman download situs http://curl.haxx.se, pada bagian Win32 atau Win64, sesuai dengan spesifikasi Windows.
Bagaimana menggunakan CURL?
Cara menggunakan CURL cukup mudah, tinggal ketik
curl http://namasitus/
Misal :
curl https://blogit.bimosaurus.com
Pada tampilan hasil, akan memunculkan semua HTML Client Source dari situs yang dipanggil/dihit.
Penggunaan Lanjut CURL
CURL akan digunakan secara lebih mendalam pada fungsi-fungsi lain seperti print header, verbosing (memunculkan debug), POST data via command line, testing SSL, testing sebuah webserver dan hingga kebutuhan-kebutuhan programming. Berikut di bawah dapat dicoba satu persatu fitur-fitur CURL yang biasa digunakan.
1. Print Header Lengkap
curl -I namasitus.com
contoh
curl -I https://blogit.bimosaurus.com
2. Memeriksa status kompresi data dari sebuah web
curl --compressed namasitus.com
contoh
curl --compressed bimosaurus.com
contoh hasilnya adalah :
HTTP/1.1 200 OK Server: nginx/1.0.15 Date: Wed, 11 Oct 2017 11:17:07 GMT Content-Type: text/html; charset=UTF-8 Connection: keep-alive X-Pingback: https://blogit.bimosaurus.com/xmlrpc.php Cache-Control: max-age=2592000, public, must-revalidate Expires: Fri, 10 Nov 2017 11:17:07 GMT Vary: Accept-Encoding Content-Encoding: gzip Content-Length: 20
Untuk standard browser jaman sekarang, semua pasti akan merequest konten dalam format terkompresi pada webserver. Jika tidak meminta, maka webserver tidak akan memberikan format kompresi. Namun jika meminta namun webserver tidak mendukung kompresi, maka content juga tetap tidak akan dikirimkan dalam bentuk terkompresi.
Bagian di bawah ini menunjukkan bahwa browser (dalam hal ini curl) meminta bentuk kompresi.
Vary: Accept-Encoding
Sedangkan bagian di bawah ini menunjukkan bahwa server mengirimkan data dalam format kompresi
Content-Encoding: gzip
3. Penggabungan dengan command grep
Untuk mempermudah mendapatkan string yang diinginkan, maka perintah curl juga dapat digabungkan dengan pipe ( | ) dan grep. Contoh
curl --compressed bimosaurus.com | grep gzip
4. Melakukan POST data
Salah satu method yang ada di dalam transfer data HTTP adalah POST. POST adalah proses transfer data dengan skema pengiriman data ke server dengan metode upload, meski itu adalah text. Lawannya adalah GET. Kondisi default browsing adalah GET. POST akan dilakukan saat proses pengiriman form, posting berita, pengiriman webmail dilakukan.
contoh :
curl https://blogit.bimosaurus.com/xmlrpc.php -X POST
5. Modifikasi header useragent
Useragent adalah jenis browser beserta sistem operasi yang digunakan. Pada sebuah server web, biasanya akan terdapat access_log HTTP, biasanya akan memuat informasi Useragent. Misal:
203.111.222.33 - - [04/Oct/2017:21:36:26 +0700] "GET /icons/ubuntu-logo.png HTTP/1.1" 200 3614 "http://namasitus/" "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 ( KHTML, like Gecko) Chrome/58.0.3029.96 Safari/537.36"
Bagian “Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.96 Safari/537.36” adalah memuat Useragent yang digunakan oleh client dalam melakukan hit ke server web.
Untuk bekas hit oleh curl, maka keluaran log akan menjadi seperti berikut
192.168.1.2 - - [11/Oct/2017:18:49:43 +0700] "GET / HTTP/1.1" 200 11567 "-" "curl/7.47.0"
CURL didesain untuk dapat mengirimkan header atas nama browser lain. Contoh yang dapat digunakan adalah :
curl -A "Mozilla" --compressed https://blogit.bimosaurus.com
opsi -A adalah digunakan untuk menentukan useragent. Dengan demikian pada bagian log, akan mengeluarkan informasi bahwa yang melakukan hit adalah Mozilla .
6. Membuka expired key HTTPS
HTTPS adalah HTTP Secure. Yaitu protokol web yang disertai dengan kunci SSL agar transformasi data yang terbentuk menjadi terenkripsi. Namun kunci SSL yang sudah tidak valid mengakibatkan CURL menampilkan halaman error. Contohnya adalah :
bimo@bimo ~ $ curl https://namaweb.web -vv * Rebuilt URL to: https://namaweb.web/ * Trying namaweb.web... * Connected to namaweb.web (123.123.123) port 443 (#0) * found 173 certificates in /etc/ssl/certs/ca-certificates.crt * found 706 certificates in /etc/ssl/certs * ALPN, offering http/1.1 * SSL connection using TLS1.2 / ECDHE_RSA_AES_256_GCM_SHA384 * server certificate verification OK * server certificate status verification SKIPPED * Closing connection 0
Kondisi seperti itu dapat dibuka dengan CURL dengan opsi -k
curl -k namaweb.web
7. Menentukan versi transfer HTTP
Pada log server selalu memunculkan versi HTTP Transfer. Biasanya pada masa ini adalah berjalan pada HTTP 1.1. Namun ada juga beberapa kasus, bahwa server web tidak memberikan respon HTTP dengan sempurna karena ternyata belum mendukung HTTP 1.1, melainkan HTTP 1.0. Oleh karena hal itu, maka dapat dilakukan modifikasi header untuk mengubah versi cara transaksi data HTTP menjadi http 1.0.
Contoh :
curl --http1.0 https://blogit.bimosaurus.com
Maka pada log server akan memunculkan hasil HTTP 1.0 sebagai versi yang digunakan oleh client terhadap server bertransaksi.
8. Verbosing
Untuk melakukan debuging di sisi client, maka seorang pengguna curl dapat melakukan penambahan opsi -v atau -vv untuk mengeluarkan debugging curl. Contoh
curl --compressed -k https://anuanu.com --http10 -vv
Sekedar catatan