Defina separadamente os pacotes CA do proxy e da origem no PycURL
Use um URL https de proxy para o TLS até ao intermediário, com PROXY_CAINFO para esse par e CAINFO para o destino.
from io import BytesIO
import pycurl
body = BytesIO()
curl = pycurl.Curl()
try:
curl.setopt(pycurl.URL, "https://api.example/")
curl.setopt(pycurl.PROXY, "https://proxy.example:8443")
curl.setopt(pycurl.PROXY_CAINFO, "/path/to/proxy-ca.pem")
curl.setopt(pycurl.CAINFO, "/path/to/origin-ca.pem")
curl.setopt(pycurl.CONNECTTIMEOUT, 5)
curl.setopt(pycurl.TIMEOUT, 30)
curl.setopt(pycurl.WRITEDATA, body)
curl.perform()
finally:
curl.close()Use uma compilação de PycURL/libcurl com suporte a proxies HTTPS. Os caminhos dos pacotes representam os conjuntos de confiança pretendidos: PROXY_CAINFO verifica o intermediário; CAINFO verifica o TLS do destino. Omita uma substituição explícita quando a confiança existente já cobre essa ligação.
O URL em PROXY descreve o respetivo listener. Não é necessário adivinhar um valor numérico de PROXYTYPE. Para um listener HTTP simples, o URL permanece http:// mesmo com um destino HTTPS. Nesse caso, a lista de proxies HTTP fornece candidatos a endpoint; o pacote TLS do proxy só se aplica quando o listener usa realmente TLS.
Forneça uma conta de proxy através de PROXYUSERNAME e PROXYPASSWORD quando necessário. Mantenha a verificação de certificados: desativar a verificação do proxy remove a verificação de identidade do intermediário em vez de instalar a autoridade em falta.