CURL bir proxy üzerinden nasıl kullanılır?
curl'ü bir proxy sunucusu kullanacak şekilde ayarlamak istiyorum. URL bir html formu tarafından sağlanıyor ve bu bir sorun teşkil etmiyor. Proxy olmadan gayet iyi çalışıyor. Bu ve diğer sitelerde kod buldum, ancak çalışmıyorlar. Doğru çözümü bulmak için herhangi bir yardım çok takdir edilecektir. Feryatların yakın olduğunu, ancak bir şeyleri kaçırdığımı hissediyorum. Teşekkür ederim.
Buradan uyarladığım aşağıdaki kod http://www.webmasterworld.com/forum88/10572.htm ancak 12. satırda eksik bir T_VARIABLE ile ilgili bir hata mesajı döndürüyor.
<?
$url = '$_POST[1]';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 0);
curl_setopt($ch, CURLOPT_PROXY, '66.96.200.39:80');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST,'GET');
curl_setopt ($ch, CURLOPT_HEADER, 1)
curl_exec ($ch);
$curl_info = curl_getinfo($ch);
curl_close($ch);
echo '<br />';
print_r($curl_info);
?>
Körük https://stackoverflow.com/questions/4802816/curl-through-proxy-returns-no-content adresinden alınmıştır.
<?
$proxy = "66.96.200.39:80";
$proxy = explode(':', $proxy);
$url = "$_POST[1]";
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_PROXY, $proxy[0]);
curl_setopt($ch, CURLOPT_PROXYPORT, $proxy[1]);
curl_setopt($ch, CURLOPT_HEADER, 1);
$exec = curl_exec($ch);
echo curl_error($ch);
print_r(curl_getinfo($ch));
echo $exec;
?>
şu anda pelican-cement.com'da yayında ancak o da çalışmıyor.
GÜNCELLEME: Yardımlarınız için teşekkür ederim, yukarıdaki değişiklikleri yaptım. Şimdi sadece boş bir ekran döndürüyor.
<?
$url = $_POST['1'];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 0);
curl_setopt($ch, CURLOPT_PROXY, '66.96.200.39:80');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST,'GET');
curl_setopt ($ch, CURLOPT_HEADER, 1);
curl_exec ($ch);
$curl_scraped_page = curl_exec($ch);
curl_close($ch);
echo $curl_scraped_page;
?>
İşte hataları giderilmiş çalışan bir sürüm.
Proxy'lerinizden herhangi birinin kullanıcı adı ve parola gerektirmesi durumunda
CURLOPT_PROXYUSERPWD
ekledim. Verilerin$curl_scraped_page
değişkenine döndürülmesi içinCURLOPT_RETURNTRANSFER
değerini 1 olarak ayarladım.Değişkenin döndürülmesini durduracak ikinci bir ekstra
curl_exec($ch);
öğesini kaldırdım. Proxy IP'nizi ve portunuzu tek bir ayarda birleştirdim.Ayrıca varsayılan olduğu için
CURLOPT_HTTPPROXYTUNNEL
veCURLOPT_CUSTOMREQUEST
öğelerini de kaldırdım.Başlıkların döndürülmesini istemiyorsanız,
CURLOPT_HEADER
ifadesini yorumlayın.Proxy'yi devre dışı bırakmak için null olarak ayarlamanız yeterlidir.
Herhangi bir sorunuz olursa sormaktan çekinmeyin, ben her gün
cURL
ile çalışıyorum.CURL PROXY için gerekli olan çeşitli CURL seçeneklerinin kullanımını açıkladım.
İşte projelerim için kullandığım iyi test edilmiş bir fonksiyon ve detaylı kendi kendini açıklayan yorumlar
Sunucu güvenlik duvarı tarafından 80 dışındaki bağlantı noktalarının engellendiği birçok zaman vardır, bu nedenle kod localhost'ta iyi çalışıyor ancak sunucuda çalışmıyor gibi görünür