Перейти к содержанию
  • Лента
  • Категории
  • Последние
  • Метки
  • Популярные
  • Пользователи
  • Группы
Свернуть
exlends
Категории
  1. Главная
  2. Категории
  3. Образование
  4. Программирование
  5. ssl: CERTIFICATE_VERIFY_FAILED

ssl: CERTIFICATE_VERIFY_FAILED

Запланировано Прикреплена Закрыта Перенесена Программирование
pythonssl
1 Сообщения 1 Постеры 2 Просмотры
  • Сначала старые
  • Сначала новые
  • По количеству голосов
Ответить
  • Ответить, создав новую тему
Авторизуйтесь, чтобы ответить
Эта тема была удалена. Только пользователи с правом управления темами могут её видеть.
  • kirilljsxK Не в сети
    kirilljsxK Не в сети
    kirilljsx
    js
    написал отредактировано
    #1

    Разберем ошибку ssl: CERTIFICATE_VERIFY_FAILED которая означает, что Python не может проверить HTTPS‑сертификат сервера (или у нас сломан/пустой trust store корневых сертификатов на компьютере).

    Такое бывает, и это одна из самых частых причин, почему скрипт работает на домашнем Wi-Fi и ломается в офисе или под корпоративным VPN.
    Как это работает и почему - лучше прочитать корпоративные фаерволы отдельно, а вот как обойти это сейчас покажу и расскажу.

    И так допустим мы работаем в офисе и нам необходимо написать скрипт для обращения к внешнему API, возьмем для примера встроенные библиотеки: json, ssl, urllib.request

    Думаю объяснять что делает urllib и json не надо, а вот про ssl подробнее. Смотрите в следующем примере мы делаем простейший запрос по эндпоинту “https://catfact.ninja/fact” который возвращает один случайный факт о котах. Для того что бы избежать проверки ssl и пройти верификацию мы импортируем встроенную библиотеку import ssl и смотрите фокус, мы берем функцию create_unverified_context() записываем ее в переменную и передаем вторым аргументом в urllib вот так: response = urllib.request.urlopen(req, context=context).

    ВОУЛЯ! И все работает, запросы отправляются - ответы приходят. Берем на вооружение 👨‍💻

    # Встроенные либы
    import json
    import ssl
    import urllib.request
    
    url = "https://catfact.ninja/fact"
    
    def get_cat_fact():
        req = urllib.request.Request(
            url,
            headers={
                "User-Agent": "Mozilla/5.0",
            },
        )
    
        context = ssl._create_unverified_context()
    
        try:
            response = urllib.request.urlopen(req, context=context)
            result = json.loads(response.read())
            print("Полный ответ:", result)
            print("Факт:", result["fact"])
        except Exception as e:
            print("Ошибка:", e)
    
    get_cat_fact()
    
    1 ответ Последний ответ
    0

    Здравствуйте! Похоже, вас заинтересовала эта беседа, но у вас ещё нет аккаунта.

    Надоело каждый раз пролистывать одни и те же посты? Зарегистрировав аккаунт, вы всегда будете возвращаться на ту же страницу, где были раньше, и сможете выбирать, получать ли уведомления о новых ответах (по электронной почте или в виде push-уведомлений). Вы также сможете сохранять закладки и ставить лайки постам, чтобы выразить свою благодарность другим участникам сообщества.

    С вашими комментариями этот пост мог бы стать ещё лучше 💗

    Зарегистрироваться Войти

    Категории

    • Главная
    • Новости
    • Фронтенд
    • Бекенд
    • Языки программирования

    Контакты

    • Сотрудничество
    • info@exlends.com

    © 2024 - 2026 ExLends, Inc. Все права защищены.

    Политика конфиденциальности
    • Войти

    • Нет учётной записи? Зарегистрироваться

    • Войдите или зарегистрируйтесь для поиска.
    • Первое сообщение
      Последнее сообщение
    0
    • Лента
    • Категории
    • Последние
    • Метки
    • Популярные
    • Пользователи
    • Группы