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 ve libcurl’ü barındıran yazılım projesinin adıdır.
CURL, PHP ile kullanılan libcurl işlemlerini ifade eder.

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 alanadi.com

Komut işleme alındığında alanadi.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ır. 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 ortak özelliklerinden bahsetmek gerekirse;

  • 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 ve wget ile ilgili daha kapsamlı bir karşılaştırma için curl vs Wget sayfasını inceleyebilirsiniz.

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önecektir. 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://alanadi.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ılabilir.

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 alanadi.com/sayfa.html
curl -z -09-Jan-18 alanadi.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://alanadi-veya-ip/klasor/
curl -u ftp-kullanici-adi:ftp-sifre -O ftp://alanadi-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://alanadi-veya-ip/klasor/
curl -u ftp-kullanici-adi:ftp-sifre -T "{dosya-adi-1,dosya-adi-2}" ftp://alanadi-veya-ip/klasor/
curl -u ftp-kullanici-adi:ftp-sifre -T "img[1-1000].jpg" ftp://alanadi-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.

Leave a Reply

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir