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.

Analizando encabezados y datos de http2 con Python.

Quiero analizar datos de HTTP2 con Python.

El inicio del flujo es PRI * HTTP/2.0\r\n\r\nSM\r\n\r\n eso está bien.

El siguiente paquete es \x00\x00\x06\x04\x00\x00\x00\x00\x00\x00\x04\x01\x00\x00\x00.

El siguiente paquete es \x00\x00\x04\x08\x00\x00\x00\x00\x00\x00\xff\x00\x01.

¿Cómo puedo analizarlo con Python por favor?

Cuando pongo estos datos en Wireshark y los analizo como HTTP2, también los veo. Pero quiero hacer eso solo con Python.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para analizar datos HTTP2 con Python, puedes usar la biblioteca hyper. Primero, instala la biblioteca hyper usando pip:

    pip install hyper
    

    Luego, puedes utilizar la clase HTTP20Connection para establecer una conexión y enviar una solicitud. Aquí tienes un ejemplo de código para analizar los datos HTTP2 que proporcionaste:

    import binascii
    from hyper import HTTP20Connection
    
    data1 = binascii.unhexlify('505249202a20485454502f322e300d0a0d0a534d0d0a0d0a')
    data2 = binascii.unhexlify('000006040000000000000401000000')
    data3 = binascii.unhexlify('00000408000000000000ff0001')
    
    conn = HTTP20Connection('example.com')
    conn.request('GET', '/')
    conn.send(data1)
    conn.send(data2)
    conn.send(data3)
    resp = conn.get_response()
    
    print(resp.read())
    

    En este código, primero convertimos los datos hexadecimales a binarios usando binascii.unhexlify(). Luego, establecemos una conexión con example.com usando HTTP20Connection y enviamos los tres paquetes utilizando conn.send(). Finalmente, leemos la respuesta usando resp.read().

    Ten en cuenta que este código asume que los datos que proporcionaste son datos válidos de HTTP2 y contienen una solicitud válida. Si los datos que tienes son solo una parte de una transmisión más grande de HTTP2, es posible que debas analizar la transmisión y reconstruir la solicitud antes de enviarla.

Comments are closed.