Отключение проверки сертификата в Python requests

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Python
Скопировать код
# Отключаем проверку SSL в Requests:
import requests
requests.get('https://example.com', verify=False)

Внимание! Отключение проверки SSL несёт в себе серьёзные безопасностные риски. Применяйте данную опцию только для целей тестирования.

Кинга Идем в IT: пошаговый план для смены профессии

Управление процессом с помощью контекстных менеджеров

При выполнении множественных запросов в вашем скрипте постоянное добавление verify=False может выглядеть избыточным. Упростите эту задачу с использованием контекстного менеджера. Он установит значение verify=False по умолчанию и автоматически закроет открытые адаптеры по окончании работы.

Контекстные менеджеры: благополучное решение для проверок SSL

Python
Скопировать код
from contextlib import contextmanager
import requests

@contextmanager
def unverified_https_requests():
    # Создаем сессию, отключающую проверки SSL.
    session = requests.Session()
    session.verify = False
    # Чтобы не засорять консоль, отключаем предупреждения.
    requests.packages.urllib3.disable_warnings()
    try:
        yield session
    finally:
        # По завершении работы закрываем сессию, не оставляя следов.
        session.close()

# Пользуемся сессией, не заботясь о предупреждениях.
with unverified_https_requests() as session:
    response = session.get('https://example.com')

Предупреждения: поддержание чистоты консоли

Нам не нужны непрерывные предупреждения в консоли о потенциальных рисках безопасности. Отключим InsecureRequestWarning, чтобы консоль не перегружалась лишними сообщениями:

Python
Скопировать код
# Применяйте это только если вам известны потенциальные риски:
import urllib3
urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)

Проверки SSL: перерыв с помощью переменных окружения

Альтернативой может стать использование переменной окружения CURL_CA_BUNDLE, установленной в ноль. Это позволит нам сделать перерыв в проверках SSL:

Bash
Скопировать код
export CURL_CA_BUNDLE=""

Выполните эту команду в терминале перед запуском Python-скрипта. Не стоит делать это в среде, где другие приложения выполняют важные операции.

Манипуляции с контекстом SSL: секретное рукопожатие

Для опытных разработчиков Python, которые знакомы с нюансами модуля ssl, имеется следующий метод:

Python
Скопировать код
import ssl
import requests

ssl_context = ssl.create_default_context()
ssl_context.verify_mode = ssl.CERT_NONE

response = requests.get('https://example.com', verify=ssl_context)

Совет: Не используйте этот приём в продуктивной среде.

Визуализация

Визуализируем, как можно отключить проверку SSL на следующем примере:

Python
Скопировать код
requests.get('https://example.com', verify=False);  # И вуаля, замок исчез!

Мы можем представить исчезновение SSL блокировки в виде магического трюка:

Markdown
Скопировать код
До: [🔒🚪]  // Закрытая дверь с бдительным замком на страже!
После: [🚪🔓]  // Вуаля, дверь все еще закрыта, но замок исчез!

Не забывайте ПРЕДУПРЕЖДЕНИЕ: не позволяйте данному трюку стать вашей привычкой!

Руководство по безопасности и ответственное использование «волшебства»

Каждый раз, когда вы используете «волшебную палочку» для обхода проверок SSL, помните о своей ответственности.

Не рискуйте конфиденциальными данными

Избегайте использования «волшебства» в контексте работы с конфиденциальными данными. Проверки SSL являются надёжной защитой от атак «человека посередине» и других опасностей.

Повторяющиеся сессии с отключенной проверкой SSL

Если в рамках одной Session выполняются множественные запросы, установите Session.verify в False заранее. Это даст вам волшебство одного клика, работающее на протяжении всей сессии:

Python
Скопировать код
s = requests.Session()
s.verify = False

Справляясь с истекшими сертификатами

Если сервис использует истекший SSL-сертификат, дважды подумайте, перед тем как отключить проверку. Обычно безопаснее обновить сертификат, чем рисковать безопасностью данных.

Образование в области информационной безопасности – лучшая инвестиция

Применение обходных путей для отключения проверок SSL требует больших знаний в области информационной безопасности. Обязательно обладайте этими знаниями, осознавайте потенциальные риски и будьте готовы к возможным последствиям.