Overjanje proxyja ima lastne možnosti cURL. CURLOPT_USERPWD za prijavo na spletno mesto ne nastavi računa proxyja, CURLOPT_HTTPAUTH pa ne izbere metode overjanja proxyja.

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

Zamenjajte dokumentacijski IP in uporabite poverilnice, dane za ta proxy. Basic je v primeru namerno izbran; uporabite metodo, ki jo storitev podpira in odobrava, ne domnevajte, da jo potrebuje vsaka točka.

Združeno polje ima pravilo kodiranja

libcurl dokumentira, da CURLOPT_PROXYUSERPWD URL dekodira uporabniško ime in geslo. Primer kodira vsak del pred združevanjem z ločilom. To je pomembno, ko je dobesedno odstotkovno zaporedje ali drug poseben znak del poverilnic.

Ločeni možnosti uporabniškega imena in gesla proxyja sprejmeta vrednosti neposredno:

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

Uporabite ju kot alternativno obliko pred izvedbo zahteve. Pravila dekodiranja združenega proxy polja ne prenesite samodejno na CURLOPT_USERPWD; libcurl dokumentira razliko.

Ločite odseke overjanja

CURLOPT_PROXYAUTH izbira overjanje proxyja, CURLOPT_HTTPAUTH pa HTTP overjanje s ciljem. Če oba zahtevata prijavo, nastavite ustrezne možnosti za vsakega, namesto da iste poverilnice kopirate na obe mesti.

CURLAUTH_ANY omogoča pogajanje in lahko pred izbiro metode doda izmenjavo izziv–odgovor. Ne dokazuje pravilnosti poverilnic. Dodatna ročno dodana glava Proxy-Authorization lahko ovira overjanje, ki ga obravnava knjižnica.

Poverilnic Basic na nešifrirani povezavi do proxyja ne ščiti poznejši TLS tunel spletnega mesta. Pri izbiri uporabe overjene storitve preverite ta transport ločeno.

Sorodni članki