PHP cURL-da proksi autentifikasiya seçimləri
Proksi giriş məlumatlarını düzgün cURL seçimləri ilə qurun və hədəf autentifikasiyasını dəyişmədən birləşmiş sahənin URL-dekodunu idarə edin.
Proksi autentifikasiyasının öz cURL seçimləri var. Sayta giriş üçün CURLOPT_USERPWD təyin etmək proksi hesabını qurmur və CURLOPT_HTTPAUTH proksi autentifikasiya metodunu seçmir.
<?php
$user = 'proxy-user';
$password = getenv('PROXY_PASSWORD');
if ($password === false) {
throw new RuntimeException('Set PROXY_PASSWORD');
}
$ch = curl_init('https://example.com/');
curl_setopt_array($ch, [
CURLOPT_PROXY => 'http://203.0.113.10:8080',
CURLOPT_NOPROXY => '',
CURLOPT_PROXYUSERPWD =>
rawurlencode($user) . ':' . rawurlencode($password),
CURLOPT_PROXYAUTH => CURLAUTH_BASIC,
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;
Sənəd IP-sini dəyişin və həmin proksi üçün verilən məlumatları istifadə edin. Basic nümunədə məqsədli seçilib; hər son nöqtənin istədiyini düşünmədən xidmətin dəstəklədiyi və təsdiqlədiyi metodu istifadə edin.
Birləşmiş sahənin kodlama qaydası var
libcurl CURLOPT_PROXYUSERPWD-nin istifadəçi adı və parolu URL-dekod etdiyini sənədləşdirir. Nümunə hər hissəni ayırıcı ilə birləşdirmədən əvvəl kodlayır. Həqiqi faiz ardıcıllığı və ya başqa xüsusi simvol giriş məlumatına aiddirsə, bu vacibdir.
Ayrı proksi istifadəçi adı və parol seçimləri dəyərlərini birbaşa qəbul edir:
curl_setopt($ch, CURLOPT_PROXYUSERNAME, $user);
curl_setopt($ch, CURLOPT_PROXYPASSWORD, $password);
Sorğunu icra etməzdən əvvəl bunları alternativ məlumat forması kimi istifadə edin. Birləşmiş proksi sahəsinin dekod qaydasını CURLOPT_USERPWD-yə avtomatik tətbiq etməyin; libcurl fərqi sənədləşdirir.
Autentifikasiya mərhələlərini ayırın
CURLOPT_PROXYAUTH proksi autentifikasiyasını, CURLOPT_HTTPAUTH isə hədəflə HTTP autentifikasiyasını seçir. Hər ikisi giriş istəyirsə, eyni məlumatı iki yerə köçürmək əvəzinə hər tərəfin uyğun seçimlərini qurun.
CURLAUTH_ANY razılaşdırmaya icazə verir və metod seçilməzdən əvvəl çağırış-cavab mübadiləsi əlavə edə bilər. Məlumatın düzgünlüyünü sübut etmir. Əlavə olaraq əllə Proxy-Authorization başlığı vermək kitabxananın autentifikasiya işinə mane ola bilər.
Proksiyə açıq mətn bağlantısındakı Basic məlumatlarını saytın sonrakı TLS tuneli qorumur. Autentifikasiyalı xidmətdən istifadəni seçərkən həmin nəqliyyatı ayrıca yoxlayın.