Подавить 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 (но он есть в /usr / lib / python2. 6/site-packages/requests/packages/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-это не то, что нужно отбросить беззаботно. Атака "человек в середине", которую она предотвращает, защищает вас от третьей стороны, например потягивая вирус в или подделка или воровство ваш данных.
который, с сегодняшними поддерживаемыми правительством глобальными хакерскими операциями, такими как Индивидуальные Операции Доступа и Великий Брандмауэр Китая что целевая сетевая инфраструктура, более вероятно, чем вы думаете.
на это github комментарий, можно отключить
urllib3
предупреждения запросу черезrequests
в 1-liner:
requests.packages.urllib3.disable_warnings()
это будет подавлять все предупреждения, хотя, не только
InsecureRequest
(т. е. он также будет подавлятьInsecurePlatform
etc). В тех случаях, когда мы просто хотим, чтобы вещи работали, я нахожу краткость удобной.
для нетерпеливых, быстрый способ отключить 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
. Они добавил эта функция наJune 14, 2016
и назвал егоConnectNoSSL
,через день после они изменили имя кSmartConnectNoSSL
, используйте это вместо того, чтобы передавать предупреждение с ненужными строками кода в вашем проекте?предоставляет стандартный способ подключения к указанному серверу без SSL проверка. Полезно при подключении к серверам с самозаверяющими сертификатами или когда вы хотите полностью игнорировать SSL
service_instance = connect.SmartConnectNoSSL(host=args.ip, user=args.user, pwd=args.password)