cURL İle Get İsteği Gönderme

Herkese merhaba, PHP yazılarımıza kaldığımız yerden devam ediyoruz. Bu yazımızda cURL ile GET isteği göndermeyi anlatacağım. Hadi başlayalım !
Table of Contents
CURL, PHP’de çok sayıda protokolü destekleyen bir kütüphanedir. Bu kütüphane ile URL’leri açabilir, dosyaları indirebilir veya yükleme işlemleri yapabilirsiniz. Bu makalede, CURL kullanarak GET isteği yapmak için PHP kod örnekleri paylaşacağım.
cURL Kurulumu
CURL kütüphanesi, PHP’nin bir parçasıdır ve kurulumu oldukça basittir. Eğer PHP’nin curl eklentisini henüz yüklemediyseniz, aşağıdaki adımları takip edebilirsiniz:
Linux Kurulumu
Öncelikle, php-curl paketini yüklemek için sistem yöneticinizin izni gerekebilir. Linux tabanlı bir işletim sistemi kullanıyorsanız, aşağıdaki komutu kullanabilirsiniz:
sudo apt-get install php-curl
Windows Kurulumu
Windows işletim sistemi kullanıyorsanız, PHP klasöründe php.ini dosyasını açın ve aşağıdaki satırı etkinleştirin:
extension=php_curl.dll
GET İsteği Gönderme
CURL’i kullanarak bir URL’yi açmak için aşağıdaki kodu kullanabilirsiniz:
$url = 'https://www.example.com';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
Bu kod, ‘https://www.example.com’ adresine bir GET isteği gönderir ve yanıtı alır. curl_init() fonksiyonu, URL’yi açmak için bir CURL örneği oluşturur. curl_setopt() fonksiyonu, CURL ayarlarını yapılandırır ve CURLOPT_RETURNTRANSFER özelliği, yanıtı döndürmesini sağlar. curl_exec() fonksiyonu, isteği gönderir ve yanıtı alır. Son olarak, curl_close() fonksiyonu, CURL örneğini serbest bırakır.
Parametre Gönderme
Bir sonraki örnekte, GET isteği sırasında birkaç parametre göndermek isteyebilirsiniz. Aşağıdaki kod, bir API’ye gönderilen bir GET isteği örneğidir:
$url = 'https://api.example.com/users';
$params = [
'limit' => 10,
'page' => 1,
];
$url .= '?' . http_build_query($params);
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
echo $response;
Bu kod, ‘https://api.example.com/users’ adresine bir GET isteği gönderir ve limit ve page parametrelerini de ekler. http_build_query() fonksiyonu, parametreleri bir sorgu dizgisine dönüştürür. Daha sonra, CURL örneği oluşturulur ve curl_setopt() fonksiyonu kullanılarak CURL ayarları yapılandırılır. Son olarak, istek gönderilir, yanıt alınır ve CURL örneği serbest bırakılır.
RESTful API’den JSON Alma
Bir URL’den JSON verileri almak için CURL kullanabilirsiniz. Aşağıdaki kod, bir RESTful API’den JSON verileri alır:
$url = 'https://api.example.com/users';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
curl_close($ch);
$data = json_decode($response, true);
print_r($data);
Bu kod, ‘https://api.example.com/users’ adresine bir GET isteği gönderir ve JSON yanıtını alır. json_decode() fonksiyonu, JSON verilerini PHP dizisine dönüştürür. Son olarak, veriler print_r() fonksiyonu ile ekrana yazdırılır.
Sertifika Doğrulaması Yapma
Örneğin, CURL ile GET isteği yaparken bazı özel ayarlar yapmak isteyebilirsiniz. Aşağıdaki kod, bir HTTPS bağlantısında sertifika doğrulaması yapar:
$url = 'https://www.example.com';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true);
curl_setopt($ch, CURLOPT_CAINFO, '/path/to/certificate.pem');
$response = curl_exec($ch);
curl_close($ch);
echo $response;
Bu kodda, CURLOPT_SSL_VERIFYPEER özelliği, sertifika doğrulamasını açar. CURLOPT_CAINFO özelliği, sertifika yolunu belirtir. Bu özellikler sayesinde, HTTPS bağlantısındaki güvenlik seviyesi artar.
CAPTCHA Çözme
Ayrıca, bazı web siteleri, erişimi kısıtlamak veya botları engellemek için CAPTCHA gibi güvenlik önlemleri kullanır. Bu durumda, CURL ile GET isteği yaparken, CAPTCHA çözmek için bazı özel ayarlar yapmanız gerekebilir. Aşağıdaki kod, bir CAPTCHA’yı çözmek için özel bir CURL ayarı yapar:
$url = 'https://www.example.com';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, '/path/to/cookies.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, '/path/to/cookies.txt');
curl_setopt($ch, CURLOPT_REFERER, 'https://www.google.com');
curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36');
$response = curl_exec($ch);
curl_close($ch);
echo $response;
Bu kodda, CURLOPT_COOKIEJAR ve CURLOPT_COOKIEFILE özellikleri, bir cookie dosyası oluşturur ve bu dosyada oturum bilgilerini saklar. CURLOPT_REFERER özelliği, isteğin nereden geldiğini belirtir. CURLOPT_USERAGENT özelliği, isteği gönderen kullanıcının tarayıcı bilgilerini belirtir. Bu özellikler, CAPTCHA’yı çözmek için gereklidir.
HTTP Başlıklarını Belirleme
Bu örnek, GET isteğinde HTTP başlıklarını belirler:
$url = 'https://www.example.com';
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, array(
'Accept: application/json',
'Authorization: Bearer <access_token>',
));
$response = curl_exec($ch);
curl_close($ch);
echo $response;
Bu kodda, curl_setopt() fonksiyonu, CURLOPT_HTTPHEADER özelliğini kullanarak HTTP başlıklarını belirler. Accept başlığı, istemci tarafından kabul edilebilir medya tiplerini belirler. Authorization başlığı, erişim anahtarını belirler.
Bu örnekler, CURL kullanarak GET isteği yapmanın birkaç farklı yolunu gösteriyor. Bu yöntemler, farklı senaryolarda kullanılabilir ve ihtiyacınıza göre ayarlanabilir.
Sonuç
Sonuç olarak, CURL ile GET isteği yapmak, PHP’de çok sayıda protokolü destekleyen bir kütüphane olduğu için oldukça kolaydır. Bu makalede paylaştığımız örnekler, farklı senaryolarda kullanabileceğiniz ve ihtiyacınıza göre ayarlayabileceğiniz farklı yöntemleri gösteriyor. CURL’i kullanarak GET isteği yapmak, web tabanlı uygulamalarınızda oldukça yararlı olabilir ve veri kazıma, API erişimi, otomatik testler ve daha pek çok senaryoda kullanılabilir.
Evet cURL kullanarak PHP ile GET isteği gönderme işlemi bu şekilde yapılmakta. Tüm PHP yazılarımıza buraya tıklayarak ulaşabilirsiniz. Herkese hayırlı günler.