Curl, yani “Client URL” çoğu Unix işletim sisteminde bulunan bir komuttur. Curl komutları URL’lerin bağlanabilip bağlanamadığını kontrol edilmesini ve veri transferleri için kullanılacak muhteşem bir araçtır.
Bu yazımızda Curl nedir Curl komutu nasıl kullanılır gibi soruların cevabını sizler için paylaşacağız.
Curl komutları aşağıdaki protokolleri destekler:
- HTTP ve HTTPS
- FTP ve FTPS
- IMAP ve IMAPS
- POP3 ve POP3S
- SMB ve SMBS
- SFTP
- SCP
- TELNET
- GOPHER
- LDAP ve LDAPS
- SMTP ve SMTPS
Yukarıda belirttiğimiz komutlar en önemli protokollerdir. Desteklenen farklı komutlar da mevcuttur. Curl aslında istemci tarafın bulunan ücretsiz bir URL transfer sistemidir.
Curl Sürümünü Kontrol Etme:
Curl kelimesinin anlamını artık öğrendiğinize göre yazıyı okumaya devam edebilirsiniz. Fakat, ilk yapmanız gereken şey VPS’ye giriş yapmaktır.
İlk olarak Curl’ün hangi sürümünü kullandığınızı öğrenmek için aşağıdaki komutu kullanın:
curl --version
Bu komut kullanıldıktan sonra önünüze Curl’u destekleyen protokollerin bir listesi gelecektir. Aşağıda bazı Curl komutu örneklerinden bahsedeceğiz.
Basit Curl Command Sözdizimi
Curl’ün basit sözdizimi aşağıda belirttiğimiz gibidir:
curl [OPTIONS] [URL]
Curl’ün en basit kullanım alanı bir sayfanın içeriğinde neler olduğunu göstermektir. Örneğin aşağıda testalanadiniz.com’un ana sayfasının içeriklerini gösteren bir komuttur.
curl testalanadiniz.com
Yukarda belirttiğimiz örnekteki alan adı için ana sayfanın kaynak kodunu görmeye yarayacaktır. Herhangi bir kontrol sağlanamadıysa curl bunu HTTP’ye yorumlayacaktır.
Curl Komutu Dosya Seçenekleri
Curl komutları uzak bir konumdan dosyaları iki farklı yol ile indirebilir.
- -O komutu mevcut çalışan klasörde bulunan dosyayı uzak bir konumdaki klasör aynı isimde kaydedecektir.
- -o komutu ise farklı bir dosya veya klasör ismi belirlemenizi sağlayacaktır.
Buna aşağıdaki gibi bir örnek verilebilir:
curl -O http://testalanadiniz.com/testdosyasi.tar.gz
Yukarıda bulunan komut bu dosyayı testdosyasi.tar.gz olarak kaydedilmesini sağlayacaktır.
curl -o yenitestdosyasi.tar.gz http://testalanadiniz.com/testdosyasi.tar.gz
Yukarıda belirttiğimiz örnekte komut dosyayı yenitestdosyasi.tar.gz olarak kaydedilmesini sağlayacaktır.
Herhangi bir nedenden dolayı indirmeniz de bir sıkıntı çıkarsa curl komutu kullanıp devam etmesini sağlayabilirsiniz. Bunu aşağıda belirttiğimiz komutu kullanarak yapabilirsiniz:
curl -C - -O http://testalanadiniz.com/testdosyasi.tar.gz
Bu dosyayı bir defadan fazla indirmek için Curl kullanarak aşağıda belirtildiği gibi yapabilirsiniz.
curl -O http://testalanadiniz.com/testdosyasi.tar.gz -O http://benimalanadim.com/myfile.tar.gz
Eğer birden fazla URL ve birden fazla dosya indirmeyi düşünüyorsanız tümünü bir dosyada listeleyin. Curl komutları birbirinden farklı URL’leri indirmek için xargs ile birleştirerek indirme işlemini gerçekleştirebilirsiniz.
Örneğin tumUrller.txt adı ile indirilecek bütün URL’lerin bir listesini bulunduran dosyaya sahipseniz eğer aşağıdaki gösterdiğimiz örneği tüm dosyaların indirilme işlemi için kullanabilirsiniz.
xargs –n 1 curl -O < tumUrller.txt
HTTP için Curl Komutları
Curl proxy sunucusu bulunduğu zaman da kullanılabilir. Örneğin testproxy.com’da 8090 portunda olan bir proxy sunucusu kullanıyorsanız, aşağıda belirtilen dosyaları indirmeniz gerekiyor:
curl -x testproxy.com:8090 -U kullaniciadi:sifre -O http://testalanadiniz.com/testdosyasi.tar.gz
Yukarıda belirtilen örnekte eğer proxy bir doğrulama sistemi kullanmıyorsa -U kullaniciadi:sifre kısmını silebilirsiniz.
Standart bir HTTP isteği daima bir başlık içermek zorundadır. HTTP başlığı uzaktaki web sunucusu ile ilgili bilgilerin istekleri ile birlikte ek bilgi gönderecektir. Bir tarayıcının kullandığı araçlar üzerinden başlık bilgisinin kontrolü sağlanırken ayrıca curl komutu kullanarak da doğrulanması mümkündür.
Aşağıdaki belirtilen komuttan bir internet sitesinden başlık bilgisi alabilirsiniz.
curl -I www.testalanadiniz.com
Ayrıca Curl kullanarak GET ve POST istekleri de yapmanız mümkündür. Bir GET isteği aşağıda belirtilen örnekteki gibi yapılmaktadır.
curl http://seninalanadin.com
POST isteği aşağıda belirtilen örnekteki gibi yapılmaktadır:
curl –data “text=Merhaba” https://seninalanadin.com/firstPage.jsp
Bu örnekte text=Merhaba POST isteği parametresidir. Bu tıpkı HTML formlarına benzemektedir.
Birden fazla HTTP yöntemlerini bir curl komutunda belirleyebilmeniz de mümkündür. Bunu – next seçeneği ile yapabilirsiniz:
curl –data “text=Merhaba” https://seninalanadin.com/firstPage.jsp --next https://seninalanadin.com/displayResult.jsp
Yukarıda belirttiğimiz örnek GET isteğinin takip ettiği bir POST isteğidir.
Her HTTP isteğin bir parçası olarak gönderilen bir kullanıcı aracısına sahiptir. Bu istemci web tarayıcı detaylarını gösterir. Varsayılan olarak bir curl isteği kullanıcı aracısı bilgileri olarak curl ve sürüm numarasını bulundurur. Aşağıda bu komuta bir örnek verdik:
“GET / HTTP/1.1” 200 “_” ”curl/7/29/0”
Yukarıdaki varsayılan kullanıcı aracısının bilgilerini aşağıdaki komutu ile değiştirmeniz mümkündür:
curl -I http://seninalanadin.com –-user-agent “Yeni tarayıcım”
Değişen sonuç aşağıdaki gibi olacaktır:
“GET / HTTP/1.1” 200 “_” ”Yeni tarayıcım”
Çerezler için Curl
Curl komutları herhangi bir URL’de hangi çerezlerin yüklendiğinin kontrolü için kullanılır. Eğer https://www.testwebsite.com‘a bağlanabiliyorsanız sonucu bir dosyaya alabilir, çerezleri kaydedebilir ve cat veya bir VM editörü kullanarak erişimi sağlayabilirsiniz.
Yukarıda belirttiğimiz komutun aşağıda bir örneği mevcuttur:
curl --cookie-jar Cerezlerim.txt https://www.testwebsite.com /index.html -O
Aynı şekilde çerezleri bir dosyada tutmak isterseniz eğer web siteye gönderebilirsiniz. Bu şekilde bir komutun örneği aşağıda mevcuttur.
curl --cookie Cerezlerim.txt https://www.testwebsite.com
FTP için Curl
Curl komutunu FTP de desteklemektedir. Bu komutları konumu uzak olan bir sunucu kullanarak dosyaların indirilmesinde kullanabilirsiniz.
curl -u kullaniciadi:sifre -O ftp://testftpsunucusu/ornekdosya.tar.gz
Yukarıdaki örnek komutta ftp://testftpsunucusu bağlantıları kabul eden bir FTP sunucusuna aittir. Anonim FTP bağlantılarında kullanıcı adı ve şifreyi geçebilirsiniz. Komutu girin ve yüklenme çubuğunun dolması için ilerleyin.
Aşağıdaki komutu kullanarak dosyaların karşıya yüklenmesini sağlayabilirsiniz.
curl -u kullaniciadi:sifre -T ornekdosya.tar.gz ftp://testftpsunucusu
Aynı şekilde anonim FTP bağlantılarında kullanıcı adı ve şifreyi geçebilirsiniz.
Curl Sonucunu Sınırlama
Bir curl komutu kullanırken sonucunun büyüklüğünü tahmin edemeyiz. Trafiği sınırlayarak curl tarafından yoğunluk oluşmasını engelleyebilirsiniz.
Aşağıda belirttiğimiz komut trafiği 100 bine ile sınırlamaktadır:
curl --limit-rate 100K http://testalanadiniz.com/ornekdosya.tar.gz -O
Sonuç
Curl çoğu kişi tarafından kullanılan güçlü bir komuttur. Komut satırına ihtiyaç duyduğunuz zaman çok kullanışlıdır. Birçok seçeneği bulundurmakla birlikte birden fazla protolü desteklemektedir.
Umuyoruz ki bu yazımız ile Curl nedir sorusu ile size bu komutun kullanımı konusunda yardımcı olmuşuzdur.
Curl Nedir? Curl Komutu Nasıl Kullanılır? başlıklı yazımız ile ilgili aklınıza takılan sorularınızın yanıtını alabilmeniz için veya öneride bulunabilmeniz için aşağıda yer alan yorumlar kısmını kullanarak bizimle iletişime geçebilirsiniz.
Dilerseniz daha önce bloğumuzda paylaştığımız 15 Temel Linux Komutu başlıklı yazımızı da okuyabilirsiniz.