PHP cURL-дағы прокси аутентификациясының параметрлері
Прокси кіру деректерін дұрыс cURL параметрлерімен беріңіз және нысана аутентификациясын өзгертпей құрама өрістің URL-декодын өңдеңіз.
Прокси аутентификациясының өз 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 туннелі қорғамайды. Аутентификациялы қызметті қолдану жолын таңдағанда сол тасымалды бөлек тексеріңіз.