Кога 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, ракувајте со делумни читања и зачувајте сè што е прочитано над заглавијата. Едно читање на сокет не мора да содржи една цела порака.

Ако овој парсер е ваш, споредете редигиран приказ на бајтите со граматиката на жицата; држете ги должините и границите на редовите видливи додека ја криете лозинката. За апликација што бара само прокси врска, одржуван конектор ја избегнува потребата да го поседувате овој код за рамкирање.

Поврзани статии