cURL adalah paket perangkat lunak yang terdiri dari alat baris perintah dan pustaka untuk mentransfer data menggunakan sintaks URL.
cURL mendukung berbagai protokol seperti, DICT, FILE, FTP, FTPS, Gopher, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, POP3, POP3S, RTMP, RTSP, SCP, SFTP, SMTP, SMTPS, Telnet, dan TFTP.
Artikel ini memberikan 15 contoh penggunaan cURL praktis.
1. Unduh Satu File
Perintah berikut akan mendapatkan konten URL dan menampilkannya di STDOUT (yaitu di terminal Anda).
$ curl http://www.centos.org
Untuk menyimpan output dalam file, Anda mengarahkan ulang seperti yang ditunjukkan di bawah ini. Ini juga akan menampilkan beberapa statistik unduhan tambahan.
$ curl http://www.centos.org > centos-org.html % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 27329 0 27329 0 0 104k 0 --:--:-- --:--:-- --:--:-- 167k
2. Simpan Output cURL ke file
Kita dapat menyimpan hasil dari perintah curl ke file dengan menggunakan opsi -o/-O.
- -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 hasil
$ curl -o mygettext.html http://www.gnu.org/software/gettext/manual/gettext.html
Sekarang halaman gettext.html akan disimpan dalam file bernama 'mygettext.html'. Anda juga dapat mencatat bahwa saat menjalankan curl dengan opsi -o, ini akan menampilkan pengukur kemajuan untuk unduhan sebagai berikut.
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 66 1215k 66 805k 0 0 33060 0 0:00:37 0:00:24 0:00:13 45900 100 1215k 100 1215k 0 0 39474 0 0:00:31 0:00:31 --:--:-- 68987
Ketika Anda menggunakan curl -O (huruf besar 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:Ketika curl harus menulis data ke terminal, itu menonaktifkan Pengukur Kemajuan, untuk menghindari kebingungan dalam pencetakan. Kita dapat menggunakan opsi ‘>’|’-o’|’-O’ untuk memindahkan hasilnya ke file.
Mirip dengan cURL, Anda juga dapat menggunakan wget untuk mengunduh file. Lihat contoh wget untuk memahami cara menggunakan wget secara efektif.
3. Ambil Banyak File sekaligus
Kita dapat mengunduh banyak file dalam satu bidikan dengan menentukan URL pada baris perintah.
Sintaks:
$ curl -O URL1 -O URL2
Perintah di bawah ini akan mengunduh index.html dan gettext.html dan menyimpannya dengan nama yang sama di bawah direktori saat ini.
$ curl -O http://www.gnu.org/software/gettext/manual/html_node/index.html -O http://www.gnu.org/software/gettext/manual/gettext.html
Harap dicatat bahwa ketika kami mengunduh banyak file dari server yang sama seperti yang ditunjukkan di atas, curl akan mencoba menggunakan kembali koneksi.
4. Ikuti Header Lokasi HTTP dengan opsi -L
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 akan ada di mana halaman web sebenarnya berada.
Misalnya, ketika seseorang mengetik google.com di browser dari India, itu akan secara otomatis dialihkan ke 'google.co.in'. Ini dilakukan berdasarkan header Lokasi HTTP seperti yang ditunjukkan di bawah ini.
$ curl http://www.google.com <TITLE>302 Moved</TITLE> <H1>302 Moved</H1> The document has moved <A HREF="http://www.google.co.in/">here</A>
Output di atas mengatakan bahwa dokumen yang diminta dipindahkan ke ‘http://www.google.co.in/’.
Kita dapat memaksa curl untuk mengikuti pengalihan menggunakan opsi -L, seperti yang ditunjukkan di bawah ini. Sekarang ia akan mengunduh kode sumber html google.co.in.
$ curl -L http://www.google.com
5. Lanjutkan/Lanjutkan Unduhan Sebelumnya
Menggunakan opsi curl -C, Anda dapat melanjutkan unduhan yang sudah dihentikan karena suatu alasan. Ini akan membantu saat Anda mengunduh file besar, dan unduhan terputus.
Jika kita mengatakan '-C -', maka curl akan menemukan dari mana untuk memulai melanjutkan unduhan. Kami juga dapat memberikan offset '-C
Mulai unduhan besar menggunakan curl, dan tekan Ctrl-C untuk menghentikannya di antara unduhan.
$ curl -O http://www.gnu.org/software/gettext/manual/gettext.html ############## 20.1%
Catatan:-# digunakan untuk menampilkan bilah kemajuan alih-alih pengukur kemajuan.
Sekarang unduhan di atas dihentikan pada 20,1%. Dengan menggunakan "curl -C -", kita dapat melanjutkan unduhan dari tempat yang ditinggalkan sebelumnya. Sekarang unduhan berlanjut dari 20,1%.
curl -C - -O http://www.gnu.org/software/gettext/manual/gettext.html ############### 21.1%
6. Batasi Kecepatan Transfer Data
Anda dapat membatasi jumlah transfer data menggunakan opsi –limit-rate. Anda dapat menentukan kecepatan transfer maksimum sebagai argumen.
$ curl --limit-rate 1000B -O http://www.gnu.org/software/gettext/manual/gettext.html
Perintah di atas membatasi transfer data hingga 1000 Bytes/detik. curl dapat menggunakan kecepatan transfer yang lebih tinggi untuk rentang waktu yang singkat. Tapi rata-rata, itu akan mencapai 1000B/detik.
Berikut ini adalah pengukur kemajuan untuk perintah di atas. Anda dapat melihat bahwa kecepatan saat ini mendekati 1000 Bytes.
% Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 1 1215k 1 13601 0 0 957 0 0:21:40 0:00:14 0:21:26 999 1 1215k 1 14601 0 0 960 0 0:21:36 0:00:15 0:21:21 999 1 1215k 1 15601 0 0 962 0 0:21:34 0:00:16 0:21:18 999
7. Unduh file hanya jika diubah sebelum/setelah waktu yang ditentukan
Kita bisa mendapatkan file yang dimodifikasi setelah waktu tertentu menggunakan opsi -z di curl. Ini akan bekerja untuk FTP &HTTP.
$ curl -z 21-Dec-11 http://www.example.com/yy.html
Perintah di atas akan mengunduh yy.html hanya jika diubah lebih lambat dari tanggal dan waktu yang ditentukan
$ curl -z -21-Dec-11 http://www.example.com/yy.html
Perintah di atas akan mengunduh yy.html, jika diubah sebelum tanggal dan waktu yang ditentukan.
Silakan merujuk 'man curl_getdate' untuk berbagai sintaks yang didukung untuk ekspresi tanggal
8. Lewati Otentikasi HTTP di cURL
Terkadang, situs web akan memerlukan nama pengguna dan kata sandi untuk melihat konten (dapat dilakukan dengan file .htaccess). Dengan bantuan opsi -u, kami dapat meneruskan kredensial tersebut dari cURL ke server web seperti yang ditunjukkan di bawah ini.
$ curl -u username:password URL
Catatan:Secara default curl menggunakan Otentikasi HTTP Dasar. Kita dapat menentukan metode otentikasi lain menggunakan –ntlm | – intisari.
9. 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/xss.php
Perintah di atas akan mengunduh file xss.php dari server ftp dan menyimpannya 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
Jika Anda baru mengenal FTP/sFTP, lihat tutorial ftp sftp untuk pemula.
10. 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 ftp://ftp.uk.debian.org/debian/pool/main/[a-z]/
Perintah di atas akan menampilkan semua paket dari rentang a-z di terminal.
11. Unggah File ke Server FTP
Curl juga dapat digunakan untuk mengunggah file ke server FTP dengan opsi -T.
$ curl -u ftpuser:ftppass -T myfile.txt ftp://ftp.testserver.com
Perintah di atas akan mengupload 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.testserver.com
Secara opsional kita dapat menggunakan "." untuk mendapatkan input dari STDIN dan mentransfer ke remote.
$ curl -u ftpuser:ftppass -T - ftp://ftp.testserver.com/myfile_1.txt
Perintah di atas akan mendapatkan input dari pengguna dari Input Standar dan menyimpan konten di server ftp dengan nama 'myfile_1.txt'.
Anda dapat memberikan satu '-T' untuk setiap URL dan pasangan menentukan apa yang akan diunggah di mana.
12. Informasi Lebih Lanjut menggunakan Opsi Verbose dan Trace
Anda dapat mengetahui apa yang terjadi menggunakan opsi -v. -v opsi mengaktifkan mode verbose dan itu akan mencetak detailnya
curl -v http://google.co.in
Perintah about akan menampilkan berikut
* About to connect() to www.google.co.in port 80 (#0) * Trying 74.125.236.56... connected * Connected to www.google.co.in (74.125.236.56) port 80 (#0) > GET / HTTP/1.1 > User-Agent: curl/7.21.0 (i486-pc-linux-gnu) libcurl/7.21.0 OpenSSL/0.9.8o zlib/1.2.3.4 libidn/1.15 libssh2/1.2.6 > Host: www.google.co.in > Accept: */* > * HTTP 1.0, assume close after body < HTTP/1.0 200 OK < Date: Tue, 10 Apr 2012 11:18:39 GMT < Expires: -1 < Cache-Control: private, max-age=0 < Content-Type: text/html; charset=ISO-8859-1 < Set-Cookie: PREF=ID=7c497a6b15cc092d:FF=0:TM=1334056719:LM=1334056719:S=UORpBwxFmTRkbXLj; expires=Thu, 10-Apr-2014 11:18:39 GMT; path=/; domain=.google.co.in . .
Jika Anda membutuhkan informasi lebih detail maka Anda dapat menggunakan opsi –trace. Opsi pelacakan akan mengaktifkan dump jejak penuh dari semua data masuk/keluar ke file yang diberikan
=> Send header, 169 bytes (0xa9) 0000: 47 45 54 20 2f 20 48 54 54 50 2f 31 2e 31 0d 0a GET / HTTP/1.1.. 0010: 55 73 65 72 2d 41 67 65 6e 74 3a 20 63 75 72 6c User-Agent: curl .. 0060: 2e 32 2e 33 2e 34 20 6c 69 62 69 64 6e 2f 31 2e .2.3.4 libidn/1.
0070: 31 35 20 6c 69 62 73 73 68 32 2f 31 2e 32 2e 36 15 libssh2/1.2.6 0080: 0d 0a 48 6f 73 74 3a 20 77 77 77 2e 67 6f 6f 67 ..Host: www.goog 0090: 6c 65 2e 63 6f 2e 69 6e 0d 0a 41 63 63 65 70 74 le.co.in..Accept 00a0: 3a 20 2a 2f 2a 0d 0a 0d 0a : */*.... == Info: HTTP 1.0, assume close after body <= Recv header, 17 bytes (0x11) 0000: 48 54 54 50 2f 31 2e 30 20 32 30 30 20 4f 4b 0d HTTP/1.0 200 OK. 0010: 0a
Opsi verbose dan trace ini akan berguna ketika curl gagal karena beberapa alasan dan kami tidak tahu mengapa.
13. Mendapatkan Definisi Kata menggunakan Protokol DICT
Anda dapat menggunakan cURL untuk mendapatkan definisi kata dengan bantuan protokol DICT. Kita perlu memberikan URL Server Kamus ke sana.
$ curl dict://dict.org/d:bash
Perintah di atas akan mencantumkan arti bash sebagai berikut
151 "Bash" gcide "The Collaborative International Dictionary of English v.0.48" Bash \Bash\, v. t. [imp. & p. p. {Bashed}; p. pr. & vb. n. {Bashing}.] [Perh. of imitative origin; or cf. Dan. baske to strike, bask a blow, Sw. basa to beat, bas a beating.] To strike heavily; to beat; to crush. [Prov. Eng. & Scot.] --Hall Caine. [1913 Webster] Bash her open with a rock. --Kipling. [Webster 1913 Suppl.] . 151 "Bash" gcide "The Collaborative International Dictionary of English v.0.48" Bash \Bash\, n. 1. a forceful blow, especially one that does damage to its target. [PJC] . .
Sekarang Anda dapat melihat bahwa itu menggunakan "The Collaborative International Dictionary of English". Ada banyak kamus yang tersedia. Kami dapat membuat daftar semua kamus menggunakan
$ curl dict://dict.org/show:db jargon "The Jargon File (version 4.4.7, 29 Dec 2003)" foldoc "The Free On-line Dictionary of Computing (26 July 2010)" easton "Easton's 1897 Bible Dictionary" hitchcock "Hitchcock's Bible Names Dictionary (late 1800's)" bouvier "Bouvier's Law Dictionary, Revised 6th Ed (1856)"
Sekarang untuk menemukan arti sebenarnya dari Bash di komputer kita dapat mencari bash di kamus “foldoc” sebagai berikut
$ curl dict://dict.org/d:bash:foldoc
Hasilnya adalah,
bash Bourne Again SHell. {GNU}'s {command interpreter} for {Unix}. Bash is a {Posix}-compatible {shell} with full {Bourne shell} syntax, and some {C shell} commands built in. The Bourne Again Shell supports {Emacs}-style command-line editing, job control, functions, and on-line help. Written by Brian Fox of {UCSB}.
Untuk detail lebih lanjut mengenai DICT, silakan baca RFC2229
14. Gunakan Proxy untuk Mengunduh File
Kita dapat menentukan cURL untuk menggunakan proxy untuk melakukan operasi tertentu menggunakan opsi -x. Kita perlu menentukan host dan port proxy.
$ curl -x proxysever.test.com:3128 http://google.co.in
15. Kirim Email menggunakan Protokol SMTP
cURL juga dapat digunakan untuk mengirim email menggunakan protokol SMTP. Anda harus menentukan from-address, to-address, dan ip-address mailserver 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 menyusun pesan, ketik . (titik) sebagai baris terakhir, yang akan segera mengirimkan email.
Subject: Testing This is a test mail .