Bermain-main dengan CURL

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

Leave a Reply

Your email address will not be published. Required fields are marked *