प्रॉक्सी प्रमाणीकरणाचे स्वतःचे 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 टनेलने सुरक्षित होत नाही. प्रमाणीकृत सेवा कशी वापरायची निवडताना तो ट्रान्सपोर्ट वेगळा तपासा.

संबंधित लेख