Подскажите пожалуйста, как отключить SSL для aiohttpSession?
Пишу небольшого бота на python 3.12 с использованием aiogram и asyncio.
Бот будет крутится на работе, на одном из серверов. Есть политика безопасности, которая позволяет выход во внешний интернет только через корпоративный прокси, поэтому пришлось использовать еще и aiohttp.
Столкнулся с проблемой, получаю ошибку валидации SSL, т.к. рабочий прокси http, возможно и по другой причине. Так вот, прошу помощи - я перепробовал буквально 10-15 страниц поиска гугла, нейросетки и документацию используемых библиотек, но так и не нашел способ отключить проверку ssl.
Собственно код:
import aiohttp
import asyncio
import logging
from aiogram import Bot, Dispatcher, types
from aiogram.filters.command import Command
from aiohttp import BasicAuth
from aiogram.client.session.aiohttp import AiohttpSession
auth = BasicAuth(login='Login', password='Pass')
session = AiohttpSession(proxy=('http://proxy.corp.company.ru:8080', auth))
logging.basicConfig(level=logging.INFO)
bot = Bot(token="token", session=session)
dp = Dispatcher()
@dp.message(Command("start"))
async def cmd_start(message: types.Message):
await message.answer("Hello!")
async def main():
await dp.start_polling(bot)
if __name__ == "__main__":
asyncio.run(main())
Ошибка:
Что уже пробовал:
1). Использовать в AiohttpSession TCPConnector(ssl = False)
2). Запускать скрипт через ватник, в нем включая\отключая прокси
3). Создавать ssl_context, отключать его и т.п.
Ответы (3 шт):
Нашёл такое: ssl_context.check_hostname и verify_mode
ВОЗМОЖНО, вам поможет следующая часть кода отсюда:
context = ssl.create_default_context()
context.check_hostname = False
context.verify_mode = ssl.CERT_NONE
Надеюсь, что помог.
Если ваша компания использует корпоративный сертификат, попробуйте его добавить в доверенные корневые центры сертификации.
можно попробовать обновить значение ssl
в _connector_init
у класса AiohttpSession
.
попробуй так:
import ssl
class AHSession(AiohttpSession):
def __init__(self, *args, **kwargs):
ssl_context = ssl.create_default_context()
ssl_context.check_hostname = False
ssl_context.verify_mode = ssl.CERT_NONE
kwargs['connector'] = aiohttp.TCPConnector(ssl=ssl_context)
super().__init__(*args, **kwargs)
self._connector_init['ssl'] = ssl_context
auth = BasicAuth(login='Login', password='Pass')
session = AHSession(proxy=('http://proxy.corp.company.ru:8080', auth))