Proxyleri test etmenize ve siteleri aynı anda kazımanıza olanak tanıyan bir araç arıyorsanız doğru yere geldiniz. cURL, proxyleri test etmenizi ve bazı temel web kazıma işlemlerini gerçekleştirmenizi sağlayan bir komut satırı aracıdır. Sezgisel ve öğrenmesi kolay olan cURL; diğer özelliklerinin yanı sıra istek gönderebilir, çerez ekleyebilir, hata ayıklayabilir ve proxylerle bağlantı kurabilir.
Bu adım adım kılavuzda cURL’ün ne olduğunu, çeşitli komutlarının nasıl kullanılacağını, hafif web kazıma için nasıl kullanılacağını ve cURL’ün proxy sunucularıyla nasıl kullanılacağını öğreneceksiniz. Kılavuz biraz karmaşık gelebilir; bu nedenle okumaya başlamadan önce proxy’nin ne olduğuna dair temel bir anlayışa sahip olduğunuzdan emin olun. Web kazımanın temellerini bilmeniz de faydalı olacaktır.
İçindekiler
- cURL nedir?
- cURL nasıl kurulur?
- cURL nasıl kullanılır?
- cURL proxy sunucularıyla nasıl kullanılır?
- 7 önemli ipucu ve püf noktası
- cURL ve Wget karşılaştırması
- Sonuç
cURL nedir?
“Client URL” ifadesinin kısaltması olan cURL, internet üzerinden veri aktarımını kolaylaştıran bir komut satırı aracıdır. Komut satırı curl.exe’yi ve sunucular arasında veri alışverişini sağlayan libcurl adlı platformlar arası bir kitaplığı içerir.
İnternet protokollerini kullanan çeşitli modern işletim sistemleriyle uyumlu olan cURL, dizüstü bilgisayarlardan otomobillere kadar çeşitli cihazlarda çalışır. Aşağıdakiler gibi çok sayıda internet protokolünü destekler:
- DICT
- FILE
- FTP
- FTPS
- GOPHER
- HTTP
- HTTPS
- IMAP
- IMAPS
- LDAP
- LDAPS
- MQTT
- POP3
- POP3S
- RTSP
- SCP
- SFTP
- SMB
- SMBS
- SMTP
- SMTPS
- TELNET
- TFTP
Geniş bir topluluk, açık kaynaklı bir Linux yazılımı performans test aracı olan curl-loader da dahil olmak üzere cURL için çeşitli araçlar geliştirmiştir. Curl-loader, çok sayıda FTP/FTPS ve HTTP/HTTPS istemcisinin uygulama davranışlarını taklit edebilir. Tek bir curl-loader işlemi, her biri benzersiz bir kaynak IP adresine sahip 2.500 ila 100.000 sanal istemciyi destekleyebilir.
cURL’ün Kökenleri
cURL’ün geçmişi, komut satırı araçlarının yaygın olduğu 1990’lara uzanır. 1996 yılında İsveçli geliştirici Daniel Stenberg, sohbet katılımcıları için para birimlerini dönüştüren bir internet aktarmalı sohbet (IRC) odası betiği üzerinde çalışmaya başladı. Bu, onu sunucular üzerinden veri aktarmak için kullanılan popüler bir HTTP yöntemi olan httpget adlı araca katkıda bulunmaya yöneltti. Stenberg’in denemeleri, “tek bir C dosyasında 300’den az satırdan” oluşan httpget 0.1 ile sonuçlandı.
Birkaç ay sonra dosya aktarım protokolleri (FTP) ortaya çıktı ve Stenberg, aracına FTP desteği ekleyerek adını urlget 2.0 olarak değiştirdi. 30 Mart 1998’de FTP yükleme desteği ekledi ve aracın adını bir kez daha cURL 3.0 olarak değiştirdi.
cURL büyük bir potansiyele sahip olsa da başlangıçta pek ilgi görmedi. 1998’de, 15 güncelleme ve yeniden yayımlamanın ardından cURL, Stenberg’in sitesinden 300’den fazla kez indirilmişti. Aynı yılın ilerleyen dönemlerinde Red Hat Linux cURL’ü benimsedi; 1999’da Debian, Ağustos 2001’de ise Mac OS X 10.1 onu izledi. 2001’den bu yana cURL; Windows 10, iOS ve Android cihazları, Sony PS5, Nintendo Switch, Xbox ve hatta otomobiller dahil olmak üzere internete bağlanabilen neredeyse tüm yazılımlarda varsayılan bir özellik haline geldi.
cURL neden kullanılır?
cURL, karmaşık işlemleri etkili bir şekilde gerçekleştirebilmesi nedeniyle geliştiriciler arasında popüler bir tercihtir. Çok yönlülüğü, betiklenebilirliği ve içerdiği kitaplık, özel HTTP ayrıştırma ve ağ kodu yazmaya gerek kalmadan diğer programlarla sorunsuz biçimde bütünleşmesini sağlar.
cURL aşağıdakiler gibi çok sayıda avantaj sunar:
- Uç nokta testi ve hata ayıklama olanakları
- Gönderilen ve alınan verilere ilişkin ayrıntılı bilgiler
- Kapsamlı hata günlükleri
- Geniş bir protokol yelpazesi desteği
- http2, Metalink, gzip, otomatik açma ve Content-Encoding ile uyumluluk
- FTP yükleme, çerezler, kullanıcı kimlik doğrulaması, proxy desteği, SSL bağlantıları ve daha fazlası gibi gelişmiş özellikler
- Varsayılan protokol başarısız olursa protokolü otomatik olarak değiştirme
- Protokole bağlı URL sözdizimi
- Hız sınırlama işlevi
- Parantez kullanarak URL bölümlerini veya birden fazla URL’yi belirtme olanağı (ör. https://google.{one, two, three}.com)
- Komut satırı üzerinden istenen sayıda URL belirtme seçeneği
Ayrıca geliştiriciler, cURL’ün varsayılan SSL sertifikası doğrulamasını ve HTTPS desteğini takdir eder. cURL, HTTPS üzerinden bir sunucuya bağlandığında sunucunun sertifikasını alır ve bunu CA sertifikasıyla karşılaştırarak uzak sunucunun gerçekliğini doğrular.
cURL Nasıl Kurulur
Bilgisayarınıza cURL'ü nasıl kuracağınızı inceleyelim.
macOS
cURL macOS'a zaten işletim sisteminin bir parçası olarak dahil olduğundan kurmanız gerekmez. Terminal uygulamasında yerel olarak kullanabilirsiniz.
Windows
Windows 10'dan itibaren işletim sistemi cURL'ün bir kopyasını içerir. Ancak cURL komutu, PowerShell Invoke-WebRequest komutunun takma adı olarak işlev görür. Sonuç olarak, Windows terminalinde cURL komutlarını çalıştırmak arka planda Invoke-Request'i başlatır. Bunun yerine cURL kullanmak için ‘curl’ yerine ‘curl.exe’ yazın; PowerShell, Invoke-Request yerine cURL'ü çalıştıracaktır.
Örneğin, Windows makinenizde yüklü olan cURL'ün mevcut sürümünü kontrol etmek için terminale şu komutu girin:
curl.exe --versionÇıktı şu şekilde olmalıdır:
curl 7.83.1 (Windows) libcurl/7.83.1 Schannel Release-Date: 2022-05-13 Protocols: dict file ftp ftps http https imap imaps pop3 pop3s smtp smtps telnet tftp Features: AsynchDNS HSTS IPv6 Kerberos Largefile NTLM SPNEGO SSL SSPI UnixSocketscURL ve Windows hakkında daha fazla bilgi edinmek isterseniz bu videoyu izlemenizi öneririz. cURL'ün ne olduğunu, Windows'ta nasıl çalıştırılacağını ve cURL ile GET, POST, PUT, DELETE API isteklerinin nasıl gönderileceğini öğreneceksiniz.
Linux
Linux kullanıcıları için cURL'ü kurma süreci, kullandığınız dağıtıma göre değişir. Ubuntu ve Fedora gibi popüler dağıtımlarda cURL önceden yüklü olarak gelir ve terminalde doğrudan kullanabilirsiniz.
cURL'ü varsayılan olarak içermeyen dağıtımlarda, dağıtımınızın paket yöneticisini kullanarak kurabilirsiniz. Örneğin, Debian tabanlı işletim sistemlerinde cURL'ü kurmak için şu komutu kullanın:
sudo apt-get install curlcURL Nasıl Kullanılır
cURL'ün cihazınızda yüklü olduğundan emin olun. cURL'ü kullanmadan önce sisteminizde yüklü olduğunu doğrulayın. Yüklü değilse cURL web sitesinden indirin.
A. cURL'ün cihazınıza yüklü olduğunu doğrulayın
cURL'ün sisteminizde yüklü olup olmadığını kontrol etmek için şu adımları izleyin:
- Windows PC veya MacBook'ta komut satırı arayüzünü ya da PowerShell terminalini açın.
'curl --version'yazın- Enter tuşuna basın.
cURL cihazınızda yüklüyse buna benzer bir mesaj alırsınız:
curl --version curl 7.55.1 (Windows) libcurl/7.55.1 WinSSL Release-Date: 2017-11-14, security patched: 2020-11-05 Protocols: dict file ftp ftps http https imap imaps pop3 pop3s smtp smtps telnet tftp Features: AsynchDNS IPv6 Largefile SSPI Kerberos SPNEGO NTLM SSLVEYA
curl --version curl 7.31.0 (x86_64-apple-darwin12.4.0) libcurl/7.31.0 OpenSSL/0.9.8x zlib/1.2.5 Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtsp smtp smtps telnet tftp Features: IPv6 Largefile NTLM NTLM_WB SSL libzFarklı bir mesaj görürseniz, cURL cihazınızda yüklü değildir ve yüklemeniz gerekir.
B. Kullanılacak uygun cURL söz dizimini belirleyin
Varsayılan olarak cURL, HTTP protokolünü şu söz dizimiyle kullanır: cURL [options] [URL]
cURL birden çok protokolü desteklediğinden söz dizimi her birinde biraz farklı olabilir. Farklı ağ protokolleri için bazı cURL komutu örnekleri şunlardır:
- Dosya Aktarım Protokolü (FTP): cURL -T “selected file” “ftp://[target-destination]”
- Basit Posta Aktarım Protokolü (SMTP): cURL smtp://[smtp-server] –mail-from [sender] –mail-rcpt [recipient] –upload-file [mail-content-file]
- Sözlük Ağ Protokolü [DICT]: cURL “dict://dict.org/d:hi”
cURL deneyiminizi iyileştirmek için hangi ağ protokolleriyle çalışacağınızı bilmeniz önemlidir.
C. Hedeflerinize uygun cURL söz dizimini kullanın
cURL; dosya indirme ve yükleme ya da kullanıcı kimlik doğrulamasını işleme gibi çeşitli görevleri gerçekleştirmenizi sağlar. Her görev, özellikle kullanılan belirli parametreler ve ağ protokolleri nedeniyle farklı bir cURL söz dizimi gerektirir.
Yaygın görevlerden bazıları ve bunlara karşılık gelen cURL komutları şunlardır:
- Dosya indirmek için: curl -o [file name] [URL]
- FTP protokolünü kullanarak dosya yüklemek için: curl -u [Username:Password] -T [local-file-path] ftp://[URL]
- HTTP üst bilgilerini istemek için: curl -I [URL]
Hafif Veri Kazıma İçin cURL Nasıl Kullanılır
cURL, PHP gibi bir programlama diliyle birlikte hafif web veri kazıma işlemleri için kullanılabilir.
Veri kazımaya başlamadan önce hedef web sitesinin robots.txt dosyasını inceleyin. Mantıksız görünseler bile kurallara uyun; web sitesi sahiplerinin parametreleri ve kısıtlamaları belirleme hakkı vardır. Web taraması sırasında robots.txt dosyasına uymak standart uygulama olarak kabul edilir ve kurallara uymamak yasal sorunlara yol açabilir.
Bunu göz önünde bulundurarak, cURL ile hafif web veri kazıma işlemlerinin nasıl yapılacağına ilişkin bir kılavuzu burada bulabilirsiniz.
Veri kazımaya başlamak için şu adımları izleyin:
- Veri kazıma için PHP gibi bir programlama dili seçin. Bu eğitimde PHP kullanılacaktır.
- Yeni bir PHP dosyası oluşturun.
- curl_init kullanarak cURL tanıtıcısını başlatın.
$curl = curl_init - Aktarım sayfasını dize olarak döndüren CURLOPT_RETURNTRANSFER değerini TRUE olarak ayarlayın. Bu komut, cURL'e kazınan sayfayı varsayılan olarak sayfanın tamamını görüntülemek yerine bir değişken olarak saklamasını söyler: curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
- İsteği başlatın ve hata kontrolü yapın:
$page = curl_exec($curl);if(curl_errno($curl)) // check for execution errors { echo 'Scraper error: ' . curl_error($curl); exit; } - Bağlantıyı kapatın:
curl_close($curl);
Bilgilerin yalnızca belirli bir bölümünü çıkarmak için id=”case_textlist” altında neyi çıkarmak istediğinizi belirtmeniz gerekir. Varsayılan olarak cURL sayfanın tamamını çıkarır:
$regex = '<div id="case_textlist">(.*?)</div>/s'; if (preg_match($regex, $page, $list)) echo $list[0]; else echo "Not found";PHP'de bir web sitesini proxy sunucusu kullanarak ayrıştırmak için cURL kitaplığını kullanabilirsiniz. Aşağıda, proxy sunucusu kullanarak bir web sayfasını getiren örnek bir PHP betiği verilmiştir:
PHP kodu:
<?php // Set the URL to fetch $url = "http://www.example.com"; // Set the proxy server and port $proxy = "proxy.example.com:8080"; // Create a new cURL resource $ch = curl_init(); // Set the cURL options curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_PROXY, $proxy); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Fetch the URL and output the response $response = curl_exec($ch); echo $response; // Close the cURL resource curl_close($ch); ?>Yukarıdaki betikte, $url değişkenini ayrıştırmak istediğiniz web sitesinin URL'siyle, $proxy değişkenini ise kullanmak istediğiniz proxy sunucusunun adresi ve bağlantı noktasıyla değiştirebilirsiniz. curl_setopt() işlevi, URL, proxy sunucusu ve yanıtı doğrudan çıktı olarak vermek yerine dize olarak döndürme dahil olmak üzere cURL seçeneklerini ayarlamak için kullanılır. Son olarak curl_exec() işlevi URL'yi getirmek için kullanılır ve yanıt echo ile çıktı olarak verilir. cURL kaynağını kapatmak için curl_close() işlevi çağrılır.
Aşağıdaki videoda, cURL ile web sitesinin URL'lerini yükleyip düzenli ifadelerle eşleştirerek proxy kazıyıcının nasıl oluşturulacağını öğreneceksiniz.
Gelişmiş Veri Kazıma İçin cURL Nasıl Kullanılır
Web veri kazıma oturumlarınızı iyileştirmenize yardımcı olabilecek bazı geliştirilmiş cURL yapılandırmaları aşağıda verilmiştir.
Alt başlık: Kullanıcı Aracısı Ekleme
cURL'ü bağlantıları indirmek veya kazımak için kullandığınızda, web sitesine kendisini cURL olarak tanıtır. Bazı durumlarda bunu istemeyebilirsiniz; çünkü belirli web siteleri cURL'ü bir bot olarak algılayıp engelleyebilir.
Bunu aşmak için -A veya –user-agent seçeneğini kullanarak bir kullanıcı aracısı ekleyin. Bu örnekte Windows 10'da Firefox 65 kullanıcı aracısı kullandık:
curl -x https://fineproxy.de/ -v -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0"Alternatif olarak, -H seçeneğini kullanarak kullanıcı aracısını üst bilgi içinde gönderebilirsiniz:
curl -x https://fineproxy.de/ -v -H "User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:65.0) Gecko/20100101 Firefox/65.0"Alt başlık: Üst Bilgileri Yapılandırma
Bir web sitesinden veri kazırken bot olarak algılanmamaya dikkat etmek önemlidir. Birçok web sitesi, sunucuya aşırı yük bindirip insan kullanıcılar için hizmeti aksatabileceklerinden botların verilerini çıkarmasını artık engelliyor.
Bunu yapmak için cURL ile uygun üst bilgileri göndermeniz gerekir.
Öncelikle sağ tıklayıp “İncele”yi seçerek hedef web sitesine genellikle gönderdiğiniz üst bilgileri belirleyin. Ardından “Ağ” sekmesine gidin. Hedef siteyi yenileyin; sitenin yüklenmesi sırasında yapılan istekleri göreceksiniz. İsteği daha yakından incelemek için üzerine sağ tıklayıp cURL komut satırı olarak da kopyalayabilirsiniz.
Ardından -H veya –header seçeneğini kullanarak cURL'de üst bilgileri yapılandırın. Örneğin, hedef siteye “Accept” üst bilgisini şu şekilde gönderebilirsiniz:
curl -x https://fineproxy.de/ -v -H "Accept: text/html"Proxy Sunucularıyla cURL Nasıl Kullanılır
cURL'ü proxy ile kullanmak, web kazıma gibi çeşitli kullanım alanları sağlar; bu tür durumlarda site yasaklarını ve engellemelerini önlemek için proxy gereklidir. Bu kılavuzda, cURL kullanarak bir proxy sunucusu üzerinden nasıl veri göndereceğinizi öğreneceksiniz.
cURL'ü Proxy ile kullanmak için şu adımları izleyin:
1. Proxy Sunucusunu Kurun
Öncelikle, proxy sağlayıcınızın verdiği talimatlara göre proxy'nizi kurun. Proxy'nizin doğru şekilde kurulduğunu doğrulamak için terminalinize aşağıdaki komutu girin:
curl https://httpbin.org/ipBu komut, cihazınızın IP adresini döndürür. Değerler cihazınızın orijinal IP adresiyle eşleşiyorsa proxy sunucunuz doğru şekilde kurulmamıştır. Eşleşmiyorsa proxy sunucunuz doğru şekilde yapılandırılmıştır.
2. Proxy'nizi cURL Komutlarıyla Çalışacak Şekilde Yapılandırın
Proxy'nizi cURL ile kullanmak üzere yapılandırmanın üç yolu vardır:
A. Yapılandırma dosyası kullanma (.curlrc)
Yapılandırma dosyası, istediğiniz ayarları içeren ve cURL komutlarını çalıştırırken kolayca erişebilmeniz için sistem dizininizde .curlrc dosya biçiminde kaydedilen bir metin dosyasıdır.
Proxy yapılandırma dosyası şu biçimde veriler içerir:
proxy = "[protocol://][host][:port]"Dosyaya birden fazla yapılandırma ayarı kaydedebilir ve bunları gerektiğinde etkinleştirebilirsiniz. cURL komutlarını çalıştırmadan önce dosyayı açın; çalıştıracağınız tüm cURL komutları yapılandırma dosyasındaki proxy ayarlarını kullanacaktır.
Yapılandırma dosyası oluşturmak, cURL'ü proxy ile tekrar tekrar kullanan ve büyük miktarda veri çıkaranlar için en iyi yöntemdir. Her seferinde cURL için proxy'yi yapılandırma gereğini ortadan kaldırarak zaman kazandırır.
B. Komut satırı bağımsız değişkenlerini kullanma
Bu yöntem, cURL komutlarıyla proxy'yi tek seferlik kullanmak için uygundur; çünkü yalnızca doğrudan cURL proxy söz dizimini gerektirir. Söz dizimi şöyledir:
curl -x "[protocol://][host][:port]" [URL] [options]cURL'ün varsayılan protokolü HTTP olduğundan, özellikle farklı bir ağ protokolü kullanıyorsanız protokolü ve proxy sunucusu ayrıntılarını belirtmeniz gerekir.
C. Ortam değişkenlerini kullanma
Üçüncü yöntem, sistem düzeyinde çalışan süreçleri etkileyen ortam değişkenleri olarak bilinen http_proxy ve https_proxy değişkenlerini ayarlamayı içerir. Bu komutlar işletim sisteminin bir parçasıdır ve diğer parametreleri geçersiz kılabilir.
Ortam değişkenleri üzerinden cURL proxy ayarlarının söz dizimi şöyledir:
export http_proxy="[protocol://][host][:port]" export https_proxy="[protocol://][host][:port]"Bu komutları çalıştırdıktan sonra, çalıştıracağınız tüm cURL komutları otomatik olarak proxy sunucusu üzerinden yönlendirilir. Şimdi bu yöntemden biraz daha ayrıntılı olarak bahsedelim.
Ortam Değişkenleri Üzerinden cURL'ü Proxy ile Kullanma
Ortam değişkeni, bellekte düzenlenebilir bir değer saklayan ve bir veya daha fazla yazılım programı tarafından kullanılabilen bir nesne gibidir. Bu durumda, proxy bilgilerimizi içeren http_proxy veya https_proxy adlı bir değişkeni cURL'e aktarabiliriz; böylece komutu her çalıştırdığımızda bunu belirtmemiz gerekmez. Bunu şu komutu çalıştırarak yapabilirsiniz:
$ export http_proxy="http://fineproxy.proxy_type=datacenter.device=desktop:<YOUR-API-KEY>@proxy.fineproxy.de:80"cURL'ün değişkeninizi anlayabilmesi için değişkeninize http_proxy veya https_proxy adını vermeniz gerektiğini lütfen unutmayın. Hepsi bu kadar. Komutu her çalıştırdığınızda kimlik bilgilerinizi girmeniz gerekmez; artık cURL'ü şu kadar basit bir komutla çalıştırabilirsiniz:
$ curl http://httpbin.org/getBu komut aşağıdaki çıktıyı verir:
{ "args": {}, "headers": { "Accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,/;q=0.8", "Accept-Encoding": "gzip, deflate, br", "Host": "httpbin.org", "Upgrade-Insecure-Requests": "1", "User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/87.0.4280.88 Safari/537.36", "X-Amzn-Trace-Id": "Root=1-633bf912-66ace1104304ddaf5ea8ac65" }, "origin": "132.255.134.104", "url": " http://httpbin.org/get" }Gördüğünüz gibi IP adresi proxy'ye aittir; bu da proxy'nizi kurarken harika bir iş çıkardığınızı doğrular. Bu noktada, cURL proxy bilgilerini bizim için kullanacağından, proxy bilgilerini belirtmeden herhangi bir cURL komutunu çalıştırabiliriz.
7 Önemli Püf Noktası ve İpucu
Bu bölümde, ihtiyaçlarınıza özel olarak cUrl ile proxy kullanmaya yönelik bazı ilgi çekici püf noktalarını ve paha biçilmez ipuçlarını sunacağız.
İpucu 1: Proxy'leri Yalnızca cUrl İçin Ayarlama
Proxy'leri yalnızca cUrl tabanlı görevler için belirlemek üzere aşağıdaki komut dizisini kullanın:
cd ~ $ nano .curlrc- Dosyaya şu satırı ekleyin:
proxy=http://user:pwd@IP_address_or_FQDN:portÖrnek:
proxy=http://testuser:[email protected]:3128- cUrl'ü her zamanki gibi çalıştırın:
$ curl " https://www.reddit.com"İpucu 2: Proxy'leri Etkinleştirme ve Devre Dışı Bırakma
Bunu yapmak için düzenleyicinizde .bashrc dosyanızda bir takma ad oluşturun:
$ cd ~alias proxyon="export http_proxy=' http://user:pwd@Proxy_IP_or_FQDN:Port';export https_proxy=' http://user:pwd@Proxy_IP_or_FQDN:Port'"alias proxyoff="unset http_proxy;unset https_proxy"Örnek:
alias proxyon="export http_proxy=' http://testuser:[email protected]:3128';export https_proxy=' http://testuser:[email protected]:3128'"Terminalde alias komutunu çalıştırarak takma ad ayarını hızlıca kontrol edin. .bashrc dosyasını kaydedin ve kabuğu şu komutla güncelleyin:
$ ~/.bashrcİpucu 3: SSL Sertifika Hatalarını Atlatma
cUrl SSL sertifika hatalarıyla karşılaştığında bu istekleri engeller. Hata ayıklama amacıyla, özellikle tek seferlik durumlarda, SSL sertifika hatalarını ‘atlamak’ için cUrl komut satırına -k veya –insecure ekleyin:
curl -x "[protocol://][host][:port]" -k [URL]İpucu 4: İstek Hakkında Daha Fazla Bilgi Edinme
İstekleriniz beklediğiniz gibi çalışmıyorsa istek yolunu, başlıkları ve çeşitli hataları incelemek isteyebilirsiniz. İsteği incelemek için cUrl'den sonra isteğe -v (–verbose) ekleyin; bu, istek başlıklarının ve karşılaşılan bağlantıların tümünü gösterir.
İpucu 5: Tek Bir İstek İçin Proxy'leri Yoksayma
Belirli bir istek için proxy'yi geçersiz kılmak üzere aşağıdaki komut satırını kullanın:
curl --proxy " http://user:pwd@Proxy_FQDN_or_IPAddress" " https://reddit.com"Ya da şunu kullanın:
$ curl --noproxy "*" https://www.reddit.comProxy'leri tamamen atlatmak için. -v seçeneğiyle, herhangi bir proxy kullanmadan doğrudan Reddit'e bağlanıldığını gösterir.
İpucu 6: SOCK Proxy'lerini Kullanma
Herhangi bir SOCK proxy türünü (4/4a/5/5h) kullanmak istiyorsanız, ilgili bölümü uygun SOCKS türüyle değiştirmek dışında kod yapısı öncekiyle aynı kalır:
curl -x "socks5://user:pwd@Proxy_IP_or_FQDN:Port" https://www.reddit.comÖrnek:
$ curl -x "socks5://testuser: [email protected]:3128" https://www.reddit.comUzman İpucu 7: Protokol belirtilmezse cURL varsayılan olarak SOCKS4 kullanır!
Curl ve Wget
Wget, HTTP, HTTPS ve FTP gibi standart ağ protokollerini kullanarak dosya aktarımı yapmayı sağlayan çok sayıda özelliğe sahip bir komut satırı aracıdır. Adı, Wget’in öncelikle web verilerinin alışverişi için oluşturulduğunu ifade eden WWW’nin ilk harfi ile ‘get’ sözcüğünün birleşiminden oluşur.
Wget komutlarının standart sözdizimi şöyledir:
Wget [option] [URL]Wget komutları cURL komutlarına benzer ve farklı şekillerde de olsa benzer işlevleri yerine getirir.
cURL ve Wget Arasındaki 5 Benzerlik
- Her ikisi de FTP ve HTTP veya HTTPS üzerinden dosya indirebilen ve HTTP POST isteklerini destekleyen komut satırı yardımcı programlarıdır.
- Her ikisi de açık kaynaklı yazılımdır.
- Hem cURL hem de Wget 1996’da, aynı yıl kullanıma sunulmuştur.
- Her ikisinin de benzer lisansları, GPLv3 lisansı vardır.
- Her ikisi de çeşitli işletim sistemlerinde çalışan hafif yazılım paketleridir.
cURL ve Wget Arasındaki 10 Fark
cURL ile Wget arasındaki temel fark, bu yardımcı programların istekleri gerçekleştirme biçimlerinde ve hedeflerine ulaşmak için kullandıkları kaynaklarda yatar. Aşağıdaki tablo bu farkları vurgulamaktadır:
| cURL | Wget | |
|---|---|---|
| 1. Kitaplık | libcURL kitaplığı tarafından desteklenir | Kitaplık gerekmez |
| 2. İşlemler | Verileri tek bir işlemde aktarır, özyinelemeli indirme yapmaz | Özyinelemeli indirmeyi destekler |
| 3. Protokoller | Çeşitli ağ protokollerini destekler | Yalnızca HTTP(S) ve FTP’yi destekler |
| 4. İndirme | Uzak bir URL’yi yerel bir dosyaya indirmek için -o veya -O gerektirir | Uzak bir URL’yi indirmek için -o veya -O gerekmez |
| 5. Yüklemeler | Her iki yönde de veri yükleyip aktarabilir | Yalnızca basit HTTP POST isteklerini destekler |
| 6. Proxy | HTTPS, SOCKS 4 ve SOCKS 5 proxy türlerini destekler | HTTP proxy’yi destekler, ancak SOCKS proxy türlerini desteklemez |
| 7. Kimlik doğrulama | HTTP proxy’ler için ek kimlik doğrulama tekniklerini destekler | HTTP proxy’ler için yalnızca temel kimlik doğrulama süreçlerini destekler |
| 8. Taşınabilirlik | Daha taşınabilirdir ve Windows ile macOS’ta önceden yüklenmiş olarak gelir | Daha az taşınabilirdir ve Windows ile macOS’ta önceden yüklenmiş olarak gelmez |
| 9. Özellikler | Her özelliğin doğrudan belirtilmesini gerektirir | Çerezler ve zaman damgaları gibi özellikler varsayılan olarak etkindir |
| 10. Gereksinimler | gnulib paketi veya C99 derleyicisi gerektirmez | gnulib ve C99 derleyicisi gerektirir cURL veya Wget Ne Zaman Kullanılmalı |
Çoğu durumda cURL en iyi seçenektir, ancak Wget’in daha uygun olduğu durumlar da vardır. Görevlerinizi daha hızlı ve etkili biçimde tamamlamanıza hangi komut satırı yardımcı programının yardımcı olacağını belirlemelisiniz. Örneğin:
- Wget, sorunlu bağlantılarda indirme denemelerini yeniden gerçekleştirme konusunda cURL’den daha başarılıdır.
- Wget, cURL’de bulunmayan, belirli ölçütlere göre özyinelemeli indirme ve bant genişliği denetimi gibi indirme özellikleri sunar.
Bu nedenle, bu tür durumlarda Wget komutlarını kullanmak en iyisidir. Ayrıca HTTP/HTTPS ve FTP dışında bir ağ protokolü kullanıldığında cURL daha iyi bir seçenektir. cURL veya Wget kullanma tercihiniz her zaman gerçekleştirdiğiniz görevlerin özelliklerine bağlı olacaktır.
Sonuç
cURL komutları, ağ üzerinden büyük miktarda veri aktarması gereken herkes için güçlü ve çok yönlü araçlardır. cURL’leri proxy’lerle kullanmak, neredeyse her türlü görevi yerine getirmenizi sağlayan arzu edilir bir yükseltmedir. Bu birleşim, cURL komutlarının çok yönlülüğünden ödün vermeden veri gizliliği ve güvenliğini sağlar. Wget kapsamlı olsa da kullanıcı dostu arayüzü ve güçlü özellikleri nedeniyle cURL tercih edilir.
Şimdiye kadar konuştuklarımızdan yola çıkarak cURL’ün harika etkilerini denemeyi düşünüyor olabilirsiniz. Henüz düşünmediyseniz, düşünmelisiniz. cURL’lü kalın (kelime oyunu amaçlı).
