Прокси аутентификациясының өз cURL параметрлері бар. Сайтқа кіруге CURLOPT_USERPWD қою прокси тіркелгісін баптамайды, CURLOPT_HTTPAUTH та прокси аутентификациясы әдісін таңдамайды.

<?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;

Құжат IP-ін ауыстырып, сол проксиге берілген деректерді пайдаланыңыз. Мысалда Basic әдейі таңдалған; барлық нүктеге керек деп ойламай, қызмет қолдайтын әрі мақұлдаған әдісті пайдаланыңыз.

Құрама өрістің кодтау ережесі бар

libcurl CURLOPT_PROXYUSERPWD пайдаланушы аты мен құпиясөзді URL-декодтайтынын құжаттайды. Мысал әр бөлікті бөлгішпен қоспас бұрын кодтайды. Деректе нақты пайыз тізбегі не басқа арнайы таңба болса, бұл маңызды.

Бөлек прокси пайдаланушы аты мен құпиясөз параметрлері мәндерін тікелей қабылдайды:

curl_setopt($ch, CURLOPT_PROXYUSERNAME, $user);
curl_setopt($ch, CURLOPT_PROXYPASSWORD, $password);

Оларды сұрауды орындамас бұрын балама дерек пішімі ретінде пайдаланыңыз. Құрама прокси өрісінің декодтау ережесін CURLOPT_USERPWD-ге автоматты қолданбаңыз; libcurl айырманы құжаттайды.

Аутентификация бөліктерін ажыратыңыз

CURLOPT_PROXYAUTH прокси аутентификациясын, CURLOPT_HTTPAUTH нысанамен HTTP аутентификациясын таңдайды. Екеуі де кіруді талап етсе, бір деректі екі жерге көшірудің орнына әрқайсына тиісті параметр беріңіз.

CURLAUTH_ANY келісуге мүмкіндік береді және әдіс таңдалғанша шақыру-жауап алмасуын қосуы мүмкін. Деректің дұрыстығын дәлелдемейді. Қосымша қолмен Proxy-Authorization тақырыбын беру кітапхананың аутентификация өңдеуіне кедергі келтіруі мүмкін.

Проксиге ашық мәтінді қосылымдағы Basic деректерін сайттың кейінгі TLS туннелі қорғамайды. Аутентификациялы қызметті қолдану жолын таңдағанда сол тасымалды бөлек тексеріңіз.

Қатысты мақалалар