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 हँडलरशी जोडलेले आहे. सानुकूल किंवा स्ट्रीम हँडलरला तेच प्रॉक्सी-हँडशेक कॉलबॅक पुरवणे बंधनकारक नाही. कॅप्चर केलेले प्रॉक्सी हेडर निदान डेटा म्हणून वागवा आणि खात्याशी संबंधित मूल्ये अनावश्यकपणे ठेवणे टाळा.