#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, например, отсутствие общих шифров или версий протоколов, необходимость в сертификатах клиентов, перегрузка сервера или что-то еще. При подключении произвольных серверов в Интернете ожидается, что иногда возникают такие ошибки. Обнаружение ошибки и игнорирование этого сервера на данный момент, как правило, является правильным выбором.
Если ошибка возникает на серверах, к которым действительно нужно подключиться, необходимо проанализировать причину проблемы с этим конкретным сервером, а затем попытаться устранить эту конкретную причину, т. е. Общего решения не существует.