Imposta separatamente i bundle CA del proxy e dell'origine in PycURL
Usa un URL https per il proxy per il TLS verso l'intermediario, con PROXY_CAINFO per quel peer e CAINFO per la destinazione.
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()Usa una build di PycURL/libcurl che supporta i proxy HTTPS. I percorsi dei bundle indicano i set di fiducia previsti: PROXY_CAINFO verifica l'intermediario; CAINFO verifica il TLS della destinazione. Ometti una sostituzione esplicita quando la fiducia esistente copre già quella connessione.
L'URL in PROXY descrive il suo listener. Non serve alcuna ipotesi numerica di PROXYTYPE. Per un listener HTTP semplice, l'URL resta http:// anche con una destinazione HTTPS. In quel caso, la lista di proxy HTTP fornisce candidati endpoint; il bundle TLS del proxy vale solo quando il listener usa davvero TLS.
Fornisci un account proxy tramite PROXYUSERNAME e PROXYPASSWORD quando necessario. Mantieni la verifica dei certificati: disattivare la verifica del proxy rimuove il controllo dell'identità dell'intermediario invece di installare l'autorità mancante.