Guzzle को cURL ह्यान्डलर: प्रोक्सी CONNECT हेडरहरू क्याप्चर गर्नुहोस्
प्रोक्सीको CONNECT प्रतिक्रिया र वेबसाइटको प्रतिक्रिया दुवै महत्त्वपूर्ण हुँदा Guzzle को cURL ह्यान्डलरले छुट्टाछुट्टै प्रतिक्रिया हेडर ब्लकहरू क्याप्चर गर्नुहोस्।
HTTP प्रोक्सीमार्फत जाने HTTPS अनुरोधले CONNECT स्वीकार गर्ने एउटा प्रतिक्रिया र त्यसपछि त्यो सुरुङभित्रको वेबसाइटबाट आउने अर्को प्रतिक्रिया प्राप्त गर्न सक्छ। सुरुवाती मार्ग सेटअपका लागि Guzzle को प्रति-अनुरोध प्रोक्सी विकल्प हेर्नुहोस्। पहिलो प्रतिक्रियाको हेडर अन्तिम प्रतिक्रिया वस्तुमा हुनैपर्छ भन्ने छैन।
तपाईंले आफैँ छान्नुभएको HTTP इन्डपोइन्टसँग पुनरुत्पादन गर्न HTTP प्रोक्सी सूचीबाट एक उम्मेदवार लिनुहोस् र यसले HTTPS सुरुङ स्वीकार गर्छ भनी पुष्टि गर्नुहोस्। Guzzle 7.10 को cURL-ह्यान्डलर मार्गमा, प्रत्येक हेडर कलब्याकलाई छुट्टै ब्लकका रूपमा राख्नुहोस्:
$blocks = [];
$client = new \GuzzleHttp\Client([
'handler' => \GuzzleHttp\HandlerStack::create(
new \GuzzleHttp\Handler\CurlHandler()
),
]);
$response = $client->get('https://www.example.com/', [
'proxy' => 'http://proxy.example:8080',
'curl' => [CURLOPT_SUPPRESS_CONNECT_HEADERS => false],
'on_headers' => function (
\Psr\Http\Message\ResponseInterface $part
) use (&$blocks) {
$blocks[] = [
'status' => $part->getStatusCode(),
'reason' => $part->getReasonPhrase(),
'headers' => $part->getHeaders(),
];
},
]);
cURL एक्सटेन्सनले CURLOPT_SUPPRESS_CONNECT_HEADERS उपलब्ध गराउनुपर्छ, जुन libcurl 7.54.0 ले ल्याएको विकल्प हो। यसलाई false मा राख्दा CONNECT हेडरहरू cURL को हेडर कलब्याकसम्म पुग्छन्। Guzzle 7.10 ह्यान्डलरले प्रत्येक पूरा भएको हेडर ब्लकका लागि प्रतिक्रिया बनाउँछ र त्यो सीमामा on_headers कल गर्छ।
ब्लकहरू क्रममा राख्नुहोस्। प्रमाणीकरण चुनौती, रिडाइरेक्ट र सूचनात्मक प्रतिक्रियाहरूले थप ब्लक उत्पन्न गर्न सक्छन्; सबै मानहरू एउटै एरेमा समतल नगर्नुहोस् र स्थिति 200 भएकै कारणले मात्र प्रतिक्रिया वर्गीकरण नगर्नुहोस्।
फर्काइएको प्रतिक्रियाले पूरा भएको अनुरोधको प्रतिक्रिया जनाउँछ, भने blocks ले कलब्याकहरूद्वारा संकलित अवलोकनहरू सुरक्षित राख्छ। सुरुङ वा TLS सेटअप असफल भएमा, कल गर्ने अनुप्रयोगमा फ्याँकिएको स्थानान्तरण अपवाद ह्यान्डल गर्नुहोस्; अन्तिम वेबसाइट प्रतिक्रिया नहुन सक्छ।
यो व्यवहार उल्लेखित cURL ह्यान्डलरसँग जोडिएको छ। अनुकूलित वा स्ट्रिम ह्यान्डलरले त्यही प्रोक्सी-ह्यान्डशेक कलब्याकहरू उपलब्ध गराउन बाध्य छैन। क्याप्चर गरिएका प्रोक्सी हेडरहरूलाई निदान डेटाका रूपमा लिनुहोस् र खातासँग सम्बन्धित मानहरू अनावश्यक रूपमा राख्नबाट बच्नुहोस्।