Solución:
He encontrado esto aquí
Encontré esta solución, inserte este código al comienzo de su archivo fuente:
import ssl
try:
_create_unverified_https_context = ssl._create_unverified_context
except AttributeError:
# Legacy Python that doesn't verify HTTPS certificates by default
pass
else:
# Handle target environment that doesn't support HTTPS verification
ssl._create_default_https_context = _create_unverified_https_context
Entonces, el problema podría tener tres resoluciones como yo lo veo:
-
Un certificado está bien y hay algún problema con el código. El problema puede ocurrir, por ejemplo, al usar solicitudes preparadas como se describe en esta solución
Pero realmente no creo que sea tu caso porque en el fragmento que has proporcionado no se utilizan tales métodos. Para las dos siguientes variantes, deberá obtener la URL que causa un error y explorar su certificado (se puede hacer a través del navegador).
-
Un certificado está bien, pero la autoridad de certificación que lo firmó no está incluida en la lista de CA que utiliza la biblioteca de solicitudes. Después de abrir una URL problemática, verifique CA en ella y vea si sus fechas son válidas y están incluidas en esta lista. De lo contrario, agregue CA en la lista de confianza para la biblioteca de solicitudes, como se explica en las respuestas a esta pregunta de StackOverflow.
-
Un certificado no es válido o no es válido. Misma solución que en 2.
La solución general es envolver su script en el try except
cláusula e imprimir todas las URL que darán lugar a errores. Luego intente solicitarlos uno por uno a través de la biblioteca de solicitudes y vea si ocurre el problema. Si es así, es el caso (2) o (3). Si no es así, intente ejecutar el script en otra máquina con python y solicitudes recién instaladas. Si la ejecución tiene éxito, entonces hay algún problema en su configuración.
Si está utilizando Windows y ya ha importado la CA en la tienda DB de confianza, puede instalar el paquete python-certifi-win32 que automáticamente usará los mismos certificados de la tienda Trusted DB.
pip install python-certifi-win32
Entonces tu código debería comenzar a funcionar
Ver: Solicitudes de Python con wincertstore
https://gitlab.com/alelec/python-certifi-win32