A antiga afirmação de que o Python sempre envia HTTP/1.0 para CONNECT já não é uma regra geral segura. O Python 3.12 mudou o túnel do http.client para HTTP/1.1 e acrescentou a geração automática do cabeçalho Host quando não é fornecido.

Essa mudança pertence à implementação documentada da biblioteca padrão. Uma biblioteca HTTP de nível superior pode substituir ou envolver o comportamento do túnel, por isso registe a versão dela e também a do Python.

Se um proxy rejeitar o túnel, inspecione a troca CONNECT que esse cliente realmente produziu. Alterar a versão HTTP do pedido de destino ou acrescentar um cabeçalho Host ao pedido ao site não altera necessariamente o pedido de túnel anterior.

Do mesmo modo, editar campos privados num exemplo antigo de adaptador Requests pode prender a aplicação a uma API interna obsoleta. Prefira uma combinação compatível e suportada de cliente e ambiente de execução e uma integração de proxy documentada.

Mantenha as duas conversas separadas no relatório: o pedido HTTP usado para abrir o túnel, e depois o protocolo negociado com o destino lá dentro. Podem usar versões diferentes e falhar em fases diferentes.

Artigos relacionados