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 ला सोपवण्यापूर्वी संपूर्ण प्रॉक्सी प्रतिसाद वाचा, आंशिक वाचन हाताळा आणि हेडरच्या पलीकडे वाचलेले सर्व जतन करा. एका सॉकेट वाचनात एक संपूर्ण संदेश असणे आवश्यक नाही.

हा पार्सर तुमचा असल्यास, संपादित बाइट प्रतिनिधित्वाची वायर व्याकरणाशी तुलना करा; पासवर्ड लपवताना लांबी आणि ओळींच्या सीमा दृश्यमान ठेवा. फक्त प्रॉक्सी कनेक्शन आवश्यक असलेल्या अनुप्रयोगासाठी, देखभाल केलेला कनेक्टर हा फ्रेमिंग कोड असण्याची गरज टाळतो.

संबंधित लेख