cURL, kependekan dari "Klien untuk URL", adalah alat baris perintah untuk mentransfer data menggunakan berbagai protokol. Artikel ini bertujuan untuk memberikan perintah yang banyak digunakan dan sebagai referensi praktis.
Daftar Isi
- Unduh Satu File
- Simpan Output cURL ke File
- Sembunyikan Bilah Kemajuan
- Ambil Banyak File Sekaligus
- Ikuti Header Lokasi HTTP dengan Opsi -L
- Lanjutkan/Lanjutkan Unduhan Sebelumnya
- Gunakan Proxy dengan atau Tanpa Otentikasi
- Tajuk HTTP Kueri
- Unggah File ke Server FTP
- Unduh File dari Server FTP
- Daftar/Unduh Menggunakan Rentang
- Informasi Lebih Lanjut Menggunakan Opsi Verbose dan Trace
- Kirim Email Menggunakan Protokol SMTP
- Pemeriksaan Dukungan HTTP/2
- Simulasikan Metode HTTP
- Buat Permintaan POST dengan Parameter
- Kesimpulan
Anda dapat memanggil curl
perintah dari terminal Anda tanpa memikirkan cara untuk menginstalnya, karena sudah diinstal sebelumnya di sebagian besar Sistem Operasi berbasis Linux.
Ada banyak kasus penggunaan untuk curl, seperti:
- Unggahan FTP
- Dukungan proxy
- Koneksi SSL
- postingan HTTP
cURL juga mendukung penggunaan semua protokol berikut:DICT, FILE, FTP, FTPS, GOPHER, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMB, SMBS, SMTP , SMTPS, TELNET, dan TFTP.
Unduh Satu File
Perintah berikut akan mendapatkan konten URL dan menampilkannya di STDOUT (yaitu di terminal Anda).
curl https://www.gnu.org
Untuk menyimpan output dalam file, Anda mengarahkannya seperti yang ditunjukkan di bawah ini. Ini juga akan menampilkan beberapa statistik unduhan tambahan.
curl https://www.gnu.org > gnu-org.html
Simpan Output cURL ke File
Kita dapat menyimpan hasil dari perintah cURL ke sebuah file dengan menggunakan -o
/-O
pilihan.
-o
(huruf kecil o) hasilnya akan disimpan dalam nama file yang disediakan di baris perintah-O
(huruf besar O) nama file di URL akan diambil dan akan digunakan sebagai nama file untuk menyimpan hasilnya
curl -o my-gettext.html https://www.gnu.org/software/gettext/manual/gettext.html
Hasilnya, sekarang halaman gettext.html
akan disimpan dalam file bernama my-gettext.html
. Anda juga dapat mencatat bahwa saat menjalankan cURL dengan -o
pilihan, ini akan menampilkan pengukur kemajuan untuk unduhan sebagai berikut.
Saat Anda menggunakan cURL -O
, itu akan menyimpan konten dalam file bernama 'gettext.html' itu sendiri di mesin lokal.
curl -O http://www.gnu.org/software/gettext/manual/gettext.html
Catatan:Saat curl
harus menulis data ke terminal, itu menonaktifkan Pengukur Kemajuan, untuk menghindari kebingungan dalam pencetakan. Kita bisa menggunakan >
, -o
, -O
opsi untuk memindahkan hasilnya ke file.
Sembunyikan Bilah Kemajuan
cURL secara default menunjukkan bilah kemajuan. Untuk menyembunyikannya -s
(--silent
)pilihan dapat digunakan.
curl -s -O http://www.gnu.org/software/gettext/manual/gettext.html
Jika karena alasan tertentu tidak berfungsi di platform Anda, Anda selalu dapat mengarahkan ulang stderr ke /dev/null
:
curl -O http://www.gnu.org/software/gettext/manual/gettext.html 2>/dev/null
Ambil Beberapa File Sekaligus
Tentu saja, kita dapat mengunduh banyak file sekaligus dengan menentukan URL di baris perintah.
curl -O https://www.gnu.org/software/gettext/manual/html_node/index.html -O https://www.gnu.org/software/gettext/manual/gettext.html
Ikuti Header Lokasi HTTP dengan Opsi -L
Namun secara default cURL tidak mengikuti header Lokasi HTTP. Ini juga disebut sebagai Redirect. Ketika halaman web yang diminta dipindahkan ke tempat lain, maka header Lokasi HTTP akan dikirim sebagai Respons dan itu akan memiliki tempat halaman web yang sebenarnya berada.
Kami dapat memaksa cURL untuk mengikuti pengalihan menggunakan -L
pilihan, seperti yang ditunjukkan di bawah ini.
curl -L https://www.google.com
Lanjutkan/Lanjutkan Unduhan Sebelumnya
Menggunakan cURL -C
pilihan, Anda dapat melanjutkan unduhan yang sudah dihentikan karena alasan tertentu. Ini akan membantu saat Anda mengunduh file besar, dan unduhan terputus.
Jika kita mengatakan -C -
, kemudian cURL akan menemukan dari mana untuk memulai melanjutkan unduhan. Kami juga dapat memberikan offset -C <offset>
. Byte offset yang diberikan akan dilewati dari awal untuk file sumber.
Mulai unduhan besar menggunakan curl
, dan tekan Ctrl-C
untuk menghentikannya di antara unduhan.
curl -O https://www.gnu.org/software/gettext/manual/gettext.html
Menggunakan curl -C -
, kita dapat melanjutkan pengunduhan dari bagian yang ditinggalkan sebelumnya.
curl -C - -O https://www.gnu.org/software/gettext/manual/gettext.html
Gunakan Proxy dengan atau Tanpa Otentikasi
Jika Anda berada di belakang server proxy yang mendengarkan pada port 8080 di proxy.domainanda.com, lakukan:
curl -x proxy.yourdomain.com:8080 -U user:password -O https://www.gnu.org/software/gettext/manual/gettext.html
tempat Anda dapat melewati -U user:password
jika proxy Anda tidak memerlukan otentikasi.
Header HTTP Kueri
Header HTTP memungkinkan server web jarak jauh mengirim informasi tambahan tentang dirinya sendiri bersama dengan permintaan sebenarnya. Selain itu, ini memberikan detail kepada klien tentang bagaimana permintaan ditangani.
Untuk menanyakan header HTTP dari situs web, lakukan:
curl -I https://www.gnu.org
HTTP/1.1 200 OK
Date: Mon, 13 Jul 2020 21:22:32 GMT
Server: Apache/2.4.7
Content-Location: home.html
Vary: negotiate,accept-language,Accept-Encoding
TCN: choice
Strict-Transport-Security: max-age=63072000
Access-Control-Allow-Origin: (null)
Accept-Ranges: bytes
Cache-Control: max-age=0
Expires: Mon, 13 Jul 2020 21:22:32 GMT
Content-Type: text/html
Content-Language: en
Unggah File ke Server FTP
cURL juga dapat digunakan untuk mengunggah file ke server FTP dengan -T
pilihan.
curl -u ftpuser:ftppass -T myfile.txt ftp://ftp.server.com
Akibatnya, perintah di atas akan mengunggah file bernama myfile.txt
ke server FTP. Anda juga dapat mengunggah beberapa file sekaligus menggunakan operasi jangkauan.
curl -u ftpuser:ftppass -T "{file1,file2}" ftp://ftp.server.com
Secara opsional kita dapat menggunakan .
untuk mendapatkan input dari STDIN dan mentransfer ke remote.
curl -u ftpuser:ftppass -T - ftp://ftp.server.com/mynewfile.txt
Perintah di atas akan mendapatkan input dari pengguna dari Input Standar dan menyimpan konten di server ftp dengan nama mynewfile.txt
.
Anda dapat memberikan satu -T
untuk setiap URL dan pasangan menentukan apa yang akan diunggah di mana.
Unduh File dari Server FTP
cURL juga dapat digunakan untuk mengunduh file dari server FTP. Jika jalur FTP yang diberikan adalah direktori, secara default ia akan mencantumkan file di bawah direktori tertentu.
curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/mysql.php
Perintah di atas akan mendownload mysql.php
file dari server ftp dan simpan di direktori lokal.
curl -u ftpuser:ftppass -O ftp://ftp_server/public_html/
Di sini, URL yang diberikan merujuk ke direktori. Jadi cURL akan mencantumkan semua file dan direktori di bawah URL yang diberikan.
Daftar/Unduh Menggunakan Rentang
cURL mendukung rentang yang akan diberikan dalam URL. Saat rentang diberikan, file yang cocok dengan rentang tersebut akan diunduh. Akan sangat membantu untuk mengunduh paket dari situs mirror FTP.
curl http://ftp.us.debian.org/debian/pool/main/[a-z]/
Perintah di atas akan menampilkan semua paket dari a-z
rentang di terminal.
Informasi Lebih Lanjut Menggunakan Opsi Verbose dan Trace
Anda dapat mengetahui apa yang terjadi menggunakan -v
pilihan. Opsi ini mengaktifkan mode verbose dan akan mencetak detailnya.
curl -v https://www.gnu.org
Perintah about akan menampilkan sebagai berikut:
* Trying 209.51.188.148:443...
* Connected to www.gnu.org (209.51.188.148) port 443 (#0)
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
* CAfile: /etc/ssl/certs/ca-certificates.crt
CApath: none
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
* TLSv1.3 (IN), TLS handshake, Server hello (2):
* TLSv1.2 (IN), TLS handshake, Certificate (11):
* TLSv1.2 (IN), TLS handshake, Server key exchange (12):
* TLSv1.2 (IN), TLS handshake, Server finished (14):
* TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
* TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
* TLSv1.2 (OUT), TLS handshake, Finished (20):
* TLSv1.2 (IN), TLS handshake, Finished (20):
* SSL connection using TLSv1.2 / ECDHE-RSA-AES128-GCM-SHA256
* ALPN, server did not agree to a protocol
* Server certificate:
* subject: CN=emacs.org
* start date: Jun 17 09:07:40 2020 GMT
* expire date: Sep 15 09:07:40 2020 GMT
* subjectAltName: host "www.gnu.org" matched cert's "www.gnu.org"
* issuer: C=US; O=Let's Encrypt; CN=Let's Encrypt Authority X3
* SSL certificate verify ok.
> GET / HTTP/1.1
> Host: www.gnu.org
> User-Agent: curl/7.71.1
> Accept: */*
>
* Mark bundle as not supporting multiuse
< HTTP/1.1 200 OK
< Date: Mon, 13 Jul 2020 21:56:04 GMT
< Server: Apache/2.4.7
< Content-Location: home.html
< Vary: negotiate,accept-language,Accept-Encoding
< TCN: choice
< Strict-Transport-Security: max-age=63072000
< Access-Control-Allow-Origin: (null)
< Accept-Ranges: bytes
< Cache-Control: max-age=0
< Expires: Mon, 13 Jul 2020 21:56:04 GMT
< Transfer-Encoding: chunked
< Content-Type: text/html
< Content-Language: en
<
...
Kirim Email Menggunakan Protokol SMTP
cURL juga dapat digunakan untuk mengirim email menggunakan protokol SMTP. Anda harus menentukan from-address, to-address, dan mailserver ip-address seperti yang ditunjukkan di bawah ini.
curl --mail-from [email protected] --mail-rcpt [email protected] smtp://mailserver.com
Setelah perintah di atas dimasukkan, itu akan menunggu pengguna untuk memberikan data ke email. Setelah Anda membuat pesan, ketik .
(titik) sebagai baris terakhir, yang akan segera mengirimkan email.
Pemeriksaan Dukungan HTTP/2
Jika Anda memiliki rilis cURL terbaru, Anda dapat menggunakan --http2
opsi untuk memeriksa apakah URL tertentu mendukung protokol HTTP/2 baru. Oleh karena itu, jika situs mendukung HTTP/2, Anda akan melihat HTTP/2.0 200
di header, bukan HTTP/1.1 200
.
curl -I --http2 https://www.opensource.com
Simulasikan Metode HTTP
GET
metode yang digunakan untuk mengambil sumber daya dari URL tertentu. Sederhana curl https://www.gnu.org/
perintah akan menggunakan GET
sebagai metode HTTP default, namun juga dapat ditentukan menggunakan --request GET
atau -X GET
.
curl --request GET https://www.gnu.org
POST
metode ini digunakan untuk mengirim informasi ke server web (misalnya komentar di forum). Ini dapat ditentukan menggunakan --request POST
atau -X POST
.
curl --request POST https://yourwebsite.com
DELETE
metode menghapus sumber daya dari server web yang terkait dengan URL tertentu. Ini dapat ditentukan menggunakan --request DELETE
atau -X DELETE
.
curl --request DELETE https://yourwebsite.com
PUT
metode membuat atau mengganti sumber daya berdasarkan data yang dikirimkan klien ke server web. (misalnya membuat halaman web baru atau memperbarui yang sudah ada). Ini dapat ditentukan menggunakan --request PUT
atau -X PUT
.
curl --request PUT https://yourwebsite.com
Buat Permintaan POST dengan Parameter
Perintah berikut akan mengirimkan animal1
dan animal2
parameter, bersama dengan nilainya yang sesuai, ke https://yourdomain.com/animals.php
curl --request POST --data "animal1=cat&animal2=dog" https://yourdomain.com/animals.php
Anda dapat menggunakan tip ini untuk mensimulasikan perilaku formulir HTML biasa.
Kesimpulan
Dalam postingan ini, kami menjelaskan apa itu cURL dan apa yang dapat Anda lakukan dengan beberapa perintah dasar. Untuk mempelajari lebih lanjut tentang cURL, Anda dapat mengunjungi situs web proyek.