cURL Nedir ?
cURL (curl olarak okunur) sunuculara ve sunuculardan veri aktarımını kolaylaştıran bir komut satırı aracıdır. Bir terminalde birkaç satır komutla, herhangi bir sunucudan diğerine büyük veri yığınlarının değişimini tamamlayabilirsiniz.
Her program komutu gibi, cURL de düzgün çalışması için katı bir sözdizimine uymalıdır. Sözdizimi aşağıdaki biçimi alır.
cURL [seçenekler] [URL]
Sözdiziminin ‘seçenekler’ kısmı, komutun istenen sonucunu gösteren belirli komut parametrelerini belirtir. cURL komutları için bu parametrelerden veya bayraklardan yaklaşık 380 tane vardır. Bunlardan popüler olanı ‘-o’dur. Bir sayfanın içeriğinin bir dosya içinde teslim edilmesine neden olur.
cURL ayrıca aktarım hedefini veya kaynağını, dolayısıyla sözdiziminin URL kısmını tanımlamak için belirli bir Tekdüzen Kaynak Tanımlayıcı (URI) türü gerektirir. Bu özel URI biçimi URL’dir (Uniform Resource Locator). cURL, URL’leri olmayan ağ protokollerini desteklemez. (Protokoller, bir sunucunun bir ağ üzerinde nasıl veri talep etmesi ve/veya alması gerektiğine dair bir dizi talimattır.
Önceki bir makalede, protokollerin ne olduğu ve iki popüler protokol arasındaki fark hakkında ayrıntılı bir açıklama yapmıştık: SOCKS ve HTTP. Daha fazla açıklama için kontrol etmelisiniz).
cURL, LibcURL adı verilen bir iletim yazılımını kullanır. Bu, cURL’ün desteklediği çoklu protokollerin bir listesini içeren bir kütüphanedir. Sağlam ve çok yönlüdür ve belki de en çok kullanılan ağ aktarım kütüphanesidir.
libcURL geleneksel ve taşınabilir bir ağ yazılımıdır. Linux, Windows ve macOS dahil olmak üzere çok çeşitli işletim sistemlerinde aynı şekilde çalışır. Bu işletim sistemlerinde varsayılan olarak yüklüdür. Ancak, yoksa, yazılım paketini cURL web sitesinden indirebilir ve kurabilirsiniz.
cURL Hangi Protokolleri Destekler?
cURL, her iki yönde de “veri aktarımına” izin veren protokolleri destekler. Tüm protokoller URL kullanımını desteklemez ve bu tür protokoller cURL ile uyumlu değildir. Ayrıca, cURL’ün desteklediği her protokolün nasıl dağıtılabileceğine ilişkin önceden belirlenmiş bir biçimi vardır.
HTTP, cURL kullanımı için varsayılan protokoldür. Bununla birlikte, komut yardımcı programı, alfabetik sıraya göre düzenlenmiş aşağıdakiler de dahil olmak üzere diğer birçok ağ protokolüyle de mükemmel şekilde çalışır:
- Sözlük Ağ Protokolü [DICT]
- DOSYA
- Dosya Aktarım Protokolü (FTP)
- GOPHER
- GOPHERS
- IMAP
- IMAPS
- LDAP
- LDAPS
- MQTT
- POP3
- POP3S
- RTMP
- RTSP
- SCP
- SFTP
- SMB
- SMBS
- SMTPS
- TELNET
- TFTP
Neden cURL Kullanılır?
cURL çok yönlülüğü, basitliği ve etkinliği nedeniyle yaygın olarak kullanılmaktadır. CURL’lerin temel amacı, desteklenen protokollerden veya formatlardan herhangi birini kullanarak tüm web sayfalarını indirmek ve yüklemektir. Ayrıca kullanıcı kimlik doğrulaması, HTTP POST, dosya aktarımı, Metalink desteği ve FTP yüklemeleri ve SSL bağlantıları için proxy desteği gibi çeşitli işlevler için de kullanılır.
CURL’lerin bu yaygın kullanımı, cURL’nin aşağıdaki özelliklerinden kaynaklanmaktadır:
- Neyin teslim edildiği veya gönderildiği hakkında ayrıntılı bilgi sağlar ve bu sorun giderme için çok yararlıdır.
- Çoklu ağ protokolü desteği
- Belirtilen protokol çalışmadığında otomatik olarak başka bir protokolle çalışmayı deneyebilir.
- URL parçalarını parantez içinde kullanarak bir URL’nin veya birden fazla URL’nin parçalarını belirtme imkanı sağlar
- Farklı kullanıcı ortamları (işletim sistemleri) ile uyumludur
HTTP/HTTPS proxy ile cURL kullanımı
Bu web sitesi özellikle proxy’leri test etmek için kullanışlıdır çünkü bu sayfanın çıktısı kaynak IP adresidir. Eğer doğru bir proxy kullanıyorsanız, sayfa sizin makinenizden farklı bir IP adresi, yani proxy’nin IP adresini döndürecektir.
Proxy komutu ile curl çalıştırmanın birden fazla yolu vardır. Bir sonraki bölümde proxy detaylarının komut satırı argümanı olarak gönderilmesi ele alınacaktır. Ayrıca, HTTPS proxy’lerini nasıl entegre edeceğimizi keşfedeceğiz.
NOT Tüm komut satırı seçenekleri veya anahtarları büyük/küçük harfe duyarlıdır. Örneğin, -f curl’e sessizce başarısız olma talimatı verirken, -F gönderilecek bir formu belirtir.
cURL’de proxy ayarlamak için komutlar
Terminali açın ve aşağıdaki komutu yazıp Enter tuşuna basın:
curl --help
Çıktı, seçeneklerden oluşan büyük bir liste olacaktır. Bunlardan biri şöyle görünecek:
-x, --proxy [protocol://]host[:port]
x’in küçük olduğuna ve büyük/küçük harfe duyarlı olduğuna dikkat edin. Proxy ayrıntıları -x veya -proxy anahtarı kullanılarak sağlanabilir. Her ikisi de aynı anlama gelir. Proxy ile curl komutlarının botu aynıdır:
curl -x "http://user:pwd@127.0.0.1:1234" "http://httpbin.org/ip"
veya
curl --proxy "http://user:pwd@127.0.0.1:1234" "http://httpbin.org/ip"
NOT SSL sertifika hataları varsa, curl komutuna -k (küçük k’ye dikkat edin) ekleyin. Bu, SSL kullanırken güvensiz sunucu bağlantılarına izin verecektir.
curl --proxy "http://user:pwd@127.0.0.1:1234" "http://httpbin.org/ip" -k
You may have noticed that both the proxy url and target url are surrounded in double quotes. This is a recommended practice to handle special characters in the url.
Another interesting thing to note here is that the default proxy protocol is http. Thus, following two commands will do exactly the same:
curl –proxy “http://user:pwd@127.0.0.1:1234” “http://httpbin.org/ip”
curl –proxy “user:pwd@127.0.0.1:1234” “http://httpbin.org/ip”
Bu komutları çalıştırdığınızda, çalıştırdığınız herhangi bir cURL komutu proxy sunucu aracılığıyla otomatik olarak yürütülür.
SOCKS proxy ile cURL kullanımı
curl -x "socks5://user:pwd@127.0.0.1:1234" "http://httpbin.org/ip"
Benzer şekilde, socks sürümüne bağlı olarak socks4://, socks4a://, socks5:// veya socks5h:// kullanılabilir.
İsteğe göre alternatif olarak, curl socks proxy -x yerine -socks5 anahtarı kullanılarak da ayarlanabilir. Aynı komutu takip edebilir, ancak farklı bir anahtar kullanabilirsiniz: kullanıcı adı ve parola -proxy-user anahtarı kullanılarak gönderilebilir.
cURL otomasyon için çok güçlü bir araçtır ve proxy desteği açısından tartışmasız en iyi komut satırı arayüzüdür. Son olarak, libcurl php ile çok iyi çalıştığı için, birçok web uygulaması onu web kazıma projeleri için kullanır ve bu da onu herhangi bir web kazıyıcı için sahip olunması gereken bir şey haline getirir.