20- cURL Kullanımı Auto Login ve Bot Veri Çekme İşlemleri

cURL'ü kullanarak otomatik giriş (auto-login) ve web sayfalarından veri çekme işlemleri, web scraping (web sayfasından veri çekme) veya otomatikleştirilmiş iş süreçleri için oldukça yaygın olarak kullanılır. Ancak, bir web sitesine otomatik giriş yapmak ve veri çekmek, web sitesinin kullanım şartlarına tabi olduğunuz anlamına gelir. Web sitesinin izni olmadan bu tür işlemleri gerçekleştirmek yasak olabilir. Bu nedenle, işlemleri gerçekleştirmeden önce ilgili web sitesinin kullanım şartlarını ve politikalarını kontrol etmelisiniz.

Aşağıda, cURL kullanarak otomatik giriş yapma ve web sayfalarından veri çekme işlemleri için basit bir örnek bulunmaktadır. Bu örnekte, önce bir web sitesine otomatik giriş yapılır ve ardından giriş yapılan sayfadan belirli bir veri çekilir. Bu örneği kendi ihtiyaçlarınıza göre özelleştirmeniz gerekebilir.

<?php
// cURL özkaynağını başlatma
$ch = curl_init();

// Giriş yapılacak web sitesi URL'si
$login_url = "https://example.com/login";

// Otomatik giriş için kullanıcı bilgileri
$username = "your_username";
$password = "your_password";

// Giriş formu verileri
$post_data = [
'username_field' => $username,
'password_field' => $password,
'submit_button' => 'Login'
];

// cURL ayarlarını yapılandırma
curl_setopt($ch, CURLOPT_URL, $login_url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);

// Giriş yapma isteği gönderme
$login_response = curl_exec($ch);

// Giriş yapıldıktan sonra çekilecek sayfa URL'si
$data_url = "https://example.com/data";

// cURL ayarlarını güncelleme
curl_setopt($ch, CURLOPT_URL, $data_url);

// Oturumu korumak için giriş sayfasından alınan çerezleri kullanma
preg_match_all('/^Set-Cookie:\s*([^;]*)/mi', $login_response, $matches);
$cookies = implode("; ", $matches[1]);
curl_setopt($ch, CURLOPT_COOKIE, $cookies);

// Veri çekme isteği gönderme
$data_response = curl_exec($ch);

// cURL özkaynağını kapatma
curl_close($ch);

// Veriyi işleme
echo $data_response;
?>