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 una compilación de PycURL/libcurl compatible con proxies HTTPS. Las rutas de los paquetes representan los conjuntos de confianza previstos: PROXY_CAINFO verifica al intermediario; CAINFO verifica el TLS del destino. Omita una sustitución explícita cuando la confianza existente ya cubra esa conexión.

La URL de PROXY describe su escucha. No hace falta adivinar un valor numérico de PROXYTYPE. Para un escucha HTTP simple, la URL sigue siendo http:// incluso con un destino HTTPS. En ese caso, la lista de proxies HTTP aporta candidatos de extremo; el paquete TLS del proxy solo se aplica cuando el escucha usa TLS de verdad.

Proporcione una cuenta de proxy mediante PROXYUSERNAME y PROXYPASSWORD cuando sea necesario. Mantenga la verificación de certificados: desactivar la verificación del proxy elimina la comprobación de identidad del intermediario en lugar de instalar la autoridad que falta.

Artículos relacionados