cURL Nedir? Nasıl Kullanılır?
cURL, desteklediği bir çok protokol üzerinden veri aktarımı sağlamak amacıyla geliştirilen bir yazılım projesi olarak ifade edilebilir. Proje esasında tümleşik olduğu kütüphane libcurl
ve komut satırı yapısı curl
üzerinden nitelendirilmektedir.
İstemci taraflı URL transfer kütüphanesi olan libcurl
bir çok platformda (Unix temelli işletim sistemleri, Android, Windows, …) çalışabilmekte ve bir çok protokolü (FTP, FTPS, HTTP, HTTPS, SCP, SFTP, IMAP, POP3, SMTP, …) ve programlama dilini (C/C++, Go, R, Java, PHP, Python) desteklemektedir.
cURL - curl - CURL yazımlarında ise genellikle belirtilen karşılıklar farklılaşır.
curl
komut satırı aracını ifade eder.cURL
bahsi geçen curl velibcurl
'ü barındıran yazılım projesinin adıdır.CURL
PHP ile kullanılanlibcurl
işlemlerini ifade eder.curl
tümleşik olaraklibcurl
kütüphanesini kullanmaktadır ve URL sözdizimini kullanarak komut satırı üzerinden dosya almak ve göndermek için kullanılır. Temel kullanım şekli şöyledir:
curl ornekwebsitesi.com
Komut işleme alındığında ornekwebsitesi.com
’un kaynak kodunun dönmesinin nedeni curl
’ün ön tanımlı olarak çıktıyı stdout
vermesidir. Ek olarak, HTTPS protokolü üzerinden komut işleme alınırsa curl
varsayılan olarak SSL sertifika doğrulaması yapacaktır1. Uzak sunucu self-signed bir sertifikaya sahipse ya da geçerli bir Certificate Authority tarafından imzalanmamışsa curl
hata döndürecektir. Bu tür durumlarda -k
(veya -insecure
) ile sertifika doğrulamasını es geçebilirsiniz.
Kullanım yapısal olarak wget ile benzeşmektedir. Temel curl
ile wget
arasındaki ortak özelliklerinden bahsetmek gerekirse2;
- Her ikisi de komut satırı vasıtasıyla FTP, HTTP ve HTTPS üzerinden indirme işlemi gerçekleştirebilir,
- Her ikisi de HTTP POST talebi iletebilir,
- Her ikisi de HTTP çezerlerini destekler,
- Her ikisi de etkileşimli işlemlerde (script) kullanılabilir,
- Her ikisi de metalink destekler…
curl Kullanımı
Standart kullanımından yukarıdaki bahsetmiştim. Bahsi geçen örneğe ek olarak URL dönüşünü bir dosyaya aktarabiliriz. Bunun için -o
opsiyonunu kullanmak gerekli.
curl -o wiki.html wikipedia.com
curl
ile URL işleminde, belirtilen URL başka bir adrese taşınmışsa yanıt olarak bu yönlendirme durumu dönecektir3. Bu tür yönlendirme durumlarında -L
opsiyonu kullanılmaktadır.
curl -OL wordpress.org/index.php
-o
ve -O
opsiyonları arasındaki farka da yeri gelmişken değineyim. -o
kullanımında URL dönüşü belirtilen dosya oluşturularak kayıt edilecektir. -O
opsiyonunda ise ayrıca dosya belirtmeye gerek yoktur, URL uzantısı dosya adı olarak alınır.
Örnekleri detaylandırmaya devam edelim ve bu kez tek seferde bir çok URL sorgusunun işlenmesini sağlayalım. Çoklu kullanım temel olarak şu şekilde işlemektedir.
curl -O URL1 -O URL2
curl -O http://ornekwebsitesi.com/arsiv-[1996-1999]/sayi-[1-4]/bolum{a,b,c}.html
Örneğimizde ise aynı alanadına ait farklı sayfalar tercih edebileceğimiz gibi farklı alanadları üzerinden de sayfa belirtebiliriz.
curl -O http://www.gnu.org/software/gettext/manual/html_node/index.html -O http://www.gnu.org/software/gettext/manual/gettext.html
curl
ön tanımlı olarak HTTP Location headers takibi yapmamakta. Örneğin google.com
üzerinden işlem gerçekleştirmek istediğinizde alacağınız bildirim 302 Moved ve önerilen sayfa Türkiye erişimi için URL önerisi http://www.google.com.tr
olacaktır. Bu ve benzeri URL durumlarında -L
opsiyonu kullanılabilir.
curl -L http://www.google.com
wget
örneklerinde de değindiğimiz yarım kalan bir indirme işleminin devam ettirilebilmesi için -C
, limit sınırlandırma için -limit-rate [deger]
opsiyonları kullanılabilir4.
curl -C - -O http://www.gnu.org/software/gettext/manual/gettext.html
curl --limit-rate 1000B -O http://www.gnu.org/software/gettext/manual/gettext.html
curl
ile tarih belirterek de indirme işlemleri gerçekleştirilebilir. Örnek olarak, aşağıdaki komutla 09-Jan-18 tarihinden sonra düzenlenmiş dosyaları indirebilirsiniz. Bu kullanıma ek olarak belirtilen tarihten öncesinin işleme alınması için tarih ibaresinin başına -
işareti koymanız yeterli.
curl -z 09-Jan-18 ornekwebsitesi.com/sayfa.html
curl -z -09-Jan-18 ornekwebsitesi.com/sayfa.html
FTP üzerinden dosya ve dizin indirme işlemleri için ise kullanılacak opsiyonlar şöyle:
curl -u ftp-kullanici-adi:ftp-sifre -O ftp://ornekwebsitesi-veya-ip/klasor/
curl -u ftp-kullanici-adi:ftp-sifre -O ftp://ornekwebsitesi-veya-ip/klasor/dosya-adi
FTP üzerinden lokaldeki dosya ve dizin yüklemelerini yapmak için:
curl -u ftp-kullanici-adi:ftp-sifre -T dosya-adi ftp://ornekwebsitesi-veya-ip/klasor/
curl -u ftp-kullanici-adi:ftp-sifre -T "{dosya-adi-1,dosya-adi-2}" ftp://ornekwebsitesi-veya-ip/klasor/
curl -u ftp-kullanici-adi:ftp-sifre -T "img[1-1000].jpg" ftp://ornekwebsitesi-veya-ip/klasor/
curl
kullanımıyla ilgili çok deha detaylı bilgiyi curl manuel sayfasından ve bir çok örnekle birlikte Everything curl yayınından edinebilirsiniz.