Keriting


Memulai

Pendahuluan

Curl adalah alat untuk mentransfer data antar server, mendukung protokol, termasuk:

  • HTTP
  • HTTPS
  • FTP
  • IMAP
  • LDAP
  • POP3
  • SCP
  • SFTP
  • SMB
  • SMTP
  • dll… {.cols-3 .marker-none}

Opsi {.col-span-2 row-span-2}

-o <file> # --output: menulis ke berkas
-u user:pass # --user: autentikasi

-v # --verbose: Membuat curl menjadi verbose selama operasi
-vv # lebih banyak kata yang bertele-tele
-s # --silent: jangan tampilkan pengukur kemajuan atau kesalahan
-s # --show-error: tampilkan kesalahan: Ketika digunakan dengan --silent (-sS), tampilkan kesalahan tetapi tidak ada pengukur kemajuan

-i # --include: menyertakan header HTTP dalam keluaran
-I # --head: hanya header saja

Permintaan

-X POST # --request
-L # Jika halaman dialihkan, ikuti tautan
-F # --form: Data HTTP POST untuk data multipart/formulir

data

# --data: Data posting HTTP
# Pengkodean URL (misalnya, status = "Halo")
-d 'data'

# --data melewatkan berkas
-d @file

# --get: mengirim -d data melalui get
-G

Informasi tajuk Header Header

-A <str> # --user-agent

-b name=val # --cookie

-b, --cookie FILE # Memuat cookie dari berkas yang ditentukan untuk URL
-c, --cookie-jar FILE # Menyimpan kuki ke berkas yang ditentukan dari URL

-H "X-Foo: y" # --header

--kompresi # gunakan deflate/gzip

SSL

    --cacert <file>
    --capath <dir>
-E, --cert <cert> # --cert: berkas sertifikat klien
    --cert-type # der/pem/eng
-k, --insecure # Untuk sertifikat yang ditandatangani sendiri

Instal

apk add --update curl # instal di alpine linux

Contoh

CURL GET/HEAD

perintah deskripsi
curl -I https://cheatsheets.zip curl mengirimkan permintaan
curl -v -I https://cheatsheets.zip curl permintaan dengan detail
curl -X GET https://cheatsheets.zip menggunakan metode http eksplisit untuk curl
curl --noproxy 127.0.0.1 http://www.stackoverflow.com curl tanpa proxy http
curl --connect-timeout 10 -I -k https://cheatsheets.zip curl tidak memiliki batas waktu secara default
curl --verbose --header "Host: www.mytest.com:8182" cheatsheets.zip curl mendapatkan header tambahan
curl -k -v https://www.google.com curl dapatkan respons dengan header

Unggahan beberapa berkas

$ curl -v --include \
--form key1 = nilai1 \
    --form upload=@localfilename URL

Mempercantik keluaran json untuk respons curl

$ curl -XGET http://${elasticsearch_ip}:9200/_cluster/nodes | python -m json.tool

CURL POST

perintah deskripsi
curl -d "name=username&password=123456" <URL> curl mengirim permintaan
curl <URL> -H "content-type: application/json" -d "{ \"guk\": \"menggonggong\"}" curl mengirim json

Skrip CURL instal rvm

curl -sSL https://get.rvm.io | bash

CURL Lanjutan

perintah deskripsi
curl -L -s http://ipecho.net/plain, curl -L -s http://whatismijnip.nl mendapatkan IP publik saya
curl -u $username:$password http://repo.dennyzhang.com/README.txt curl dengan kredensial
curl -v -F key1=value1 -F upload=@localfilename <URL> curl upload
curl -k -v --http2 https://www.google.com/ gunakan http2 curl
curl -T cryptopp552.zip -u test:test ftp://10.32.99.187/ curl ftp upload
curl -u test:test ftp://10.32.99.187/cryptopp552.zip -o cryptopp552.zip curl ftp unduh
curl -v -u admin:admin123 --upload-file package1.zip http://mysever:8081/dir/package1.zip unggah dengan kredensial curl

Periksa waktu respons situs web

curl -s -w \
'\nWaktu pencarian:\t%{waktu_nama_pencarian}\nWaktu koneksi:\t%{waktu_koneksi}\nWaktu AppCon:\t%{waktu_appconnect}\nWaktu pengalihan:\t%{waktu_redirect}\nWaktu PreXfer:\t%{waktu_pretransfer}\nWaktu StartXfer:\t%{waktu_starttransfer}\n\nWaktu Total:\t%{waktu_total}\n' \
     -o /dev/null https://www.google.com

Gunakan Curl untuk memeriksa apakah sumber daya jarak jauh tersedia

curl -o /dev/null --silent -Iw "%{http_code}" https://example.com/my.remote.tarball.gz

Mengunduh berkas

curl https://example.com | \'
grep --only-matching 'src="[^"]*.[png]"' | \
cut -d \" -f2 | \
while read i; do curl https://example.com/"${i}" \
-o "${i##*/}"; done

Unduh semua berkas PNG dari situs (menggunakan GNU grep)

Unduh berkas, simpan berkas tanpa mengubah namanya

curl --remote-name "https://example.com/linux-distro.iso"

ganti nama berkas

curl --remote-name "http://example.com/index.html" --output foo.html

lanjutkan pengunduhan sebagian

curl --remote-name --continue-at - "https://example.com/linux-distro.iso"

Unduh berkas dari beberapa domain

curl "https://www.{contoh,w3,iana}.org/index.html" --output "file_#1.html"

Unduh serangkaian file

curl "https://{foo,bar}.com/file_[1-4].webp" --output "#1_#2.webp"

Mengunduh serangkaian berkas (keluaran foo_file1.webp, foo_file2.webp ... bar_file1_webp, dst.)

Alihkan keluaran ke berkas

$ curl http://url/file > file

Otentikasi Dasar

$ curl --user nama pengguna:kata sandi http://example.com/
$ curl -u nama pengguna:kata sandi http://example.com/
$ curl -o berkas http://url/file
$ curl --output file http://url/file

Unduh informasi header

$ curl -I url
# menampilkan informasi header

Tulis keluaran ke file bernama remote_file

$ curl -o berkas http://url/file
$ curl --output berkas http://url/file

Jalankan skrip jarak jauh

$ curl -s http://url/myscript.sh

File konfigurasi

curl -K file
# baca konfigurasi dari berkas
curl --config file
$HOME/.curlrc # berkas konfigurasi default pada sistem seperti UNIX