@kirillg16

Aiogram ошибка SSL. Как исправить?

телеграм бот, самый простой, которому пишешь команду /start, а он отвечает Привет.
Написан он на aiogram 3.13. Проблема в том, что на сервере прописан прокси от рт: ip_адрес:порт. Также, чтобы появился интернет - есть сертификат (.crt). Интернет: ЕСПД, возможно кто-то знает что это такое.
А теперь вопрос:
При запуске бота появляется ошибка:
Traceback (most recent call last):
  File "D:\18BOTv3\main.py", line 48, in <module>
    asyncio.run(main())
  File "C:\Program Files\Python312\Lib\asyncio\runners.py", line 194, in run
    return runner.run(main)
  File "C:\Program Files\Python312\Lib\asyncio\runners.py", line 118, in run
    return self._loop.run_until_complete(task)
  File "C:\Program Files\Python312\Lib\asyncio\base_events.py", line 684, in run_until_complete
    return future.result()
  File "D:\18BOTv3\main.py", line 44, in main
    await dp.start_polling(bot)
  File "C:\Program Files\Python312\Lib\site-packages\aiogram\dispatcher\dispatcher.py", line 551, in start_polling
    await asyncio.gather(*done)
  File "C:\Program Files\Python312\Lib\site-packages\aiogram\dispatcher\dispatcher.py", line 340, in _polling
    user: User = await bot.me()
  File "C:\Program Files\Python312\Lib\site-packages\aiogram\client\bot.py", line 360, in me
    self._me = await self.get_me()
  File "C:\Program Files\Python312\Lib\site-packages\aiogram\client\bot.py", line 1849, in get_me
    return await self(call, request_timeout=request_timeout)
  File "C:\Program Files\Python312\Lib\site-packages\aiogram\client\bot.py", line 488, in __call__
    return await self.session(self, method, timeout=request_timeout)
  File "C:\Program Files\Python312\Lib\site-packages\aiogram\client\session\base.py", line 254, in __call__
    return cast(TelegramType, await middleware(bot, method))
  File "C:\Program Files\Python312\Lib\site-packages\aiogram\client\session\aiohttp.py", line 188, in make_request
    raise TelegramNetworkError(method=method, message=f"{type(e).__name__}: {e}")
aiogram.exceptions.TelegramNetworkError: HTTP Client says - ClientConnectorCertificateError: Cannot connect to host api.telegram.org:443 ssl:True [SSLCertVerificationError: (1, '[SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: self-signed certificate (_ssl.c:1000)')]


Я пробовал прописать прокси, но ошибка та же самая. Мне кажется, нужно что то сделать с сертификатом, но что?
from aiogram import Bot, Dispatcher

PROXY_URL = "http://10.0.22.52:3128"

bot = Bot(token="YOUR_BOT_TOKEN", proxy=PROXY_URL)
dp = Dispatcher(bot)


p.s. тот же самый бот на библиотеке telebot работает без проблем даже не указывая в нем прокси
p.s.2 https://espd.wifi.rt.ru/settings/network
  • Вопрос задан
  • 200 просмотров
Решения вопроса 1
@kirillg16 Автор вопроса
Вот такая запись заработала, извините за беспокойство!
import asyncio
from aiogram import Bot, Dispatcher
from star import start_router
from aiogram.client.session.aiohttp import AiohttpSession

PROXY_URL = "http://10.0.22.52:3128"
API_TOKEN = ""


async def main():
    dp = Dispatcher()
    dp.include_router(start_router)
    # Создаем TCPConnector с отключенной проверкой SSL
    session = AiohttpSession(proxy=PROXY_URL)
    # Создаем бота с прокси и кастомным SSL контекстом
    bot = Bot(token=API_TOKEN, session=session)

    # Запуск polling
    await dp.start_polling(bot)


if __name__ == '__main__':
    try:
        asyncio.run(main())
    except KeyboardInterrupt:
        print('Exit')
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
Mike_Ro
@Mike_Ro
Python, JS, WordPress, SEO, Bots, Adversting
Вам нужен прокси, который может в https, потом обновите url:
# PROXY_URL = "http://10.0.22.52:3128"
PROXY_URL = "https://10.0.22.52:3128"
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы