Linux: Cara Menggunakan Curl
Belajar Linux ID - Curl adalah command-line atau utility yang tersedia di Linux. Curl sendiri singkatan dari Client URL. Biasanya curl digunakna untuk test koneksi ke URL serta dapat digunakan sebagai tool transfer data. Selain protokol HTTP, curl juga dapat digunakan pada protokol FTP, IMAP, Telnet, SMTP.
Sebagian besar paket curl sudah terinstall di distribusi Linux saat ini. Berikut ini cara install curl di beberapa distro Linux
Ubuntu dan Debian
1
2
$ sudo apt update
$ sudo apt install curl
CentOS dan Fedora
1
sudo yum install curl
ArchLinux
1
$ pacman -Sy curl
OpenSUSE
1
$ zypper install curl
Berikut kami contohkan bagaimana cara cek versi curl di Ubuntu
1
2
3
4
5
6
$ curl --version
curl 7.58.0 (x86_64-pc-linux-gnu) libcurl/7.58.0 OpenSSL/1.1.1 zlib/1.2.11 libidn2/2.0.4 libpsl/0.19.1 (+libidn2/2.0.4) nghttp2/1.30.0 librtmp/2.3
Release-Date: 2018-01-24
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp
Features: AsynchDNS IDN IPv6 Largefile GSS-API Kerberos SPNEGO NTLM NTLM_WB SSL libz TLS-SRP HTTP2 UnixSockets HTTPS-proxy PSL
$
Sintak dalam penggunaan curl sebagai berikut
1
curl [options] [URL...]
Berikut opsi - opsi curl yang dapat Anda gunakan:
Options
| Opsi | Keterangan |
|---|---|
| -o |
–output: write to file |
| -u user:pass | –user: Authentication |
| -v | –verbose |
| -vv | Even more verbose |
| -s | –silent |
| -i | –include: Include the HTTP-header in the output |
| -I | –head: headers only |
Request
| Opsi | Keterangan |
|---|---|
| -X POST | –request |
| -L | follow link if page redirects |
Data
| Opsi | Keterangan |
|---|---|
| -d ‘data’ | –data: HTTP post data, URL encoded (eg, status=”Hello”) |
| -d @file | –data via file |
| -G | –get: send -d data via get |
Headers
| Opsi | Keterangan |
|---|---|
| -A |
–user-agent |
| -b name=val | –cookie |
| -b FILE | –cookie |
| -H “X-Foo: y” | –header |
| –compressed | use deflate/gzip |
Untuk menggunakan curl sangatlah mudah, misalnya kita ingin mengetahui HTTP Headers dari sebuah website menggunakan curl dapat di lakukan contoh
1
2
3
4
5
6
7
8
9
10
11
ubuntu@my-jumper:~$ curl -I https://www.ubuntu.com/
HTTP/1.1 301 Moved Permanently
server: nginx/1.14.0 (Ubuntu)
date: Sat, 14 Nov 2020 10:29:21 GMT
content-type: text/html
content-length: 175
location: https://ubuntu.com/
link: <https://assets.ubuntu.com>; rel=preconnect; crossorigin, <https://assets.ubuntu.com>; rel=preconnect, <https://res.cloudinary.com>; rel=preconnect
x-cache-status: MISS from content-cache-1ss/0
ubuntu@my-jumper:~$
Selanjutnya jika ingin mengetahui website menggunakan HTTP/2 dapat dilakukan menggunakan curl contoh
1
2
3
4
ubuntu@my-jumper:~$
ubuntu@my-jumper:~$ curl -I --http2 -s https://belajarlinux.id/ | grep HTTP
HTTP/2 200
ubuntu@my-jumper:~$
Selain itu curl juga dapat **GET XML**
1
$ curl -H "Accept: application/xml" -H "Content-Type: application/xml" -X GET "http://hostname/resource"
GET JSON
1
$ curl -i -H "Accept: application/json" -H "Content-Type: application/json" -X GET "http://hostname/resource"
JSON PUT
1
$ curl -i -H 'Content-Type: application/json' -H 'Accept: application/json' -X PUT -d '{"updated_field1":"updated_value1"}' "http://hostname/resourcex"
POST
1
$ curl -i -X POST -H 'Content-Type: application/x-www-form-urlencoded' --data 'key1=value1&key2=value2' url
Debugging Mode
1
$ curl -XGET -vvv http://hostname/resource > dev\null
Download Multi File
1
2
$curl -O http://mirrors.edge.kernel.org/archlinux/iso/2018.06.01/archlinux-2018.06.01-x86_64.iso \
$ -O https://cdimage.debian.org/debian-cd/current/amd64/iso-cd/debian-9.4.0-amd64-netinst.iso
Resume Download
1
$ curl -O http://releases.ubuntu.com/18.04/ubuntu-18.04-live-server-amd64.iso
Jika tiba - tiba koneksi Anda terputus Anda dapat melanjutkannya kembali
1
$ curl -C - -O http://releases.ubuntu.com/18.04/ubuntu-18.04-live-server-amd64.iso
Transfer file via FTP
1
$ curl -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/
Setelah masuk, perintah akan mencantumkan semua file dan direktori di direktori beranda pengguna atau user. Anda dapat download satu file dari server FTP menggunakan sintaks berikut:
1
$ curl -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/file.tar.gz
Untuk mengupload file ke server FTP, gunakan -T diikuti dengan nama file yang ingin Anda upload:
1
$ curl -T newfile.tar.gz -u FTP_USERNAME:FTP_PASSWORD ftp://ftp.example.com/
Send Cookies
Terkadang Anda mungkin perlu membuat permintaan HTTP dengan cookie tertentu untuk mengakses sumber daya jarak jauh atau untuk men-debug masalah.
Secara default, saat meminta sumber daya dengan curl, tidak ada cookie yang dikirim atau disimpan.
Untuk mengirim cookie ke server, gunakan tombol -b diikuti dengan nama file yang berisi cookie atau string.
Misalnya, untuk mengunduh file rpm JDK Oracle Java jdk-10.0.2_linux-x64_bin.rpm, Anda harus meneruskan cookie bernama oraclelicense dengan nilai a:
1
$ curl -L -b "oraclelicense=a" -O http://download.oracle.com/otn-pub/java/jdk/10.0.2+13/19aef61b38124481863b1413dce1855f/jdk-10.0.2_linux-x64_bin.rpm
Curl Sebagai Proxy
curl mendukung berbagai jenis proxy, termasuk HTTP, HTTPS, dan SOCKS. Untuk transfer data melalui server proxy, gunakan opsi -x (--proxy), diikuti dengan URL proxy.
Perintah berikut mengunduh sumber daya yang ditentukan menggunakan proxy pada 192.168.44.1 port 8888:
1
$ curl -x 192.168.44.1:8888 http://domainanda.id/
Jika server proxy memerlukan otentikasi, gunakan opsi -U (--proxy-user) diikuti dengan nama pengguna dan kata sandi dipisahkan oleh titik dua (pengguna: kata sandi):
1
$ curl -U username:password -x 192.168.44.1:8888 http://domainanda.id/
Selengkapnya mengenai curl dapat dilihat melalui dokumentasi curl berikut: https://curl.se/docs/
Selamat mencoba 😁