Może skorzystanie z cookielib.CookieJar może Ci pomóc. Na przykład podczas publikowania na stronie zawierającej formularz:
import urllib2
import urllib
from cookielib import CookieJar
cj = CookieJar()
opener = urllib2.build_opener(urllib2.HTTPCookieProcessor(cj))
formdata = { "username" : username, "password": password, "form-id" : "1234" }
data_encoded = urllib.urlencode(formdata)
response = opener.open("https://page.com/login.php", data_encoded)
content = response.read()
EDYTOWAĆ:
Po komentarzu Piotra trochę rozwinę. Z dokumentów:
Klasa CookieJar przechowuje pliki cookie HTTP. Wyodrębnia pliki cookie z żądań HTTP i zwraca je w odpowiedziach HTTP. Instancje CookieJar automatycznie wygasają zawarte pliki cookie, gdy jest to konieczne. Podklasy są również odpowiedzialne za przechowywanie i pobieranie plików cookie z pliku lub bazy danych.
Więc cokolwiek wyślesz do swojej CookieJar
instancji, wszystkie pliki cookie będą obsługiwane automatycznie. Tak jak twoja przeglądarka :)
Mogę mówić tylko z własnego doświadczenia, a moim przypadkiem używania plików cookie w 99% jest otrzymanie pliku cookie, a następnie wysłanie go przy wszystkich kolejnych żądaniach w tej sesji. Powyższy kod obsługuje właśnie to i robi to w sposób przejrzysty.
cookievals
, użyjopener.addheaders.append(('Cookie', "; ".join('%s=%s' % (k,v) for k,v in cookievals.items())))
.