HTTP POST i GET z plikami cookie do uwierzytelniania w Pythonie
Próbuję utworzyć program Pythona, który loguje się na stronie mojej uczelni, używając mojego identyfikatora i hasła. To jest formalna strona logowania:https://webapp.pucrs.br/consulta/
Jak można zauważyć, dwa pola mają nazwy pr1 i pr2. Strona używa POST do wysyłania danych. RÓWNIEŻ, istnieje plik cookie, który jest pobierany po załadowaniu strony, jest to JSESSIONID zawierający losową wartość, która, jak zrozumiałem, wymaga powrotu do nagłówka metody POST w celu uwierzytelnienia logowania.
Napisałem następujący kod, ale strona powrotu w metodzie GET mówi „Sesja nie została zainicjowana”, prawdopodobnie dlatego plik cookie nie został poprawnie wysłany.
<code>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() </code>
Gdzie mogę umieścić ten plik cookie, aby logowanie było uwierzytelnione?