Подавить InsecureRequestWarning: непроверенный запрос HTTPS выполняется в Python2.6
Я пишу сценарии в Python2.6 с использованием pyVmomi и при использовании одного из методов подключения:
service_instance = connect.SmartConnect(host=args.ip,
user=args.user,
pwd=args.password)
Я получаю следующее предупреждение:
/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)
интересно то, что у меня нет urllib3, установленного с pip (но он есть в /УСР/Либ/вместо python2.6/сайте-пакетов/запросов/пакетов/urllib3/).
я попробовал как предложил здесь
import urllib3
...
urllib3.disable_warnings()
но это не меняло что угодно.
9 ответов
обновление (2017-07-28): если вы используете современную версию этих библиотек, они уже не могут быть проданы. Если это так, то вам нужно будет только сделать:
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
если вы все еще используете версию запросов, которые поставщики urllib3 внутри него (например, исходный вопрос), то вы можете использовать исходный ответ ниже:
оригинальный ответ:
причина делать urllib3.disable_warnings()
не работает для вас, потому что это выглядит как вы используете отдельный экземпляр urllib3 проданы внутри запросов.
Я собираю это на основе пути здесь:/usr/lib/python2.6/site-packages/requests/packages/urllib3/connectionpool.py
, чтобы отключить предупреждения в проданы запросов urllib3, вам потребуется импортировать этот конкретный экземпляр модуля:
import requests
from requests.packages.urllib3.exceptions import InsecureRequestWarning
requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
Это ответ в 2017 году. urllib3
не входит requests
больше
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
правильный способ-читать соответствующий раздел по ссылке и делайте, как он говорит. Путь специфический для requests
(который связывается со своей собственной копией urllib3
), согласно сертификаты CA-расширенное использование-запросы 2.8.1 документация:
-
requests
поставляется с собственным пакетом сертификатов (но он может быть обновлен только вместе с модулем) - он будет использовать (после
requests
v2.4.0
) thecertifi
пакет вместо этого, если она установлена
мера безопасности проверки сертификата HTTPS не является чем-то, что следует отбросить беззаботно. Атака "человек в середине", которую она предотвращает, защищает вас от третьей стороны, например потягивая вирус в или подделка или воровство ваш данных.
который, с сегодняшними поддержанными правительством глобальными хакерскими операциями, как Заказунаша Доступ и Великий Брандмауэр Китая эта целевая сетевая инфраструктура более вероятна, чем вы думаете.
Per этот github комментарий, можно отключить urllib3
предупреждения запросу через requests
в 1-вкладыш:
requests.packages.urllib3.disable_warnings()
это будет подавлять все предупреждения, хотя, не только InsecureRequest
(т. е. он также будет подавлять InsecurePlatform
и т. д.). В тех случаях, когда мы просто хотим, чтобы материал работал, я нахожу краткость удобной.
для нетерпеливых, быстрый способ отключить python непроверенный HTTPS предупреждение:
export PYTHONWARNINGS="ignore:Unverified HTTPS request"
У меня была аналогичная проблема с клиентом PyVmomi. С Python версии 2.7.9, я решил эту проблему со следующей строкой кода:
default_sslContext = ssl._create_unverified_context()
self.client = \
Client(<vcenterip>, username=<username>, password=<passwd>,
sslContext=default_sslContext )
обратите внимание, что для этого вам нужен Python 2.7.9 по крайней мере.
почему бы не использовать pyvmomi исходная функция SmartConnectNoSSL
.
Они!--8-->добавил эта функция на June 14, 2016
и назвал его ConnectNoSSL
, через день после они изменили название на SmartConnectNoSSL
, используйте это вместо того, чтобы передавать предупреждение с ненужными строками кода в вашем проекте?
предоставляет стандартный способ подключения к указанному серверу без SSL проверка. Полезно при подключении к серверам с самозаверяющими сертификатами или когда вы хотите полностью игнорировать SSL
service_instance = connect.SmartConnectNoSSL(host=args.ip,
user=args.user,
pwd=args.password)
на Python 2.7
добавьте переменную среды PYTHONWARNINGS в качестве ключа и соответствующее значение, которое следует игнорировать, например:
os.environ['PYTHONWARNINGS']="ignore:Unverified HTTPS request"