es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo puedo enviar un proxy con aioquic HTTP/3?

Estoy tratando de entender cómo funciona HTTP/3. En última instancia, mi objetivo es enviar una solicitud de HTTP/3 a un host con un proxy y recibir una respuesta.

El host al que intento acceder solo acepta una Conexión HTTP/3.

Hay una biblioteca que se encarga de realizar la conexión HTTP/3, pero no demuestran cómo se puede pasar un proxy en los paquetes.

https://github.com/aiortc/aioquic/blob/main/examples/http3_client.py

Estoy ejecutando el siguiente archivo después de clonar el repositorio de la siguiente manera:

python3 examples/http3_client.py ‘https://www.truepeoplesearch.com/’

Al hacerlo, la solicitud se encamina a través de HTTP/3 utilizando el protocolo QUIC. ¿Cómo puedo enviar la misma solicitud a través de un proxy con la dirección IP, puerto, nombre de usuario y contraseña del proxy?

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para enviar una solicitud HTTP/3 a través de un proxy utilizando la biblioteca aioquic, primero debes crear una conexión QUIC utilizando la función create_quic_connection del módulo aioquic.quic.connection.

    Para pasar la información del proxy, como la IP, el puerto, el nombre de usuario y la contraseña, puedes utilizar la clase ProxyConnectionConfiguration del mismo módulo.

    Aquí tienes un ejemplo:

    from aioquic.quic.configuration import ProxyConnectionConfiguration
    from aioquic.asyncio import QuicConnectionProtocol
    from urllib.parse import urlparse
    
    # parsea la URL
    url_parts = urlparse('https://www.example.com/path/to/resource')
    
    # crea la configuración del proxy
    proxy_config = ProxyConnectionConfiguration(
        proxy_url="http://<proxy_ip>:<proxy_port>",
        proxy_username="<proxy_username>",
        proxy_password="<proxy_password>",
        is_https=url_parts.scheme == 'https',
        server_hostname=url_parts.hostname,
    )
    
    # crea la conexión QUIC
    transport, protocol = await create_quic_connection(
        ...
        proxy_config=proxy_config,
    )
    
    # envía la solicitud HTTP/3
    resp = await protocol.send_request(
        method='GET',
        target=url_parts.path,
        authority=url_parts.netloc,
    )
    
    # imprime la respuesta
    print(resp.content)
    

    Ten en cuenta que debes reemplazar <proxy_ip>, <proxy_port>, <proxy_username> y <proxy_password> con los valores reales de tu proxy. Además, debes reemplazar la URL `https://www.example.com/path/to/resource` con la URL real del recurso que deseas solicitar.

    ¡Espero que esto ayude!

Comments are closed.