CURL

**cURL** (dilafalkan 'curl') adalah sebuah proyek perangkat lunak komputer yang menyediakan pustaka (**libcurl**) dan perkakas baris perintah (**curl**) untuk pentransferan data menggunakan berbagai protokol jaringan. Nama cURL merupakan singkatan dari "Client URL" yang dirilis pada tahun 1997.

## Sejarah
cURL dirilis pada tahun 1997. cURL awalnya dinamai *httpget* dan kemudian menjadi *urlget* sebelum memakai versi namanya saat ini. Penulis asli dan pengembang utamanya ialah seorang pengembang Swedia Daniel Stenberg, yang membuat cURL dikarenakan ia ingin mengotomatisasi pengambilan data nilai tukar mata uang untuk para pengguna IRC.

## libcurl
libcurl adalah pustaka transfer URL sisi klien yang bebas. libcurl mendukung kuki, DICT, FTP, FTPS, Gopher, HTTP/1 (dengan dukungan HTTP/2 dan HTTP/3), HTTP POST, HTTP PUT, *tunneling* proksi HTTP, HTTPS, IMAP, Kerberos, LDAP, MQTT, POP3, RTSP, RTMP, SCP, SMTP, dan SMB. Pustaka ini mendukung skema URI file, SFTP, Telnet, TFTP, pelanjutan transfer berkas, pengunggahan FTP, pengunggahan berbasis form HTTP, sertifikasi HTTPS, LDAPS, proksi, dan otentikasi pengguna-ditambah-sandi.

Pustaka libcurl merupakan pustaka yang portabel. Pustaka ini dapat dibangun dan bekerja dengan serupa dalam banyak platform, termasuk AIX, AmigaOS, Android, BeOS, BlackBerry Tablet OS dan BlackBerry 10, OpenVMS, Darwin, DOS, FreeBSD, HP-UX, HURD, iOS, IRIX, Linux, macOS, NetBSD, NetWare, OpenBSD, OS/2, QNX Neutrino, RISC OS, Solaris, Symbian, Tru64, Ultrix, UnixWare, dan Microsoft Windows.

Pustaka libcurl merupakan pustaka yang bebas, *[[thread-safe]]* dan kompitabel dengan IPv6. Pengikatan tersedia untuk lebih dari 40 bahasa pemrograman, termasuk C/C++, Java, PHP, dan Python.

Pustaka libcurl mampu mendukung axTLS, GnuTLS, mbed TLS, NSS, QSOSSL di IBM i, SChannel di Windows, Secure Transport di macOS dan iOS, SSL/TLS melalui OpenSSL, dan wolfSSL.

## cURL
cURL adalah sebuah perkakas baris perintah untuk mendapatkan dan mengirim data termasuk berkas-berkas dengan menggunakan sintaks URL. Karena cURL menggunakan libcurl, maka cURL dapat mendukung setiap protokol yang didukung oleh libcurl.

cURL mendukung HTTPS dan secara baku melakukan verifikasi sertifikat SSL ketika protokol aman ditentukan, seperti protokol HTTPS. Ketika cURL terhubung ke sebuah peladen jarak jauh melalui HTTPS, cURL akan memperoleh sertifikat peladen jarak jauh, kemudian memeriksa terhadap gerai keabsahan sertifikat CA dari peladen jarak jauh untuk memastikan peladen jarak jauh merupakan pengklaim sertifikat tersebut. Beberapa paket cURL dibundel dengan berkas gerai sertifikat CA. Ada beberapa opsi untuk menentukan sertifikat CA seperti dengan parameter baris perintah `--cacert` dan `--capath`. Opsi `--cacert` dapat dipakai untuk menentukan lokasi berkas gerai sertifikat CA. Pada sistem operasi Windows, jika sebuah berkas sertifikat CA tidak ditentukan, cURL akan mencari nama berkas sertifikat CA "curl-ca-bundle.crt" dengan urutan sebagai berikut:
# Direktori di mana program cURL ditempatkan.
# Direktori saat ini.
# Direktori sistem Windows.
# Direktori Windows.
# Direktori-direktori yang ditentukan pada variabel lingkungan %PATH%.

cURL akan menampilkan sebuah pesan galat bila peladen jarak jauh menggunakan sertifikat yang ditandatangani sendiri, atau bila sertifikat peladen jarak jauh tidak ditandatangani oleh CA yang terdaftar dalam berkas sertifikat CA. Parameter `-k` atau `--insecure` adalah opsi yang dapat digunakan untuk melewati langkah-langkah verifikasi sertifikat. Cara alternatif yang lain, jika peladen jarak jauh dapat dipercayai, sertifikat CA peladen jarak jauh dapat ditambahkan ke berkas gerai sertifikat CA.

## Contoh
Penggunaan dasar cURL yaitu dengan mengetik `curl` pada baris perintah dan kemudian diikuti dengan URL:


```console
$ curl www.example.com
```


cURL bakunya menampilkan output yang diambilnya berdasarkan output standar yang ditentukan pada sistem (biasanya jendela terminal). Jadi, menjalankan perintah di atas pada kebanyakan sistem operasi akan menampilkan kode sumber www.example.com di jendela terminal. Parameter `-o` dapat digunakan untuk menyimpan output dalam berkas:

```console
$ curl -o example.html www.example.com
```


## Lihat pula

* curl-loader – perkakas pengujian sumber terbuka yang berbasis pada cURL.
* libwww – pustaka sebelum cURL yang dilengkapi dengan antarmuka baris perintah.
* PowerShell – *iwr* (Invoke-WebRequest) Windows PowerShell mempunyai fungsionalitas mirip dengan cURL; klien Web kelas juga.
* Web crawler – bot internet yang dapat meng-*crawl* situs web.
* Wget – perkakas baris perintah yang serupa tanpa ada pustaka yang terkait, tetapi mampu mengunduh secara rekursif.

## Referensi

## Pranala luar
*  
*  Perbandingan cURL vs perkakas unduh sumber terbuka lainnya
*  Perbandingan cURL vs wget