Proxy kimlik doğrulamasının kendi cURL seçenekleri vardır. Siteye giriş için CURLOPT_USERPWD ayarlamak proxy hesabını yapılandırmaz, CURLOPT_HTTPAUTH da proxy doğrulama yöntemini seçmez.

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

Belgeleme IP’sini değiştirip o proxy için verilen kimlik bilgilerini kullanın. Örnekte Basic bilerek seçilmiştir; her uç noktanın istediğini varsaymadan hizmetin desteklediği ve onayladığı yöntemi kullanın.

Birleşik alanın kodlama kuralı vardır

libcurl, CURLOPT_PROXYUSERPWD’nin kullanıcı adı ve parolayı URL-decode ettiğini belgeler. Örnek, ayırıcıyla birleştirmeden önce her bileşeni kodlar. Gerçek bir yüzde dizisi veya başka özel karakter kimlik bilgisinin parçasıysa bu önemlidir.

Ayrı proxy kullanıcı adı ve parola seçenekleri değerlerini doğrudan alır:

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

İsteği yürütmeden önce bunları alternatif biçim olarak kullanın. Birleşik proxy alanının çözme kuralını CURLOPT_USERPWD’ye otomatik uygulamayın; libcurl aradaki farkı belgeler.

Kimlik doğrulama aşamalarını ayrı tutun

CURLOPT_PROXYAUTH proxy doğrulamasını, CURLOPT_HTTPAUTH ise hedefle HTTP doğrulamasını seçer. İki taraf da giriş istiyorsa aynı bilgileri iki yere kopyalamak yerine her biri için uygun seçenekleri ayarlayın.

CURLAUTH_ANY görüşmeye izin verir ve yöntem seçilmeden önce bir challenge-response alışverişi ekleyebilir. Kimlik bilgilerinin doğruluğunu kanıtlamaz. Ayrıca elle Proxy-Authorization başlığı eklemek kütüphanenin doğrulama işlemini bozabilir.

Proxy’ye düz metin bağlantısındaki Basic bilgileri sitenin sonraki TLS tüneliyle korunmaz. Kimlik doğrulamalı hizmeti kullanma şeklini seçerken bu taşımayı ayrı kontrol edin.

İlgili makaleler