Merhaba arkadaşlar. Bu yazımda sizlere projelerimde kullanmış olduğum curl fonksiyonunu paylaşacağım. Öncelikle cURL nedir? Bununla başlayalım.

cURL ‘ın açılımı Client URL Library Functions demektir yani İstemci URL Kütüphane Fonksiyonları anlamına geliyor. Daniel Stenberg tarafından yazılan bu PHP kütüphanesi, birçok farklı tipteki sunucunun, birçok farklı tipte protokol kullanarak birbirleriyle bağlantı ve iletişim kurabilmesini sağlamaktadır. Kısa temel bilgileri verdikten sonra gelelim asıl soruya.

Peki bu cURL denilen şeyle ne yapabiliriz? 

Ben bunu örnek vererek anlatmak istiyorum. Mesela ben ilk bot yapımına başladığımda sadece file_get_contents() ile veriyi çekiyordum ve bu fonksiyon her sitede çalışmıyordu. Bazı siteleri çektiğimde beyaz sayfa yani o siteyle ilgili başlığı bile gelmiyordu. Biraz araştırdıktan sonra sebebinin siteye bir istemcinin yani kullanıcının girmediği için site sahibi hiç bir veri göstermiyordu. Biraz daha araştırma yaparak cURL denilen şeyle tanıştım.

cURL ile bağlanacağımız siteye bir tarayıcıdan yani kullanıcı olarak erişim sağlayabiliyoruz. Daha da iyisi kullanıcı girişi gibi işlemlerde yaptırabiliyoruz. Hepsinden iyisi proxy değiştirerek erişim sağlayabiliyoruz. Varsayalım ki bir siteden veri çekerken ip adresiniz ban yedi (engellendi). Napacaksınız her seferinde modem mi resetleyeceksiniz? Hayır. cURL ile proxy değiştirip tekrar çekeceksiniz 🙂 Bu proxy olayı fazla bir yerde anlatılmamış genelde yabancı kaynak var hep. Ben bunu yabancı kaynaklardan araştırarak buldum ve sizinle proxyli ve proxysiz olmak üzere iki fonksiyonu da paylaşacağım.

Kodları ve kullanımlarını aşağıda bulabilirsiniz.

Kod (Proxysiz):

function curl($url){
set_time_limit(0);
$userAgent = 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.2 (KHTML, like Gecko) Chrome/22.0.1216.0 Safari/537.2';
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_TIMEOUT, 0);
curl_setopt($curl, CURLOPT_REFERER, 'http://www.google.com');
curl_setopt($curl, CURLOPT_USERAGENT, $userAgent);
$data = curl_exec($curl);
curl_close($curl);
return $data;
}

Kod (Proxyli):

function curl($url){
set_time_limit(0);
$userAgent = 'Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.2 (KHTML, like Gecko) Chrome/22.0.1216.0 Safari/537.2';
$proxyList=array(
'88.248.244.194:9090',
'212.108.129.22:3128',
'88.255.148.24:8080'
);
$proxyKey=array_rand($proxyList,1);
$proxy=$proxyList[$proxyKey];
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_HTTPPROXYTUNNEL, 0);
curl_setopt($curl, CURLOPT_PROXY, $proxy);
curl_setopt($curl, CURLOPT_TIMEOUT, 0);
curl_setopt($curl, CURLOPT_REFERER, 'http://www.google.com');
curl_setopt($curl, CURLOPT_USERAGENT, $userAgent);
$data = curl_exec($curl);
curl_close($curl);
return $data;
}

 

curl('http://niyazifurkanbar.name.tr');
//yukarıdaki kullanımda datayı return edeceği için ekrana birşey yansımayacaktır
//yansıması için başına echo yazmakta fayda var
//ikisi içinde kullanım aynıdır
echo curl('http://niyazifurkanbar.name.tr');

NOT: Çalışmayan proxy olduğunda veya yeni bir proxy eklemek istediğinizde $proxyList dizisine ekleyebilirsiniz.