Proksi autentifikatsiyasining o‘z cURL parametrlari bor. Saytga kirish uchun CURLOPT_USERPWD qo‘yish proksi hisobini sozlamaydi, CURLOPT_HTTPAUTH esa proksi autentifikatsiyasi usulini tanlamaydi.

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

Hujjat IP’sini almashtirib, shu proksi uchun berilgan hisob ma’lumotini ishlating. Misolda Basic ataylab tanlangan; barcha nuqta talab qiladi deb o‘ylamay, xizmat qo‘llaydigan va tasdiqlagan usuldan foydalaning.

Birlashgan maydonning kodlash qoidasi bor

libcurl CURLOPT_PROXYUSERPWD foydalanuvchi nomi va parolni URL-dekod qilishini hujjatlashtiradi. Misol har bir qismni ajratgich bilan birlashtirishdan oldin kodlaydi. Haqiqiy foiz ketma-ketligi yoki boshqa maxsus belgi hisob ma’lumotining qismi bo‘lsa, bu muhim.

Alohida proksi foydalanuvchi nomi va parol parametrlari qiymatlarini to‘g‘ridan-to‘g‘ri oladi:

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

So‘rovni bajarishdan oldin ularni muqobil shakl sifatida ishlating. Birlashgan proksi maydonining dekod qoidasini CURLOPT_USERPWD’ga avtomatik qo‘llamang; libcurl farqni hujjatlashtiradi.

Autentifikatsiya bo‘g‘inlarini ajrating

CURLOPT_PROXYAUTH proksi autentifikatsiyasini, CURLOPT_HTTPAUTH esa manzil bilan HTTP autentifikatsiyasini tanlaydi. Ikkala tomon kirishni talab qilsa, bir ma’lumotni ikki joyga ko‘chirish o‘rniga har biriga tegishli parametrni qo‘ying.

CURLAUTH_ANY kelishishga ruxsat beradi va usul tanlashdan oldin chaqiruv-javob almashinuvini qo‘shishi mumkin. Hisob ma’lumoti to‘g‘riligini isbotlamaydi. Yana qo‘lda Proxy-Authorization sarlavhasini qo‘shish kutubxona autentifikatsiyasiga xalaqit berishi mumkin.

Proksiga ochiq matnli ulanishdagi Basic ma’lumoti saytning keyingi TLS tunneli bilan himoyalanmaydi. Autentifikatsiyali xizmatdan foydalanish yo‘lini tanlaganda shu uzatishni alohida tekshiring.

O'xshash maqolalar