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 туннель хамгаалахгүй. Баталгаажуулалттай үйлчилгээ ашиглах аргаа сонгохдоо тэр дамжуулалтыг тусад нь шалга.