PHP cURL ilə proksi IP-dən istifadə
PHP cURL tutacağında HTTP və ya SOCKS proksi qurun, sayt URL-sini ayrı saxlayın və nəqliyyat xətalarını HTTP cavablarından ayırın.
Saytı curl_init() daxilində saxlayın və vasitəçini həmin tutacaqda qurun. PHP-yə cURL genişlənməsi lazımdır; terminalda işləyən curl proqramı genişlənmənin mövcud olduğunu sübut etmir.
<?php
$ch = curl_init('https://example.com/');
curl_setopt_array($ch, [
CURLOPT_PROXY => 'http://203.0.113.10:8080',
CURLOPT_PROXYTYPE => CURLPROXY_HTTP,
CURLOPT_NOPROXY => '',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_CONNECTTIMEOUT => 5,
CURLOPT_TIMEOUT => 15,
]);
$body = curl_exec($ch);
if ($body === false) {
throw new RuntimeException(curl_error($ch), curl_errno($ch));
}
echo curl_getinfo($ch, CURLINFO_RESPONSE_CODE), PHP_EOL;
echo $body;Sənəddəki IP və portu öz HTTP proksinizlə və ya HTTP proksi siyahısından bir qeydlə əvəz edin. CURLOPT_NOPROXY bu sınaq üçün yan keçmə qaydalarını təmizləyir; CURLOPT_RETURNTRANSFER məzmunu brauzerə göndərmək əvəzinə qaytarır. Bağlantı limiti qurulmanı, ümumi vaxt həddi isə cURL əməliyyatını məhdudlaşdırır.
SOCKS5 son nöqtəsi üçün curl_exec() çağırışından əvvəl HTTP proksi seçimlərini dəyişin:
curl_setopt($ch, CURLOPT_PROXY, '203.0.113.10:1080');
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_SOCKS5_HOSTNAME);CURLPROXY_SOCKS5_HOSTNAME təyinat DNS-ini SOCKS serverinə həvalə edir. Göstərilən protokoldan istifadə edin; təkcə 1080 portu onu müəyyən etmir. Heç bir proksi seçimi saytın sertifikat yoxlamasını söndürməyi tələb etmir.
$body === false şərtini ciddi yoxlayın. Boş məzmun uğurlu ötürmə ola bilər, halbuki saytdan hər hansı cavab gəlməzdən əvvəl tunel xətası baş verə bilər. Əksinə, boş olmayan məzmun 403, 404 və ya 429 ilə gələ bilər. Tamamlanmış sorğunun işinizə uyğun olub-olmadığını müəyyən etmək üçün CURLINFO_RESPONSE_CODE məlumatını cURL xəta nəticəsi ilə birlikdə oxuyun.