प्रतिक्रिया के मुख्य भाग से हेडर पंक्तियाँ अलग रूप में एकत्र करें। प्रॉक्सी के माध्यम से होने वाला स्थानांतरण एक ही क्रिया में CONNECT, प्रमाणीकरण, रीडायरेक्ट और गंतव्य प्रतिक्रिया के हेडर दे सकता है:

$headerLines = [];
curl_setopt($handle, CURLOPT_HEADERFUNCTION,
    function ($handle, $line) use (&$headerLines) {
        $headerLines[] = $line;
        return strlen($line);
    }
);

यह कॉलबैक कच्ची पंक्ति क्रम को बनाए रखता है और स्वीकृत बाइट्स की संख्या लौटाता है। इसे पूरी पंक्तियाँ मिलती हैं; लेकिन यह अभी उन्हें प्रतिक्रियाओं में समूहित नहीं करता और अंतिम वेबसाइट के हेडर नहीं चुनता।

क्रम की व्याख्या ब्लॉकों के रूप में करें

HTTP स्थिति पंक्ति एक प्रतिक्रिया ब्लॉक शुरू करती है, और खाली पंक्ति उसके हेडर समाप्त करती है। अंतिम गंतव्य प्रतिक्रिया चुनने से पहले उन सीमाओं को सुरक्षित रखें। मध्यवर्ती प्रमाणीकरण प्रयास और रीडायरेक्ट प्रत्येक ब्लॉक जोड़ सकते हैं।

ट्रेलर बाद में कॉलबैक के माध्यम से आ सकते हैं। हर बाद के फ़ील्ड को पहली प्रतिक्रिया से जोड़ने के बजाय उन्हें प्रारंभिक हेडर से अलग पहचानने के लिए पर्याप्त पार्सर स्थिति रखें।

टनल का प्रमाण रखें या दबाएँ

HTTPS टनल की CONNECT स्थिति के लिए CURLINFO_HTTP_CONNECTCODE अलग से पढ़ें। स्वीकृत टनल सफल वेबसाइट प्रतिक्रिया सिद्ध नहीं करता।

यदि संग्राहक को CONNECT हेडर की आवश्यकता नहीं है, तो CURLOPT_SUPPRESS_CONNECT_HEADERS कॉन्फ़िगर किए गए हेडर आउटपुट और कॉलबैक पथों में उनकी डिलीवरी नियंत्रित करता है। जुड़े libcurl और PHP बिल्ड में समर्थन जाँचें। दबाना संग्रह को सरल बनाता है, लेकिन हेडर-स्तरीय टनल प्रमाण हटा देता है जो निदान में सहायक हो सकता है।

स्थिर ऑफ़सेट से या HTML टैग खोजकर मुख्य भाग पुनः प्राप्त न करें। हेडर आकार बदलते हैं, मध्यवर्ती प्रतिक्रियाएँ भिन्न होती हैं, और मुख्य भाग बाइनरी या खाली हो सकता है। पुरानी संस्करण-विशिष्ट बग रिपोर्ट अनुमानित ऑफ़सेट को उचित नहीं ठहराती।

मुख्य भाग का संचालन अलग रखें, और यदि संग्रह या पार्सिंग विफल हो तो देखे गए प्रतिक्रिया चरणों के साथ स्थानांतरण त्रुटि रखें। यह बाधित कॉलबैक, विकृत एप्लिकेशन डेटा और अस्वीकृत प्रॉक्सी आदान-प्रदान को अलग करता है।

संबंधित लेख