• TLSv1_3 в aiohttp?

    trapwalker
    @trapwalker Куратор тега Python
    Программист, энтузиаст
    Забавно. Скоро не будет никакого смысла идти за ответом сюда, когда можно к чатжпт сходить.
    Даже читать не стал ваш вопрос после заголовка и скопировал его в чатжпт4. Вот что он ответил:

    В `aiohttp`, процесс создания и настройки пользовательского TLS контекста отличается от того, что используется в `requests`. В `aiohttp`, вы должны настроить SSL контекст до создания сессии и передать его в качестве аргумента при создании клиентской сессии. Вот как вы можете адаптировать ваш пример для `aiohttp`:

    1. Создайте SSL контекст, используя стандартную библиотеку `ssl`.
    2. Настройте контекст, задав нужные параметры, такие как версия TLS, набор шифров и кривые ECDH.
    3. Создайте экземпляр `aiohttp.ClientSession`, передав SSL контекст.

    Пример кода:

    import ssl
    import aiohttp
    
    class TLSv1_3_BYPASS:
        ciphers = '...'  # Здесь должен быть ваш список шифров
    
        @staticmethod
        def create_ssl_context():
            ssl_context = ssl.create_default_context(ssl.Purpose.SERVER_AUTH)
            ssl_context.set_ciphers(TLSv1_3_BYPASS.ciphers)
            ssl_context.set_ecdh_curve("prime256v1")
            ssl_context.minimum_version = ssl.TLSVersion.TLSv1_3
            ssl_context.maximum_version = ssl.TLSVersion.TLSv1_3
            return ssl_context
    
    # Создание SSL контекста
    ssl_context = TLSv1_3_BYPASS.create_ssl_context()
    
    # Создание aiohttp сессии с пользовательским SSL контекстом
    async with aiohttp.ClientSession(connector=aiohttp.TCPConnector(ssl=ssl_context)) as session:
        # Теперь вы можете использовать session для выполнения запросов
        response = await session.get('https://example.com')
        # ...


    В этом примере кода создаётся пользовательский SSL контекст, который затем используется для создания `aiohttp.ClientSession`. Обратите внимание, что вам нужно будет заменить `'...'` в `ciphers` на фактический список шифров, которые вы хотите использовать.
    Ответ написан
    Комментировать