L-awtentikazzjoni proxy għandha għażliet cURL tagħha. CURLOPT_USERPWD għal login ta’ sit ma jikkonfigurax il-kont tal-proxy, u CURLOPT_HTTPAUTH ma jagħżilx il-metodu ta’ awtentikazzjoni proxy.

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

Ibdel l-IP tad-dokumentazzjoni u uża l-kredenzjali mogħtija għal dak il-proxy. Basic jintgħażel apposta hawn; uża l-metodu appoġġat u approvat għas-servizz, mhux tassumi li kull punt jeħtieġu.

Il-qasam magħqud għandu regola ta’ kodifikazzjoni

libcurl jiddokumenta li CURLOPT_PROXYUSERPWD jiddekodifika bħala URL l-isem tal-utent u l-password. L-eżempju jikkodifika kull komponent qabel jgħaqqadhom bid-delimitatur. Dan jgħodd meta sekwenza perċentwali litterali jew karattru speċjali ieħor huwa parti mill-kredenzjali.

L-għażliet separati tal-isem tal-utent u l-password tal-proxy jaċċettaw il-valuri tagħhom direttament:

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

Użahom bħala forma alternattiva qabel tesegwixxi t-talba. Tapplikax awtomatikament ir-regola ta’ dekodifikazzjoni tal-qasam proxy magħqud għal CURLOPT_USERPWD; libcurl jiddokumenta differenza.

Żomm il-passi tal-awtentikazzjoni separati

CURLOPT_PROXYAUTH jagħżel awtentikazzjoni proxy, waqt li CURLOPT_HTTPAUTH jagħżel awtentikazzjoni HTTP mad-destinazzjoni. Jekk it-tnejn jitolbu login, ikkonfigura l-għażliet ta’ kull wieħed minflok tikkopja l-istess kredenzjali fiż-żewġ postijiet.

CURLAUTH_ANY jippermetti negozjar u jista’ jżid skambju ta’ sfida-risposta qabel jintgħażel metodu. Ma jipprovax li l-kredenzjali huma korretti. Li żżid ukoll header Proxy-Authorization manwalment jista’ jfixkel l-awtentikazzjoni tal-librerija.

Kredenzjali Basic fuq konnessjoni b’test ċar mal-proxy mhumiex protetti mill-mina TLS tas-sit li sseħħ wara. Iċċekkja dak it-trasport separatament meta tagħżel kif tuża servizz awtentikat.

Artikli relatati