Ошибка SSL TLSV1_ALERT_INTERNAL_ERROR с библиотекой aiohttp

#python #ssl #openssl #aiohttp

#питон #ssl #openssl #aiohttp

Вопрос:

У меня есть приложение, которое делает запросы api через aiohttp библиотеку.

 session = aiohttp.ClientSession() session.get(url, proxy=get_proxy_v2(), ssl=False)  

Я делаю около 10 запросов в секунду. Примерно раз в час я получаю следующую ошибку:

 aiohttp.client_exceptions.ClientConnectorSSLError: Cannot connect to host lt;REDACTED_HOSTgt;:443 ssl:False [[SSL: TLSV1_ALERT_INTERNAL_ERROR] tlsv1 alert internal error (_ssl.c:997)]  

Изначально у меня не было ssl=False , но я добавил, чтобы попытаться избежать этой ошибки, но это не возымело никакого эффекта, примерно раз в час я все еще получаю эту ошибку. Я мог бы просто добавить уловку try, чтобы поймать ошибку и повторить попытку, но хотел бы правильно исправить эту ошибку. Я немного смущен тем, как я получаю ошибку SSL, даже если у меня установлен ssl в значение False. Не знаю, куда отсюда идти.

Ответ №1:

Я немного смущен тем, как я получаю ошибку SSL, даже если у меня установлен ssl в значение False.

ssl=False игнорирует только ошибки проверки сертификата. Но TLSV1_ALERT_INTERNAL_ERROR не имеет никакого отношения к проверке сертификата, поэтому этот параметр здесь не помогает. Кроме того, эта настройка ssl=False является очень плохой идеей, поскольку она значительно снижает безопасность, предлагаемую HTTPS — она больше не будет защищать от активных атак «человек в середине».

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

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