In this Article
İster web scraping yapın ister API kullanın, mesele HTTP istekleri gönderip yanıt almaktır. İsteğiniz ne kadar ayrıntılıysa, elde ettiğiniz veriler de o kadar kesin olur. Bu nedenle header’lara ihtiyacınız vardır. İki nokta üst üste ile ayrılan anahtar-değer çiftleri olarak gelirler ve içerik türü ya da önbellekleme talimatları gibi ek ayrıntılar taşıyan bir HTTP yanıtının parçalarıdır. Header’lar, ihtiyacınız olan ayrıntıları almanıza veya yanıtları filtreleyerek gereksiz olanları hiç görmemenize yardımcı olur. Bu makalede, cURL ile HTTP header gönderiminin pratik temellerini ve bunun görevlerinizde size nasıl yardımcı olabileceğini öğreneceğiz.
Neden cURL?
HTTP header’ların ne olduğunu artık bildiğinize göre, cURL’ü kısaca ele alalım. Verileri hedef sunucuya ve oradan bilgisayarınıza aktarmak için kullanılan, komut satırında çalışan ve kullanımı kolay bir araçtır; bu da onu header göndermek için çok uygun hâle getirir. Avantajları şunlardır:
- Hafiftir
- HTTP(S), SMTP, FTP ve daha fazlası dâhil birçok protokolü destekler
- Ek kütüphane gerektirmez
- Windows, Linux ve macOS gibi en yaygın kullanılan işletim sistemleriyle uyumludur
- Kullanımı ücretsizdir ve çoğu zaman önceden yüklü gelir
- Ayrıntılı dokümantasyona ve geniş bir kullanıcı topluluğuna sahiptir; bu yüzden zorluk yaşarsanız hızla bir çözüm bulabilirsiniz.
Bu nedenle, HTTP header göndermeyi sağlayan çok sayıda başka araç olsa da cURL bu kadar yaygın kullanılır.
HTTP header’ları ne zaman göndermelisiniz
Tüm araçlara aşina olduğunuza göre, HTTP header göndermenin kullanım alanlarını inceleyelim.
- Kimlik doğrulama ve yetkilendirme
Bir API’yi çağırdığınızda veya yetkilendirme gerektiren bir içerik istediğinizde, veri almak için bir token ya da benzeri bir bilgi sağlamanız gerekebilir. Authorization header’ını cURL ile göndermek, sunucunun size erişim vermesi için gereken bilgiyi sağlar. İsteğinizde -H seçeneğini kullanmanız gerekir. Aşağıda, özel bir istek ve yanıt hizmeti olan httpbin.org’a yönelik cURL isteği örneğini görebilirsiniz.
- İçerik uzlaşması
JSON veya XML gibi belirli bir biçimde içerik gönderdiğinizde ve sunucunun bunu doğru yorumlamasına ihtiyaç duyduğunuzda, isteğinize Content-type HTTP header’ını eklemeniz gerekir. Hedef sunucu, hata veya gecikme olasılığını en aza indirmek için içeriği nasıl işleyeceğini bilir.
- CORS (Çapraz kaynak paylaşımı)
Uygulama, hizmetlere veya verilere erişimi bunları almaya çalışan kişiye göre verebilir. Bir isteğin kaynağının kritik rol oynadığı bu tür durumlarda, kaynağı bir Origin HTTP header’ında belirtebilirsiniz. Bunu kimlik doğrulamayla karıştırmayın; bu kullanım alanları benzerdir ve sıkça birlikte görülür. Yine de farklıdırlar.
- user-agent belirtme
İstemci türü, ister mobil ya da web uygulaması ister API olsun, aldığınız yanıtı da etkiler. İsteğinizde istemci türünü tanımlayarak gerekli yanıtı alabilirsiniz.
- Önbellek denetimi ayarlarını düzenleme
Önbellek ayarlarını yönetmek birçok durumda zorunludur ve HTTP header’lar bu konuda size yardımcı olabilir. İsteğinize yalnızca bir Cache-control header’ı ekleyip değerini belirtmeniz yeterlidir. Yanıtlar, tanımladığınız ayarlara göre önbelleğe alınır.
- Özel istekler gönderme
Bazen kullandığınız uygulamalar, isteğinizi işlemek veya istediğiniz eylemleri gerçekleştirmek için özel header’lar gerektirir. Bu durumda, bu tür header’ları isteklerinize eklemeniz gerekir. Bazen de güvenlik açıklarına ve saldırılara karşı korunmak için bu header’lar zorunludur. Hangi özel header’ların kullanılabilir ve gerekli olduğunu öğrenmek için uygulamayı kullanmadan önce dokümantasyonu okumalısınız.
- Koşullu istekler gönderme
Belirli koşullara uyan yalnızca belli verileri istiyorsanız koşullu header’ları kullanmalısınız. Bu header’lar yalnızca gerekli verileri alarak zaman kazandırır ve gereksiz bilgileri yüklemek için GB’lar harcamadığınızdan bant genişliğinden tasarruf sağlar. If-Match or If-Modified-Since bu tür header’lara örnektir.
cURL: diğer özellikler
- Birden fazla header nasıl gönderilir
Bazen aynı istek için birden fazla header göndermeniz gerekebilir. Böyle bir durumda, aynı cURL komutunu kullanarak hepsini listeleyebilirsiniz. Her yeni anahtar-değer çifti girdiğinizde –H seçeneğini kullanmayı unutmayın.
- Yanıt header’ları nasıl kontrol edilir
Hedef sunucudan gelen yanıt header’larını görmek, sorun giderme ve performans izleme açısından yararlıdır. İsteğinizin işlenmesinin ne kadar sürdüğü veya herhangi bir kimlik doğrulama sorunu olup olmadığı hakkında bilgi sağlarlar. Bunları -I veya –head seçeneğiyle görebilirsiniz. Her ikisi de size yalnızca header’ları gösterir.
Hem header’ları hem içeriği görmek istiyorsanız -i or –include seçeneklerini kullanın.
- Boş header’lar nasıl gönderilir
Bazı API’ler, bu header’ların değeri olmasa bile istekte belirli header’lar gerektirir. Bazen boş header’lar, header’ın belirli bir şekilde davranmasını sağlar. Geliştiriciler ayrıca sunucunun böyle bir duruma nasıl tepki verdiğini görmek ve bilgisayar korsanlarının yararlanabileceği açıklar olmadığını kontrol etmek için bunları kullanır. Böyle bir header göndermek için adını, değersiz bir noktalı virgül izleyerek yazın.
- Bir header nasıl kaldırılır
cURL, User-Agent header’ı gibi bazı header’ları varsayılan olarak ekler. Buna ihtiyacınız yoksa ve kaldırmak istiyorsanız, bir header adını iki nokta üst üste ile birlikte yazın ve herhangi bir değer belirtmeyin.
- Ayrıntılı mod nasıl etkinleştirilir
Bu özellik, sunucunun isteğinizle nasıl ilerlediğini anlamanız gerektiğinde kullanılır. Bu mod etkinleştirildiğinde cURL size istek ve yanıt ayrıntıları, HTTP yöntemi, sürüm, durum kodu, bağlantı sürecine ilişkin bilgiler ve diğerleri dâhil birçok ayrıntı sağlar. İletişimin her adımı hakkında bilgi verdiği için bu mod hata ayıklamada yararlıdır. Bunu -v veya –verbose seçeneği.
- Header’lar nasıl kaydedilir
Hata ayıklama ve performans izleme, analiz etmek ve kayıt tutmak için çoğu zaman header’ların kaydedilmesini gerektirir. Bu nedenle header’ları bir dosyaya kaydedip daha sonra kullanabilirsiniz. Bunun için:
- Şunu kullanın: -d veya –dump-header seçeneklerini kullanın.
- İsteğin içeriğini de kaydetmeniz gerekiyorsa şunu ekleyin: -o veya –output seçeneklerini kullanın.
- Komutlardan sonra, bilgisayarınızın header’ları kaydedeceği dosyanın adını belirtmeyi unutmayın.
Not: HTTP header’lar genellikle büyük/küçük harfe duyarlı değildir. Ancak bazen API’ler belirli header’lar bekler ve yalnızca büyük/küçük harf kullanımına uyarsanız çalışır. Bu nedenle header göndermeden önce dokümantasyonu dikkatle kontrol etmeniz gerekir.
cURL ile HTTP header göndermek için proxy’ler
Web scraping yaptığınızda veya çok sayıda istek göndermeyi gerektiren başka faaliyetler yürüttüğünüzde, istek sınırları ya da coğrafi tabanlı engeller gibi sorunlarla karşılaşabilirsiniz. Bu durumda proxy’ler, dünya genelinde istikrarlı erişim sağlamanıza yardımcı olan müttefiklerinizdir. Örneğin DataImpulse, etik olarak tedarik edilmiş proxy’ler sunar; bunları cURL dâhil diğer araçlarla entegre etmek ve kullanmak kolaydır. Böylece kısıtlamalara takılmadan ihtiyacınız kadar istek gönderebilirsiniz.
Özetle
Bazen veri almak için özel veya pahalı araçlara ihtiyacınız olmaz. cURL ücretsizdir ve bilgileri hızlı, gereksiz ayrıntılar olmadan almanız için isteklerinizi belirlemenize olanak tanır. Süreci daha da etkili hâle getirmek için cURL’ü DataImpulse proxy’leriyle birleştirebilirsiniz. Kullandıkça öde fiyatlandırma modeliyle, bütçe dostu 1 saniyelik yanıt süreli proxy’ler sunuyoruz. Ekranın sağ üst köşesindeki “Hemen deneyin” düğmesine tıklayın veya şu adresten bizimle iletişime geçin: [email protected].














