Опции за прокси-автентикација во PHP cURL
Конфигурирајте прокси-податоци со точни cURL опции и обработете URL декодирање на комбинираното поле без промена на автентикација со целта.
Прокси-автентикацијата има сопствени cURL опции. CURLOPT_USERPWD за најава на сајт не ја конфигурира сметката на проксито, а CURLOPT_HTTPAUTH не го избира методот за прокси-автентикација.
<?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;
Заменете ја документациската IP и користете ги податоците дадени за тоа прокси. Basic е намерно избрано тука; користете метод што е поддржан и одобрен за услугата, без претпоставка дека секоја точка го бара.
Комбинираното поле има правило за кодирање
libcurl документира дека CURLOPT_PROXYUSERPWD URL ги декодира корисничкото име и лозинката. Примерот го кодира секој дел пред спојување со разделувачот. Ова е важно кога буквална процентна низа или друг специјален знак е дел од податоците.
Одделните опции за прокси-корисничко име и лозинка ги прифаќаат вредностите директно:
curl_setopt($ch, CURLOPT_PROXYUSERNAME, $user);
curl_setopt($ch, CURLOPT_PROXYPASSWORD, $password);
Користете ги како алтернативна форма пред извршување на барањето. Не применувајте го автоматски правилото за декодирање на комбинираното поле врз CURLOPT_USERPWD; libcurl документира разлика.
Одвојте ги делниците на автентикација
CURLOPT_PROXYAUTH избира прокси-автентикација, а CURLOPT_HTTPAUTH HTTP автентикација со дестинацијата. Ако двете страни бараат најава, конфигурирајте соодветни опции за секоја, наместо да копирате исти податоци на двете места.
CURLAUTH_ANY дозволува договарање и може да додаде размена предизвик–одговор пред изборот на метод. Не докажува дека податоците се точни. Дополнителен рачно додаден Proxy-Authorization хедер може да ја наруши автентикацијата што ја обработува библиотеката.
Basic податоци на врска во јасен текст до проксито не се заштитени од подоцнежниот TLS тунел на сајтот. Проверете го тој транспорт посебно кога избирате како да користите автентицирана услуга.