Cara Penggunaan Perintah Curl di FreeBSD
· 2 min read · Label UnixBSDSebagai pengembang web atau administrator sistem, memahami permintaan HTTP dan cara berinteraksi dengan API sangatlah penting, terutama dalam hal mengotomatiskan permintaan dan debugging. Dalam skenario seperti itu, Anda mungkin ingin menjalankan permintaan HTML cepat dari terminal dan di sinilah CURL hadir untuk memenuhi kebutuhan Anda.
Curl adalah perangkat lunak gratis dan sumber terbuka yang dapat digunakan untuk bertukar data dengan server menggunakan salah satu dari banyak protokol yang didukung, seperti HTTP, HTTPS, FTP, FTP, SFTP. Karena Curl adalah alat baris perintah, alat ini dapat digunakan sebagai skrip baris perintah untuk mengotomatiskan tugas berulang seperti mengunduh atau bertukar data dan informasi antara perangkat elektronik.
CURL Klien memungkinkan kita untuk bertukar data antara klien dan server melalui antarmuka baris perintah (CLI). Dengan hanya menentukan alamat URL server dan data yang akan dikirim dan diminta akan segera ditransfer. Tidak hanya itu, curl juga dapat digunakan di mobil, perangkat televisi, router, printer, peralatan audio, ponsel, tablet, dekoder, pemutar media, dan merupakan mesin transfer Internet untuk ribuan aplikasi perangkat lunak di lebih dari sepuluh miliar instalasi.
Dalam artikel ini, kami akan memperkenalkan perintah CURL, mengeksplorasi bagaimana dan mengapa perintah tersebut digunakan, dan menunjukkan beberapa contoh umum perintah CURL dan kasus penggunaannya.
Setelah instalasi selesai, periksa versi CURL yang telah diinstal.
Sebagai alternatif untuk opsi --output, opsi ini dapat diganti dengan --remote-name atau -O. Ini akan menyebabkan file disimpan dengan nama remote-nya, firefox-106.0.1.tar.bz2, jalankan skrip di bawah ini.
Setelah proses download selesai, cek hasil download di folder /root dengan perintah ls, karena saat melakukan download kita aktif di folder root@ns1:~ #
a. Mengatur parameter header Content-Type ke application/json secara eksplisit
b. Melewatkan string JSON sebagai argumen ke opsi --data.
Berikut adalah contoh permintaan tersebut:
Curl adalah perangkat lunak gratis dan sumber terbuka yang dapat digunakan untuk bertukar data dengan server menggunakan salah satu dari banyak protokol yang didukung, seperti HTTP, HTTPS, FTP, FTP, SFTP. Karena Curl adalah alat baris perintah, alat ini dapat digunakan sebagai skrip baris perintah untuk mengotomatiskan tugas berulang seperti mengunduh atau bertukar data dan informasi antara perangkat elektronik.
CURL Klien memungkinkan kita untuk bertukar data antara klien dan server melalui antarmuka baris perintah (CLI). Dengan hanya menentukan alamat URL server dan data yang akan dikirim dan diminta akan segera ditransfer. Tidak hanya itu, curl juga dapat digunakan di mobil, perangkat televisi, router, printer, peralatan audio, ponsel, tablet, dekoder, pemutar media, dan merupakan mesin transfer Internet untuk ribuan aplikasi perangkat lunak di lebih dari sepuluh miliar instalasi.
Dalam artikel ini, kami akan memperkenalkan perintah CURL, mengeksplorasi bagaimana dan mengapa perintah tersebut digunakan, dan menunjukkan beberapa contoh umum perintah CURL dan kasus penggunaannya.
Daftar Isi
1. Install CURL di FreeBSD2. Cara Menggunakan perintah dasar CURL
3. Download File dengan CURL
4. Melakukan Permintaan POST
5. Mengirim Data JSON atau XML
6. Menggunakan Tipe Konten Multipart/Form-data
7. Mengatur Header Permintaan
1. Install CURL di FreeBSD
Jika Anda menggunakan server FreeBSD, CURL dapat diinstal melalui port FreeBSD dan juga melalui paket pkg. Dalam artikel ini kami akan menjelaskan cara menginstal CURL dengan sistem port FreeBSD.root@ns1:~ # cd /usr/ports/ftp/curl
root@ns1:/usr/ports/ftp/curl # make config
root@ns1:/usr/ports/ftp/curl # make install clean
root@ns1:~ # curl --version
curl 8.1.2 (amd64-portbld-freebsd13.1) libcurl/8.1.2 OpenSSL/1.1.1t zlib/1.2.13 libpsl/0.21.2 (+libidn2/2.3.4) libssh2/1.11.0 nghttp2/1.53.0
Release-Date: 2023-05-30
Protocols: dict file ftp ftps gopher gophers http https imap imaps pop3 pop3s rtsp scp sftp smtp smtps telnet tftp
Features: alt-svc AsynchDNS GSS-API HSTS HTTP2 HTTPS-proxy IPv6 Kerberos Largefile libz NTLM NTLM_WB PSL SPNEGO SSL threadsafe TLS-SRP UnixSockets
Dari tampilan script diatas kita bisa melihat bahwa versi CURL yang digunakan adalah curl 8.1.2
2. Cara Menggunakan perintah dasar CURL
Mirip dengan aplikasi baris perintah lainnya seperti git, wget, perl dan fetch, CURL juga memiliki sintaks dasar yang dapat digunakan sebagai referensi untuk menjalankan CURL. Sintaks dasar CURL sangat sederhana dan relatif mudah diingat. Berikut ini adalah contoh sintaks dasar CURL.curl [OPTIONS] [URL]
Setelah mengetahui perintah dasar CURL, sekarang kita praktikkan dengan situs web google.com. Script CURL di bawah ini digunakan untuk menampilkan konten halaman dan merender halaman dari situs web google.com.
Setelah Anda mencoba skrip di atas, Anda akan melihat output dari setiap skrip. Perhatikan perbedaan output skrip di atas.
Saat dipanggil dengan skrip di atas, curl mencetak isi respons yang dikirim oleh server ke output standar. Dalam kasus ini, konten yang akan ditampilkan adalah kode HTML halaman. Contoh lain, misalkan kita ingin menghitung berapa kali kata "google" muncul di kode sumber halaman yang dikembalikan oleh permintaan dari contoh skrip di atas.
root@ns1:~ # curl http://www.google.com
root@ns1:~ # curl https://www.google.com
root@ns1:~ # curl -I https://www.google.com
Saat dipanggil dengan skrip di atas, curl mencetak isi respons yang dikirim oleh server ke output standar. Dalam kasus ini, konten yang akan ditampilkan adalah kode HTML halaman. Contoh lain, misalkan kita ingin menghitung berapa kali kata "google" muncul di kode sumber halaman yang dikembalikan oleh permintaan dari contoh skrip di atas.
root@ns1:~ # curl -s https://www.google.com | grep -i -o google | wc -w
115
3. Mengunduh File dengan CURL
Dukungan utilitas berkas perintah Curl untuk mengunduh dan mengunggah berkas. Curl berguna untuk banyak pekerjaan dengan administrasi sistem, pengembangan web untuk memanggil layanan web, dan sebagainya. Misalkan kita ingin mengunduh Firefox versi terbaru dari situs web resmi Mozilla. Untuk menyimpan tarball secara lokal sebagai firefox.tar.bz2, jalankan skrip berikut.root@ns1:~ # curl --output firefox.tar.gz https://download-installer.cdn.mozilla.net/pub/firefox/releases/106.0.1/linux-x86_64/en-US/firefox-106.0.1.tar.bz2
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
64 75.1M 64 48.1M 0 0 1794k 0 0:00:42 0:00:27 0:00:15 1599k
Sebagai alternatif untuk opsi --output, opsi ini dapat diganti dengan --remote-name atau -O. Ini akan menyebabkan file disimpan dengan nama remote-nya, firefox-106.0.1.tar.bz2, jalankan skrip di bawah ini.
root@ns1:~ # curl --remote-name 'https://download-installer.cdn.mozilla.net/pub/firefox/releases/106.0.1/linux-x86_64/en-US/firefox-106.0.1.tar.bz2'
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
12 75.1M 12 9727k 0 0 2594k 0 0:00:29 0:00:03 0:00:26 2594k
Perintah dasar CURL untuk mengunduh File
Untuk mengunduh berkas menggunakan curl gunakan sintaks berikut. Opsi -O digunakan untuk menyimpan berkas pada sistem lokal dengan nama yang sama pada sistem jarak jauh.root@ns1:~ # curl -O https://www.monsta.com.br/admin/uploader/uploads/Configurando_o_Servidor_DNS_Unbound.pdf
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 198k 100 198k 0 0 52918 0 0:00:03 0:00:03 --:--:-- 52918
Unduh File dan Simpan Dengan Nama Berbeda
Dengan CURL Anda juga dapat menyimpan berkas yang diunduh dengan nama yang berbeda di komputer lokal. Gunakan -o diikuti dengan nama berkas baru untuk mengunduh dan menyimpan berkas dengan nama yang berbeda. Dalam contoh ini, kita akan mengunduh berkas unbound.pdf dan mengganti namanya menjadi serverdnsunbound.pdf.
root@ns1:~ # curl -o serverdnsunbound.pdf https://www.bortzmeyer.org/unbound.pdf
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 75422 100 75422 0 0 34565 0 0:00:02 0:00:02 --:--:-- 34581
Mengunduh Beberapa File Sekaligus
Salah satu kelebihan CURL adalah dapat mengunduh banyak berkas sekaligus. Contoh di bawah ini akan mengunduh berkas unbound.pdf, unbound-windows-manual-02.pdf dan opengate1.5.39.tar.gz.root@ns1:~ # curl -O https://www.bortzmeyer.org/unbound.pdf -O https://punoqun.net/documentation/unbound/unbound-windows-manual-02.pdf -O https://opengate.osdn.jp/download/opengate1.5.39.tar.gz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 75422 100 75422 0 0 36376 0 0:00:02 0:00:02 --:--:-- 36383
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 865k 100 865k 0 0 328k 0 0:00:02 0:00:02 --:--:-- 328k
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 106k 100 106k 0 0 40534 0 0:00:02 0:00:02 --:--:-- 40542
root@ns1:~ # ls
.bash_history .k5login .profile .wget-hsts unbound.pdf
.cshrc .local .shrc opengate1.5.39.tar.gz
.history .login .ssh unbound-windows-manual-02.pdf
Mengatur Kecepatan Download
Hampir sama dengan perintah wget, CURL juga memiliki kemampuan untuk membatasi kecepatan unduh file. Berikut ini adalah contoh skrip untuk membatasi kecepatan unduh file dengan CURL.root@ns1:~ # curl --limit-rate 100k -O https://opengate.osdn.jp/download/opengate1.5.39.tar.gz
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 106k 100 106k 0 0 42754 0 0:00:02 0:00:02 --:--:-- 42768
4. Melakukan Permintaan POST
Metode http POST digunakan untuk membuat sumber daya baru di server. Permintaan POST biasanya menyertakan data, yang dapat dikirim dengan berbagai cara. Cara termudah untuk menyertakan data dalam permintaan POST dengan CURL adalah dengan menggunakan opsi --data (-d) atau --data-urlencode. Data yang dikirim harus dikodekan urlen (dikodekan dalam persen). Jika kita menggunakan yang pertama, kita perlu mengkodekannya terlebih dahulu; jika kita menggunakan yang terakhir (tersedia dalam versi CURL terbaru), sebaliknya, data akan dikodekan secara otomatis.root@ns1:~ # curl --data-urlencode "name=John Smith" --data-urlencode "age=30" https://httpbin.org/post
{
"args": {},
"data": "",
"files": {},
"form": {
"age": "30",
"name": "John Smith"
},
"headers": {
"Accept": "*/*",
"Content-Length": "22",
"Content-Type": "application/x-www-form-urlencoded",
"Host": "httpbin.org",
"User-Agent": "curl/8.1.2",
"X-Amzn-Trace-Id": "Root=1-64c5b2a5-0c4b5fc569f1fb7c3408e18d"
},
"json": null,
"origin": "36.90.8.254",
"url": "https://httpbin.org/post"
}
Dalam contoh di atas, kami mengirim permintaan ke situs https://httpbin.org, yang dapat digunakan untuk menguji permintaan tersebut. Server mengembalikan respons yang mencerminkan data yang dikirim dalam permintaan tersebut.
5. Mengirim Data JSON atau XML
Dalam beberapa kasus, kita mungkin perlu mengirim string JSON sebagai data. Dalam kasus seperti itu, kita perlu melakukan dua hal:a. Mengatur parameter header Content-Type ke application/json secara eksplisit
b. Melewatkan string JSON sebagai argumen ke opsi --data.
Berikut adalah contoh permintaan tersebut:
root@ns1:~ # curl --header "Content-Type: application/json" --data '{"name": "John Smith", "age": 30 }' https://httpbin.org/post
{
"args": {},
"data": "{\"name\": \"John Smith\", \"age\": 30 }",
"files": {},
"form": {},
"headers": {
"Accept": "*/*",
"Content-Length": "34",
"Content-Type": "application/json",
"Host": "httpbin.org",
"User-Agent": "curl/8.1.2",
"X-Amzn-Trace-Id": "Root=1-64c5b4a4-1b6c2b9e56e669d92761a69b"
},
"json": {
"age": 30,
"name": "John Smith"
},
"origin": "36.90.8.254",
"url": "https://httpbin.org/post"
}
root@ns1:~ # curl --header "Content-Type: text/xml" --data '<person><name>John Smith</name><age>30</age></person>' https://httpbin.org/post
{
"args": {},
"data": "<person><name>John Smith</name><age>30</age></person>",
"files": {},
"form": {},
"headers": {
"Accept": "*/*",
"Content-Length": "53",
"Content-Type": "text/xml",
"Host": "httpbin.org",
"User-Agent": "curl/8.1.2",
"X-Amzn-Trace-Id": "Root=1-64c5b4f6-3297a7c61dca2a4423d8ab7f"
},
"json": null,
"origin": "36.90.8.254",
"url": "https://httpbin.org/post"
}
6. Menggunakan Tipe Konten Multipart/Form-data
Untuk membuat permintaan POST dan menyertakan data menggunakan tipe konten multipart/form-data, kita dapat menjalankan Curl dengan opsi --form (-F). Inilah yang ingin kita gunakan, misalnya saat kita perlu mengunggah file. Ini adalah permintaan yang sama yang kita buat pada contoh sebelumnya, tetapi dilakukan dengan tipe konten berikut.root@ns1:~ # curl --form "name=John Smith" --form "age=30" https://httpbin.org/post
{
"args": {},
"data": "",
"files": {},
"form": {
"age": "30",
"name": "John Smith"
},
"headers": {
"Accept": "*/*",
"Content-Length": "243",
"Content-Type": "multipart/form-data; boundary=------------------------be26f7f1fcf94068",
"Host": "httpbin.org",
"User-Agent": "curl/8.1.2",
"X-Amzn-Trace-Id": "Root=1-64c5b5dc-22b1c1d749f6e0ed4b2c6b11"
},
"json": null,
"origin": "36.90.8.254",
"url": "https://httpbin.org/post"
}
7. Mengatur Header Permintaan
Parameter header digunakan untuk memberikan informasi tambahan ke dalam permintaan, beberapa contohnya adalah Keep-Alive yang digunakan untuk mengontrol berapa banyak koneksi yang harus tetap terbuka atau User-Agent, yang digunakan untuk mengidentifikasi jenis aplikasi dan sistem operasi, atau Accept, yang digunakan untuk menentukan jenis MIME yang diterima oleh klien. Untuk mengatur parameter header dengan Curl, kita dapat menggunakan opsi -H (singkatan dari --header).root@ns1:~ # curl --header "Accept: text/xml" --header "User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:105.0) Gecko/20100101 Firefox/105.0" https://httpbin.org/get
{
"args": {},
"headers": {
"Accept": "text/xml",
"Host": "httpbin.org",
"User-Agent": "Mozilla/5.0 (X11; Linux x86_64; rv:105.0) Gecko/20100101 Firefox/105.0",
"X-Amzn-Trace-Id": "Root=1-64c5b772-5d6573380a68c65042b1d669"
},
"origin": "36.90.8.254",
"url": "https://httpbin.org/get"
}
root@ns1:~ # curl --user-agent "User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:105.0) Gecko/20100101 Firefox/105.0" https://httpbin.org/get
{
"args": {},
"headers": {
"Accept": "*/*",
"Host": "httpbin.org",
"User-Agent": "User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:105.0) Gecko/20100101 Firefox/105.0",
"X-Amzn-Trace-Id": "Root=1-64c5b7e3-74c46169149208f9465e53f1"
},
"origin": "36.90.8.254",
"url": "https://httpbin.org/get"
}
Silahkan Berkomentar, Kakak...! Bunda...!
Posting Komentar