प्रोक्सी प्रमाणीकरणका आफ्नै 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 टनेलले जोगाउँदैन। प्रमाणीकरणयुक्त सेवा प्रयोगको तरिका रोज्दा त्यो ट्रान्सपोर्ट अलग जाँच्नुहोस्।

सम्बन्धित लेखहरू