582 Stimmen

Unterdrücken von InsecureRequestWarning: Nicht überprüfte HTTPS-Anfrage wird in Python2.6 durchgeführt

Ich schreibe Skripte in Python2.6 mit Verwendung von pyVmomi und während der Verwendung einer der Verbindungsmethoden:

service_instance = connect.SmartConnect(host=args.ip,
                                        user=args.user,
                                        pwd=args.password)

Ich erhalte die folgende Warnung:

/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)

Interessanterweise habe ich urllib3 nicht mit pip installiert (aber es befindet sich in /usr/lib/python2.6/site-packages/requests/packages/urllib3/).

Ich habe versucht, wie hier vorgeschlagen

import urllib3
...
urllib3.disable_warnings()

aber das hat nichts geändert.

24voto

Timothy C. Quinn Punkte 2697

Für Python 3.7.9 und requests 2.11.1 funktionierte es nur auf diese Weise, um die spezifische Ausnahme im OP zu unterdrücken:

import requests
requests.packages.urllib3.disable_warnings(
    requests.packages.urllib3.exceptions.InsecureRequestWarning)

Nicht sicher, warum das obige funktionierte und dieses hier nicht:

import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

Hier ist eine Vereinfachung der funktionierenden Version:

from requests.packages import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

... es scheint, dass der direkte Import von urllib3 nicht den gleichen Namensraum enthält wie der von requests geladene und somit die disable_warnings-Funktion nicht die Datenstruktur verändert, auf die requests zugreift.

14voto

Wenbing Li Punkte 11070

Für Ungeduldige gibt es einen schnellen Weg, um die Python-Warnung vor nicht überprüften HTTPS zu deaktivieren:

export PYTHONWARNINGS="ignore:Unverified HTTPS request"

13voto

FMCorz Punkte 2258

Wenn Sie die Warnungen deaktivieren möchten, aber keine Warnungen von anderen Paketen oder anderen Teilen Ihrer Anwendung unterdrücken möchten, hier ist, wie Sie sie pro Aufruf deaktivieren können.

Schritt 1, erstellen Sie einen Kontext-Manager.

from contextlib import contextmanager

@contextmanager
def disable_ssl_warnings():
    import warnings
    import urllib3

    with warnings.catch_warnings():
        urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
        yield None

Schritt 2, verpacken Sie Ihre Aufrufe:

with disable_ssl_warnings():
    requests.get('https://example.com')

Die Warnung wird nur für diesen Aufruf unterdrückt.

(Wie in der Antwort von @shazow erwähnt, funktioniert dies mit requests >= 2.16.0)

10voto

Jay D. Punkte 1156

Eine Zeile, wenn Sie das import requests vorher gemacht haben:

requests.packages.urllib3.disable_warnings(requests.packages.urllib3.exceptions.InsecureRequestWarning)

7voto

EsmaeelE Punkte 1949

Warnmeldung

~/venv/lib/python3.4/site-packages/urllib3/connectionpool.py:857: InsecureRequestWarning: Es wird eine nicht verifizierte HTTPS-Anfrage gestellt. Es wird dringend empfohlen, die Zertifikatsüberprüfung hinzuzufügen. Siehe: https://urllib3.readthedocs.io/en/latest/advanced-usage.html#ssl-warnings(InsecureRequestWarning)

In Debian 8 haben diese Schritte das Problem behoben.

  1. Im Python3-Code

    import urllib3 urllib3.disable_warnings()

  2. Installieren Sie zwei Pakete auf Debian

libssl1.0.0_1.0.2l-1_bpo8+1_amd64.deb

libssl-dev_1.0.2l-1_bpo8+1_amd64.deb

debian mirror Nach dem Download der obigen Deb-Pakete mit apt installieren.

apt install ./libssl-dev_1.0.2l-1_bpo8+1_amd64.deb 

apt install ./libssl1.0.0_1.0.2l-1_bpo8+1_amd64.deb

Abhängigkeiten mit der neuen Bibliothek erstellen

  1. Neues venv für das Python-Projekt erstellen

    python3 -m venv .venv source .venv/bin/activate

Installieren Sie Module unter dem Python-Projekt im virtuellen Umfeld durch

python3 -m pip install -e .

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X