Proxy autentifikācijai ir savas cURL opcijas. Vietnes pieteikšanās CURLOPT_USERPWD nekonfigurē proxy kontu, un CURLOPT_HTTPAUTH neizvēlas proxy autentifikācijas metodi.

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

Aizstājiet dokumentācijas IP un izmantojiet šim proxy dotos datus. Basic piemērā izvēlēts apzināti; izmantojiet pakalpojuma atbalstītu un apstiprinātu metodi, nevis pieņemiet, ka tā vajadzīga katram punktam.

Apvienotajam laukam ir kodēšanas noteikums

libcurl dokumentē, ka CURLOPT_PROXYUSERPWD URL dekodē lietotājvārdu un paroli. Piemērs kodē katru daļu pirms apvienošanas ar atdalītāju. Tas ir svarīgi, ja datos ietilpst burtiska procentu secība vai cita īpaša zīme.

Atsevišķas proxy lietotājvārda un paroles opcijas pieņem vērtības tieši:

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

Izmantojiet tās kā alternatīvu datu formu pirms pieprasījuma izpildes. Nepiemērojiet apvienotā proxy lauka dekodēšanas noteikumu automātiski CURLOPT_USERPWD; libcurl dokumentē atšķirību.

Turiet autentifikācijas posmus atsevišķi

CURLOPT_PROXYAUTH izvēlas proxy autentifikāciju, bet CURLOPT_HTTPAUTH HTTP autentifikāciju ar galamērķi. Ja abas puses prasa pieteikšanos, katrai iestatiet atbilstošās opcijas, nevis kopējiet vienus datus abās vietās.

CURLAUTH_ANY atļauj vienošanos un var pievienot izaicinājuma-atbildes apmaiņu pirms metodes izvēles. Tas nepierāda datu pareizību. Papildu manuāla Proxy-Authorization galvene var traucēt bibliotēkas autentifikācijas apstrādi.

Basic datus atklāta teksta savienojumā ar proxy neaizsargā vietnes vēlākais TLS tunelis. Pārbaudiet šo transportu atsevišķi, izvēloties autentificēta pakalpojuma izmantošanu.

Saistītie raksti