Có thể sử dụng cookielib.CookieJar có thể giúp bạn. Ví dụ: khi đăng lên một trang có biểu mẫu:
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()
BIÊN TẬP:
Sau bình luận của Piotr, tôi sẽ giải thích một chút. Từ các tài liệu:
Lớp CookieJar lưu trữ các cookie HTTP. Nó trích xuất các cookie từ các yêu cầu HTTP và trả lại chúng trong các phản hồi HTTP. Các phiên bản CookieJar tự động hết hạn các cookie được chứa khi cần thiết. Các lớp con cũng chịu trách nhiệm lưu trữ và truy xuất cookie từ tệp hoặc cơ sở dữ liệu.
Vì vậy, bất kỳ yêu cầu nào bạn thực hiện với CookieJar
phiên bản của mình , tất cả cookie sẽ được xử lý tự động. Kinda giống như trình duyệt của bạn :)
Tôi chỉ có thể nói từ kinh nghiệm của bản thân và 99% trường hợp sử dụng của tôi cho cookie là nhận một cookie và sau đó cần gửi nó cùng với tất cả các yêu cầu tiếp theo trong phiên đó. Đoạn mã trên chỉ xử lý điều đó và nó hoạt động minh bạch.
cookievals
, thì hãy sử dụngopener.addheaders.append(('Cookie', "; ".join('%s=%s' % (k,v) for k,v in cookievals.items())))
.