PHP cURL’da proksi autentifikatsiyasi parametrlari
Proksi hisob ma’lumotini to‘g‘ri cURL parametrlari bilan sozlang va manzil autentifikatsiyasini o‘zgartirmay birlashgan maydon URL-dekodini boshqaring.
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.