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