जब CONNECT 200 लौटाता है और TLS तुरंत डिकोड नहीं कर पाता, तो प्रमाणपत्र या सिफर बदलने से पहले कनेक्टर में सीमा बाइट्स जाँचें।

बनाया गया प्राधिकरण मान पहले से ही नई लाइन पर समाप्त हो सकता है। एक और पंक्ति-अंत जोड़ने से HTTP हेडर जल्दी समाप्त हो सकते हैं, जिससे इच्छित Host फ़ील्ड या अन्य सादा पाठ अनुरोध के पीछे रह जाता है।

न्यूनतम HTTP/1.1 CONNECT अनुरोध पंक्तियों के बीच CRLF और अंत में खाली पंक्ति का उपयोग करता है:

b"CONNECT example.com:443 HTTP/1.1\r\nHost: example.com:443\r\n\r\n"

कोई भी प्राधिकरण फ़ील्ड उस अंतिम खाली पंक्ति से पहले रखें, बिना कोई अंतर्निहित पंक्ति विराम। Python में "\n" नई लाइन दर्शाता है; बैकस्लैश और अक्षर n वाली कच्ची स्ट्रिंग नहीं। हटाने का प्रयास करने से पहले जाँचें कि एन्कोडिंग सहायक कौन-से बाइट्स बनाता है—पुराने सहायक पंक्ति विराम जोड़ सकते थे।

CONNECT सफल होने के बाद, वे शेष बाइट्स सुरंग प्रोटोकॉल के हैं। भटका हुआ सादा पाठ TLS की अपेक्षा करने वाले साथी तक पहुँच सकता है। सफल स्थिति खराब बने अनुरोध के बाद पहले से कतार में रखे बाइट्स को ठीक नहीं कर सकती।

प्राप्ति सीमा भी जाँचें। सॉकेट TLS को सौंपने से पहले पूरा प्रॉक्सी उत्तर पढ़ें, आंशिक पठन संभालें और हेडर से आगे पढ़ी गई हर चीज़ सुरक्षित रखें। एक सॉकेट पठन में एक पूरा संदेश होना ज़रूरी नहीं।

यदि यह पार्सर आपका है, तो संपादित बाइट निरूपण की वायर व्याकरण से तुलना करें; पासवर्ड छिपाते हुए लंबाई और पंक्ति सीमाएँ दृश्यमान रखें। ऐसे अनुप्रयोग के लिए जिसे केवल प्रॉक्सी कनेक्शन चाहिए, रखरखाव किया गया कनेक्टर इस फ़्रेमिंग कोड के स्वामित्व की आवश्यकता से बचाता है।

संबंधित लेख