Curl Aracı

cURL, çeşitli protokoller kullanarak, veri aktarımı sağlamak için kütüphane ve komut satırı aracı sunan bir bilgisayar yazılımı projesidir. cURL projesi, libcurl ve cURL olarak ikiye ayrılır. İlk olarak 1997 yılında yayınlanmıştır. İsminde bulunan "c" İngilizce'deki client kelimesinden gelmektedir.
Support
DICT, FILE, FTP, FTPS, GOPHER, GOPHERS, HTTP, HTTPS, IMAP, IMAPS, LDAP, LDAPS, MQTT, POP3, POP3S, RTMP, RTMPS, RTSP, SCP, SFTP, SMB, SMBS, SMTP, SMTPS, TELNET and TFTP. curl supports SSL certificates, HTTP POST, HTTP PUT, FTP uploading, HTTP form based upload, proxies, HTTP/2, HTTP/3, cookies, user+password authentication (Basic, Plain, Digest, CRAM-MD5, SCRAM-SHA, NTLM, Negotiate and Kerberos), dosya aktarımı özgeçmişi, proxy tünelleme ve daha fazlası.
cURL sözdizimi.
curl [OPTIONS] URL
cURL Kurulumu
APT Paket yöneticileri için (DEBIAN | UBUNTU)
CURL yeni dağıtımların çoğunda kurulu gelmektedir. Kurulu değil ise, curl aracının en son sürümünü yükleyin.
sudo apt install curl -y

YUM Paket yöneticileri için (RHEL | ORACLE)
CURL yeni dağıtımların çoğunda kurulu gelmektedir. Kurulu değil ise, curl aracının en son sürümünü yükleyin.
sudo yum install curl -y
curl versiyonunu öğrenmek için aşağıdaki komut satırını çalıştırabilirsiniz.
curl --version

HTTP için cURL Kullanımı
curl aracını herhangi bir seçenek olmadan kullanıldığınızda, verilen URL'nin kaynak kodunu standart çıktıya yazdırır.
curl google.com
curl https://google.com

curl aracı varsayılan olarak sunucu, istenen sayfanın farklı bir konuma taşındığını bildirir. Başlık ve bir 3XX yanıt kodu olarak bir çıktı alırsınız. Yani eğer bir yönlendirme var ise herhangi bir seçenek belirtmez iseniz curl devam etmez. Sitenin tüm yönlendirmeler dahil hedefe ulaşana kadar gitmesini istiyorsanız -L seçeneğini kullanmanız gerekir.
curl -L https://google.com

curl -I seçeneğiyle birlikte kullanıldığında, belirli bir URL'nin HTTP başlıklarını (header) görüntüler.
curl -I https://www.kali.org/

Dosya İndirme için cURL Kullanımı
curl aracı ile terminale yazdırılan kaynak kodunun standart çıktısını indirebiliriz. curl ile bir dosyayı indirmek için -o seçeneği, kaydedilen dosyanın adını belirlemenizi sağlar.

Şimdi curl ile sıkıştırılmış biraz daha büyük bir dosyayı indirelim. Görseldeki gibi, dosyanın toplam dosya boyutu, anlık olarak ne kadar indiği, indirme hızı, kalan zaman gibi bir çok bilgiyi sunar.
curl -o zimra.tgz https://s3.amazonaws.com/files.zimbra.com/downloads/zdesktop/7.3.1/b13063/zdesktop_7_3_1_ga_b13063_20170628044421_linux_x64.tgz


Büyük harf -O ise, dosyayı orijinal dosya adıyla kaydeder:
curl -O https://s3.amazonaws.com/files.zimbra.com/downloads/zdesktop/7.3.1/b13063/zdesktop_7_3_1_ga_b13063_20170628044421_linux_x64.tgz

curl aracı ile birden fazla dosyayı aynı anda indirebiliriz. Bunun için her indirme linkinden sonra tekrar -o veya -O seçeneğini kullanmanız yeterlidir.
curl -O https://dl-cdn.alpinelinux.org/alpine/v3.15/releases/x86_64/alpine-virt-3.15.4-x86_64.iso -O https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.17.1.tar.xz

Eğer indirdiğiniz dosya boyutu yüksek (ISO vb.) ise ve herhangi bir aksilikten internet bağlantınız kesilirse indirme devam etmez. Bu gibi durumlarda -C seçeneği ile kopma veya kesintiler olsa bile internet bağlantınız geldiği zaman indirmeye devam edecektir.
curl -C - -O https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.17.1.tar.xz
Dosyaları indirirken, internet hızınızı sınırlamak için--limit-rate seçeneği ile belirli bir limit belirleyebiliriz.
Verilen hız, bir sonek eklenmedikçe bayt/saniye cinsinden ölçülür. kilobayt için 'k' veya 'K' , megabayt için "m" veya "M" gigabayt için "g" veya "G" kullanın.
Örnekler: 200K, 3m ve 1G.
curl --limit-rate 512k -O https://indir.pardus.org.tr/ISO/Pardus21/Pardus-21.1-XFCE-amd64.iso

Bazı durumlarda sistem tarafından engellendiğimiz için veya farklı durumlardan kullanıcı ajanlarını taklit etmemiz gerekebilir. -A seçeneği ile user agent takliti gerçekleştirebiliriz. Kullanıcı ajanları internet üzerinden bulabilirsiniz. Aşağıdaki örnekte Windows Mozilla kullanılmıştır.
curl -O -A "user-agent" download.file
curl -O -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:98.0) Gecko/20100101 Firefox/98.0" https://cdn.kernel.org/pub/linux/kernel/v5.x/linux-5.17.1.tar.xz

Elinizde bir indirme listesi var ise bunları tek tek yazmak yerine bir metin dosyasından okutup indirebilirsiniz.
xargs -n 1 curl -O < indirmelistesi.txt
xargs komutu ile bir komuttan gelen standart çıktıyı başka bir komuta argüman olarak yönlendirebilirsiniz.
Proxy için cURL Kullanımı
Eğer ortamınızda bir proxy sunucusu var ise -x seçeneği ile proxy ip adresi bilgisini yazıp dosyalarınızı indirebilirsiniz.
curl -x proxy-server -O https://indir.pardus.org.tr/ISO/Pardus21/Pardus-21.1-XFCE-amd64.iso
Parola korumalı bir proxy ortamından dosya indirmek için.
curl -U username:password -x proxy-server -O https://indir.pardus.org.tr/ISO/Pardus21/Pardus-21.1-XFCE-amd64.iso
FTP için cURL Kullanımı
CURL yalnızca HTTP’yi değil FTP’yi de birçok protokolü destekliyor. Aşağıdaki komut satırını örnek alarak FTP üzerinden dosya indirebilirsiniz.
curl -O ftp://ftpsunucu/dosya.zip
Parola korumalı bir ftp sunucudan dosya indirmek için.
curl -u username:password -O ftp://ftpsunucu/dosya.zip