Старое сцвярджэнне, што Python заўсёды дасылае HTTP/1.0 для CONNECT, больш не з'яўляецца бяспечным агульным правілам. Python 3.12 змяніў тунеляванне http.client на HTTP/1.1 і дадаў аўтаматычнае стварэнне загалоўка Host, калі ён не пададзены.

Гэта змяненне належыць да дакументаванай рэалізацыі стандартнай бібліятэкі. Бібліятэка HTTP вышэйшага ўзроўню можа перакрыць або абгарнуць паводзіны тунеля, таму запішыце яе версію разам з версіяй Python.

Калі проксі адхіляе тунель, праверце абмен CONNECT, які фактычна стварыў гэты кліент. Змена версіі HTTP у запыце да пункта прызначэння або даданне загалоўка Host у запыт да сайта не абавязкова зменіць папярэдні запыт тунеля.

Гэтак жа рэдагаванне прыватных палёў у старым прыкладзе адаптара Requests можа прыкаваць праграму да састарэлага ўнутранага API. Аддавайце перавагу сумяшчальнай камбінацыі кліента і асяроддзя выканання, якая падтрымліваецца, і дакументаванай інтэграцыі з проксі.

Трымайце дзве размовы асобна ў справаздачы: запыт HTTP, які выкарыстоўваецца для адкрыцця тунеля, затым пратакол, узгоднены з пунктам прызначэння ўнутры яго. Яны могуць выкарыстоўваць розныя версіі і выходзіць з ладу на розных этапах.

Падобныя артыкулы