Python http.client CONNECT: HTTP/1.1 începând cu Python 3.12
Verificați implementarea Python și a transportului înainte de a aplica soluții vechi HTTP/1.0 CONNECT.
Vechea afirmație că Python trimite întotdeauna HTTP/1.0 pentru CONNECT nu mai este o regulă generală sigură. Python 3.12 a schimbat tunelarea din http.client în HTTP/1.1 și a adăugat generarea automată a antetului Host când acesta nu este furnizat.
Această schimbare aparține implementării documentate a bibliotecii standard. O bibliotecă HTTP de nivel superior poate suprascrie sau înfășura comportamentul tunelului, așa că notați versiunea ei și versiunea Python.
Dacă un proxy refuză tunelul, examinați schimbul CONNECT pe care acel client l-a produs efectiv. Schimbarea versiunii HTTP a cererii de destinație sau adăugarea unui antet Host la cererea către site nu modifică neapărat cererea de tunel anterioară.
În mod similar, editarea câmpurilor private într-un exemplu vechi de adaptor Requests poate bloca aplicația pe un API intern învechit. Preferați o combinație compatibilă și acceptată de client și mediu de execuție și o integrare de proxy documentată.
Păstrați cele două conversații separate în raport: cererea HTTP folosită pentru deschiderea tunelului, apoi protocolul negociat cu destinația în interiorul acestuia. Ele pot folosi versiuni diferite și pot eșua în etape diferite.