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.

AA

İ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.

  1. curl komut satırı aracını ifade eder.
  2. cURL bahsi geçen curl ve libcurl'ü barındıran yazılım projesinin adıdır.
  3. CURL PHP ile kullanılan libcurl işlemlerini ifade eder.
  4. curl tümleşik olarak libcurl 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;

  1. Her ikisi de komut satırı vasıtasıyla FTP, HTTP ve HTTPS üzerinden indirme işlemi gerçekleştirebilir,
  2. Her ikisi de HTTP POST talebi iletebilir,
  3. Her ikisi de HTTP çezerlerini destekler,
  4. Her ikisi de etkileşimli işlemlerde (script) kullanılabilir,
  5. 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 sayfa indirme

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.

İlgili Diğer Yazılar