Proxy-stawing het sy eie cURL-opsies. Om CURLOPT_USERPWD vir ’n webwerfaanmelding te stel, stel nie die proxyrekening op nie, en CURLOPT_HTTPAUTH kies nie die proxy-stawingsmetode nie.

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

Vervang die dokumentasie-IP en gebruik die besonderhede wat vir dié proxy verskaf is. Basic is doelbewus in hierdie voorbeeld gekies; gebruik die metode wat jou diens ondersteun en goedkeur, eerder as om te aanvaar dat elke eindpunt dit nodig het.

Die gekombineerde veld het ’n koderingsreël

libcurl dokumenteer dat CURLOPT_PROXYUSERPWD die gebruikersnaam en wagwoord URL-dekodeer. Die voorbeeld kodeer elke komponent voordat dit met die skeidingsteken saamgevoeg word. Dit maak saak wanneer ’n letterlike persentasievolgorde of ander spesiale karakter deel van die aanmeldbesonderhede is.

Die aparte proxygebruikersnaam- en wagwoordopsies aanvaar hul waardes direk:

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

Gebruik dit as alternatiewe vorm voordat die versoek uitgevoer word. Moenie die gekombineerde proxyveld se dekoderingsreël outomaties op CURLOPT_USERPWD toepas nie; libcurl dokumenteer ’n verskil.

Hou die stawingskakels apart

CURLOPT_PROXYAUTH kies proxy-stawing, terwyl CURLOPT_HTTPAUTH HTTP-stawing met die bestemming kies. As albei ’n aanmelding vereis, stel elkeen se toepaslike opsies in eerder as om dieselfde besonderhede na albei plekke te kopieer.

CURLAUTH_ANY laat onderhandeling toe en kan ’n uitdaging-antwoord-uitruiling byvoeg voordat ’n metode gekies word. Dit bewys nie dat die besonderhede korrek is nie. Om ook ’n Proxy-Authorization-kopstuk handmatig by te voeg kan die biblioteek se stawingshantering versteur.

Basic-besonderhede op ’n klaarteksverbinding met die proxy word nie deur die webwerf se latere TLS-tonnel beskerm nie. Kontroleer daardie vervoer afsonderlik wanneer jy kies hoe om ’n gestaafde diens te gebruik.

Verwante artikels