Estoy escribiendo scripts en Python2.6 con el uso de pyVmomi y mientras uso uno de los métodos de conexión:
service_instance = connect.SmartConnect(host=args.ip,
user=args.user,
pwd=args.password)
Me sale la siguiente advertencia:
/usr/lib/python2.6/site-packages/requests/packages/urllib3/connectionpool.py:734: InsecureRequestWarning: Unverified HTTPS request is being made. Adding certificate verification is strongly advised. See: https://urllib3.readthedocs.org/en/latest/security.html
InsecureRequestWarning)
Lo interesante es que no tengo urllib3 instalado con pip (pero está allí en /usr/lib/python2.6/site-packages/requests/packages/urllib3/ ).
He intentado como se sugiere aquí
import urllib3
...
urllib3.disable_warnings()
Pero eso no cambió nada.
Respuestas:
Puede deshabilitar cualquier advertencia de Python a través de la
PYTHONWARNINGS
variable de entorno. En este caso, quieres:Para deshabilitar el uso del código Python (
requests >= 2.16.0
):Para
requests < 2.16.0
, vea la respuesta original a continuación.Respuesta original
La razón por la
urllib3.disable_warnings()
que no funcionó es porque parece que está utilizando una instancia separada de urllib3 vendida dentro de las solicitudes.Recojo esto basado en el camino aquí:
/usr/lib/python2.6/site-packages/requests/packages/urllib3/connectionpool.py
Para deshabilitar las advertencias en urllib3 vendida de las solicitudes, deberá importar esa instancia específica del módulo:
fuente
PYTHONWARNINGS="ignore:Unverified HTTPS request"
from requests.packages.urllib3.exceptions import InsecureRequestWarning
import urllib3 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
.Esta es la respuesta en 2017.
urllib3
No es una parte derequests
másfuente
requests >= 2.16.0
requests
versión es2.21.0
y tieneurllib3
. Intenté2.16.0
, '2.16.1, and
2.17.0' y todos lo hicieronurllib3
.2.4.0
Sin embargo, lo intenté y ese no lo tenía. ¿Lo agregaron nuevamente?Según este comentario de github , uno puede deshabilitar las
urllib3
advertencias de solicitud a travésrequests
de 1 línea:requests.packages.urllib3.disable_warnings()
Sin embargo, esto suprimirá todas las advertencias, no solo
InsecureRequest
(es decir, también suprimirá,InsecurePlatform
etc.). En los casos en que solo queremos que las cosas funcionen, la concisión es útil.fuente
requests.packages.urllib3.disable_warnings(requests.packages.urllib3.exceptions.InsecureRequestWarning)
parece funcionar.La forma correcta es leer la sección correspondiente en el enlace proporcionado y hacer lo que dice. La forma específica para
requests
(que se agrupa con su propia copia deurllib3
), según los certificados de CA - Uso avanzado - Solicitudes 2.8.1 documentación :requests
se envía con su propio paquete de certificados (pero solo se puede actualizar junto con el módulo)requests
v2.4.0
) elcertifi
paquete en su lugar si está instaladoLa medida de seguridad de verificación del certificado HTTPS no es algo que deba descartarse alegremente. El ataque Man-in-the-middle que evita protegerte de un tercero, por ejemplo, tomar un virus o manipular o robar tus datos.
Lo cual, con las operaciones de pirateo global respaldadas por el gobierno de hoy en día, como Tailored Access Operations y el Gran Firewall de China que apuntan a la infraestructura de red, es más probable de lo que piensas.
fuente
verify=False
.Para impacientes, una forma rápida de deshabilitar la advertencia HTTPS no verificada de Python:
fuente
$env:PYTHONWARNINGS="ignore:Unverified HTTPS request"
La respuesta aceptada no funciona si algunos proveedores de paquetes son su propia copia de urllib3, en cuyo caso esto seguirá funcionando:
fuente
Tuve un problema similar con PyVmomi Client. Con Python Versión 2.7.9, he resuelto este problema con la siguiente línea de código:
Tenga en cuenta que, para que esto funcione, necesita Python 2.7.9 al menos.
fuente
¿Por qué no usar la función original de pyvmomi
SmartConnectNoSSL
? Se añaden a esta función enJune 14, 2016
y lo llamaronConnectNoSSL
, un día después se cambió el nombre aSmartConnectNoSSL
, el uso que en lugar de pasar por el aviso con líneas innecesarias de código en su proyecto?fuente
Para Python 2.7
Agregue la variable de entorno PYTHONWARNINGS como clave y el valor correspondiente a ignorar como:
os.environ['PYTHONWARNINGS']="ignore:Unverified HTTPS request"
fuente