Estoy tratando de crear un programa python que inicie sesión en el sitio de mi universidad utilizando mi identificación y contraseña. Esta es la página formal para iniciar sesión: https://webapp.pucrs.br/consulta/HTTP POST y GET con cookies para autenticación en python
Como puede observar, los dos campos se denominan pr1 y pr2. La página usa POST para enviar los datos. TAMBIÉN, hay una cookie que se descarga cuando se carga la página, es un JSESSIONID que contiene un valor aleatorio que, según tengo entendido, debe volver al encabezado del método POST para autenticar el inicio de sesión.
Escribí el siguiente código, pero la página de retorno en el método GET dice "La sesión no se inicializó", probablemente porque la cookie no se envió correctamente.
from urllib2 import Request, build_opener, HTTPCookieProcessor, HTTPHandler
import httplib, urllib, cookielib, Cookie, os
conn = httplib.HTTPConnection('webapp.pucrs.br')
#COOKIE FINDER
cj = cookielib.CookieJar()
opener = build_opener(HTTPCookieProcessor(cj),HTTPHandler())
req = Request('http://webapp.pucrs.br/consulta/principal.jsp')
f = opener.open(req)
html = f.read()
for cookie in cj:
c = cookie
#FIM COOKIE FINDER
params = urllib.urlencode ({'pr1':111049631, 'pr2':<pass>})
headers = {"Content-type":"text/html",
"Set-Cookie" : "JSESSIONID=70E78D6970373C07A81302C7CF800349"}
# I couldn't set the value automaticaly here, the cookie object can't be converted to string, so I change this value on every session to the new cookie's value. Any solutions?
conn.request ("POST", "/consulta/servlet/consulta.aluno.ValidaAluno",params, headers) # Validation page
resp = conn.getresponse()
temp = conn.request("GET","/consulta/servlet/consulta.aluno.Publicacoes") # desired content page
resp = conn.getresponse()
print resp.read()
¿Dónde pongo esta cookie para que el inicio de sesión esté autenticado?
Puede usar la sesión para manejar las cookies automáticamente. Desde [docs] (http://docs.python-requests.org/en/latest/user/advanced/#session-objects): El * objeto de sesión le permite persistir ciertos parámetros en las solicitudes. También persiste las cookies en todas las solicitudes realizadas desde la instancia de sesión. * –
@PiotrDobrogost ¡Eso es genial, gracias! Y el código se ve aún mejor. – jorgeca
Ahora, puede hacer que su respuesta sea aún mejor ... –