J'écris des scripts en Python2.6 avec l'utilisation de pyVmomi et tout en utilisant l'une des méthodes de connexion:
service_instance = connect.SmartConnect(host=args.ip,
user=args.user,
pwd=args.password)
J'obtiens l'avertissement suivant:
/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)
Ce qui est intéressant, c'est que je n'ai pas installé urllib3 avec pip (mais il est là dans /usr/lib/python2.6/site-packages/requests/packages/urllib3/ ).
J'ai essayé comme suggéré ici
import urllib3
...
urllib3.disable_warnings()
mais cela n'a rien changé.
Réponses:
Vous pouvez désactiver tous les avertissements Python via la
PYTHONWARNINGS
variable d'environnement. Dans ce cas, vous souhaitez:Pour désactiver à l'aide du code Python (
requests >= 2.16.0
):Pour
requests < 2.16.0
, voir la réponse originale ci-dessous.Réponse originale
La raison pour laquelle cela
urllib3.disable_warnings()
n'a pas fonctionné pour vous est qu'il semble que vous utilisez une instance distincte d'urllib3 vendue à l'intérieur des demandes.Je rassemble ceci basé sur le chemin ici:
/usr/lib/python2.6/site-packages/requests/packages/urllib3/connectionpool.py
Pour désactiver les avertissements dans l'urllib3 vendue des demandes, vous devrez importer cette instance spécifique du module:
la source
PYTHONWARNINGS="ignore:Unverified HTTPS request"
from requests.packages.urllib3.exceptions import InsecureRequestWarning
import urllib3 urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
.C'est la réponse en 2017.
urllib3
ne faitrequests
plus partie dela source
requests >= 2.16.0
requests
version est2.21.0
et elle aurllib3
. J'ai essayé2.16.0
, `2.16.1, and
2.17.0` et ils l'ont tous euurllib3
. J'ai essayé2.4.0
et celui-là ne l'a pas eu. L'ont-ils rajouté?Par ce commentaire github , on peut désactiver les
urllib3
avertissements de demande viarequests
dans une ligne:requests.packages.urllib3.disable_warnings()
Cependant, cela supprimera tous les avertissements, pas seulement
InsecureRequest
(c'est-à-dire qu'il supprimera égalementInsecurePlatform
etc.). Dans les cas où nous voulons simplement que les choses fonctionnent, je trouve la concision pratique.la source
requests.packages.urllib3.disable_warnings(requests.packages.urllib3.exceptions.InsecureRequestWarning)
semble fonctionner.La bonne façon est de lire la section pertinente sur le lien fourni et de faire comme il est dit. La manière spécifique pour
requests
(qui comprend sa propre copie deurllib3
), selon les certificats CA - Utilisation avancée - Documentation de la demande 2.8.1 :requests
livré avec son propre ensemble de certificats (mais il ne peut être mis à jour qu'avec le module)requests
v2.4.0
) lecertifi
paquet à la place s'il est installéLa mesure de sécurité de vérification du certificat HTTPS n'est pas quelque chose à rejeter avec légèreté. L'attaque Man-in-the-middle qu'elle empêche de vous protéger d'un tiers, par exemple en sirotant un virus ou en altérant ou en volant vos données.
Ce qui, avec les opérations de piratage mondiales soutenues par le gouvernement comme les opérations d'accès sur mesure et le grand pare-feu de Chine qui ciblent l'infrastructure réseau, est plus probable que vous ne le pensez.
la source
verify=False
.Pour les impatients, un moyen rapide de désactiver l'avertissement HTTPS non vérifié python:
la source
$env:PYTHONWARNINGS="ignore:Unverified HTTPS request"
La réponse acceptée ne fonctionne pas si certains fournisseurs de packages ont leur propre copie de urllib3, auquel cas cela fonctionnera toujours:
la source
J'ai eu un problème similaire avec PyVmomi Client. Avec Python version 2.7.9, j'ai résolu ce problème avec la ligne de code suivante:
Notez que, pour que cela fonctionne, vous avez besoin d'au moins Python 2.7.9.
la source
Pourquoi ne pas utiliser la fonction originale pyvmomi
SmartConnectNoSSL
. Ils ont ajouté cette fonctionJune 14, 2016
et l'ont nomméeConnectNoSSL
, un jour après avoir changé le nom enSmartConnectNoSSL
, l'utiliser au lieu de passer l'avertissement avec des lignes de code inutiles dans votre projet?la source
Pour Python 2.7
Ajoutez la variable d'environnement PYTHONWARNINGS comme clé et la valeur correspondante à ignorer comme:
os.environ['PYTHONWARNINGS']="ignore:Unverified HTTPS request"
la source