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.

python-requests no captura JSESSIONID

Estoy intentando hacer web scraping de un sitio web utilizando requests. Sin embargo, un método post que necesito utilizar requiere los siguientes encabezados. Puedo completar todo menos el JSESSION ID. La única forma en que puedo hacer que este método post funcione es si manualmente entro en el navegador, inicio una sesión e inspecciono la página para recuperar el JSESSIONID.

Estoy buscando una forma de recuperar este JSESSIONID utilizando el paquete requests en Python. Vi algunas sugerencias para usar una sesión. Sin embargo, la sesión de requests no captura el JSESSIONID, que es lo único que necesito. ¿Cómo debería abordar una posible solución?

Host: 
Connection: 
Content-Length:
Accept: 
X-Requested-With: 
User-Agent: 
Content-Type:
Sec-GPC: 
Origin: 
Sec-Fetch-Site: 
Sec-Fetch-Mode: 
Sec-Fetch-Dest: 
Referer: 
Accept-Encoding:
Accept-Language: 
Cookie: _1aa19=; JSESSIONID=;

Lo que intenté hasta ahora es utilizar una sesión del paquete requests, que debería almacenar las cookies de la sesión. Sin embargo, después de utilizar un método .get, requests.cookies no tiene almacenado el JSESSIONID.

query = 'Ejemplo%20consulta'
s = requests.Session()
suggest = s.get(f'https://www.examplewebsite.nl/api_route/suggest?query={query}').json()
s.cookies

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Una posible solución sería analizar las cookies de la respuesta de una solicitud GET exitosa al sitio web. Esto se puede hacer accediendo al atributo response.cookies del módulo requests. Aquí hay un ejemplo:

    import requests
    
    # realice una solicitud GET al sitio web para obtener la cookie JSESSIONID
    response = requests.get('https://www.examplewebsite.nl')
    jsessionid = response.cookies.get('JSESSIONID')
    
    # use la cookie obtenida en una solicitud POST posterior
    headers = {
      'Cookie': f'JSESSIONID={jsessionid};',
      # ... agregue otros encabezados aquí
    }
    
    # realice una solicitud POST utilizando los encabezados y cookies obtenidos
    response = requests.post('https://www.examplewebsite.nl/api_route', headers=headers, data={...})
    

    Tenga en cuenta que el código exacto puede variar según las especificaciones del sitio web y la solicitud POST que esté intentando realizar.

Comments are closed.