irfo
Moderatör
- Katılım
- 7 Ocak 2026
- Mesajlar
- 290
- Tepkime puanı
- 2
- Puanları
- 18
Bir web botu yapmak, temelde hedef sitenin sunucusuna sanki bir tarayıcıymış gibi istek atıp dönen HTML veya JSON içeriğini almaktan ibarettir. PHP cURL kütüphanesi, bu işlemi en profesyonel ve hızlı şekilde yapmamızı sağlayan standart yoldur.
cURL işlemleri her zaman 4 ana aşamadan oluşur: Oturumu başlat, ayarları yap, isteği çalıştır ve oturumu kapat.
Birçok web sitesi, "bot" olarak algıladığı basit istekleri engeller. Bu engeli aşmak için cURL'e bir tarayıcı kimliği (User-Agent) vermeniz gerekir.
Hedef sitedeki bir formu doldurmak veya bir API'ye veri göndermek için POST metodunu kullanırız.
cURL, PHP dünyasının "dışa açılan kapısıdır". İster döviz kurlarını çekin, ister bir e-ticaret sitesinden ürün fiyatlarını takip edin; cURL size sınırsız bir veri çekme gücü sağlar. Ancak unutmayın: Başka sitelerden veri çekerken telif haklarına ve sitelerin robots.txt kurallarına uymak yasal sorumluluğunuzdur.
1. Standart Bir cURL İsteğinin Anatomisi
cURL işlemleri her zaman 4 ana aşamadan oluşur: Oturumu başlat, ayarları yap, isteği çalıştır ve oturumu kapat.
PHP:
<?php
// 1. cURL oturumunu başlat
$ch = curl_init();
// 2. Ayarları yapılandır
curl_setopt($ch, CURLOPT_URL, "https://api.ornek.com/veri"); // Hedef URL
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // Çıktıyı ekrana basma, değişkene aktar
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // Yönlendirmeleri (301, 302) takip et
// 3. İsteği gerçekleştir ve gelen veriyi al
$icerik = curl_exec($ch);
// 4. Hata kontrolü yap ve oturumu kapat
if(curl_errno($ch)) {
echo 'Hata: ' . curl_error($ch);
} else {
echo "Veri başarıyla çekildi.";
}
curl_close($ch);
?>
2. Kendini Tarayıcı Gibi Tanıtma (User-Agent)
Birçok web sitesi, "bot" olarak algıladığı basit istekleri engeller. Bu engeli aşmak için cURL'e bir tarayıcı kimliği (User-Agent) vermeniz gerekir.
PHP:
$agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36';
curl_setopt($ch, CURLOPT_USERAGENT, $agent);
3. POST İsteği Gönderme
Hedef sitedeki bir formu doldurmak veya bir API'ye veri göndermek için POST metodunu kullanırız.
PHP:
$postVerisi = [
'kullanici' => 'admin',
'sifre' => '123456'
];
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($postVerisi));
cURL Parametreleri ve Görevleri Tablosu
| Parametre | Görevi | Neden Kullanılır? |
|---|---|---|
| CURLOPT_TIMEOUT | Zaman aşımı süresi | Sitenin yanıt vermediği durumlarda scriptin takılmasını önler. |
| CURLOPT_SSL_VERIFYPEER | SSL sertifika doğrulaması | HTTPS sitelerde sertifika hatası alırsanız 'false' yapılır. |
| CURLOPT_HEADER | Header bilgilerini dahil et | Sunucudan gelen çerez veya header bilgilerini okumak için. |
| CURLOPT_COOKIEFILE | Çerezleri dosyadan oku | Oturum gerektiren (Login) sitelerde botun kopmamasını sağlar. |
4. Bot Yapımında Etik ve Performans
[] Sleep Kullanımı: Hedef sunucuyu yormamak için ardışık istekler arasına sleep(1); ekleyerek "insani" bir hızda çalışın.
[] Veri Ayıklama (Parsing): Çektiğiniz HTML içeriğinden istediğiniz kısmı almak için PHP'nin DOMDocument sınıfını veya preg_match (Regex) fonksiyonlarını kullanabilirsiniz.- Proxy Kullanımı: IP engellemesi (IP Ban) yememek için cURL üzerinden farklı Proxy adresleri tanımlayabilirsiniz.
Sonuç
cURL, PHP dünyasının "dışa açılan kapısıdır". İster döviz kurlarını çekin, ister bir e-ticaret sitesinden ürün fiyatlarını takip edin; cURL size sınırsız bir veri çekme gücü sağlar. Ancak unutmayın: Başka sitelerden veri çekerken telif haklarına ve sitelerin robots.txt kurallarına uymak yasal sorumluluğunuzdur.