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" жаңа жолды білдіреді; құрамында backslash және n әрпі бар шикі жол білдірмейді. Оларды алып тастауға тырыспас бұрын кодтау көмекшісі қандай байттар шығаратынын тексеріңіз—ескі көмекшілер жол үзілімдерін қосуы мүмкін еді.

CONNECT сәтті болғаннан кейін бұл қалған байттар туннель протоколына тиесілі. Адасқан ашық мәтін TLS күтіп тұрған серікке жетуі мүмкін. Сәтті мәртебе дұрыс емес сұраныстан кейін кезекке қойылған байттарды түзете алмайды.

Қабылдау шекарасын да тексеріңіз. Сокетті TLS-ке тапсырмас бұрын прокси жауабын толық оқыңыз, ішінара оқуларды өңдеңіз және тақырыптардан тыс оқылғанның бәрін сақтаңыз. Бір сокет оқуы бір тұтас хабарламаны қамтуы міндетті емес.

Егер бұл парсер сіздікі болса, редакцияланған байт көрінісін сым грамматикасымен салыстырыңыз; құпиясөзді жасырып, ұзындықтар мен жол шекараларын көрінетін етіп ұстаңыз. Тек прокси қосылымы қажет қолданба үшін қолдау көрсетілетін коннектор осы фрейминг кодына ие болу қажеттілігін болдырмайды.

Қатысты мақалалар