Valkostir fyrir proxy-auðkenningu í PHP cURL
Stilltu proxy-auðkenni með réttum cURL-valkostum og meðhöndlaðu URL-afkóðun sameinaða reitsins án þess að breyta auðkenningu áfangastaðar.
Auðkenning við milliþjón hefur eigin cURL-valkosti. CURLOPT_USERPWD fyrir vefinnskráningu stillir ekki reikning milliþjónsins og CURLOPT_HTTPAUTH velur ekki auðkenningaraðferð milliþjónsins.
<?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;
Skiptu skýringar-IP út og notaðu auðkennin sem voru gefin fyrir þann milliþjón. Basic er vísvitandi valið hér; notaðu aðferð sem þjónustan styður og hefur samþykkt, fremur en að ætla að allir endapunktar þurfi hana.
Sameinaði reiturinn hefur kóðunarreglu
libcurl skrásetur að CURLOPT_PROXYUSERPWD URL-afkóði notandanafn og lykilorð. Dæmið kóðar hvorn hluta áður en þeir eru tengdir með skilju. Þetta skiptir máli þegar bókstafleg prósenturuna eða annað sértákn er hluti auðkennanna.
Aðskildir valkostir fyrir notandanafn og lykilorð milliþjóns taka gildin beint:
curl_setopt($ch, CURLOPT_PROXYUSERNAME, $user);
curl_setopt($ch, CURLOPT_PROXYPASSWORD, $password);
Notaðu þá sem annað auðkennaform áður en beiðnin er keyrð. Ekki beita afkóðunarreglu sameinaða proxy-reitsins sjálfkrafa á CURLOPT_USERPWD; libcurl skrásetur mun á þeim.
Haltu auðkenningarleggjum aðskildum
CURLOPT_PROXYAUTH velur proxy-auðkenningu en CURLOPT_HTTPAUTH HTTP-auðkenningu við áfangastað. Krefjist báðir innskráningar skaltu stilla rétta valkosti fyrir hvorn, ekki afrita sömu auðkenni á báða staði.
CURLAUTH_ANY leyfir samninga og getur bætt við áskorunar-/svarskiptum áður en aðferð er valin. Það sannar ekki að auðkennin séu rétt. Að bæta einnig handvirkt við Proxy-Authorization-haus getur truflað auðkenningarmeðferð safnsins.
Basic-auðkenni á ódulkóðaðri tengingu við milliþjón eru ekki varin af seinni TLS-göngum vefsíðunnar. Athugaðu þann flutning sérstaklega þegar þú velur notkun auðkenndrar þjónustu.