शायद cookielib.CookieJar का उपयोग करने से आपको मदद मिल सकती है। उदाहरण के लिए, जब एक फॉर्म वाले पेज पर पोस्ट किया जाता है:
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()
संपादित करें:
पियोट्र की टिप्पणी के बाद मैं थोड़ा विस्तार करूँगा। डॉक्स से:
कुकीज वर्ग HTTP कूकीज को संग्रहीत करता है। यह HTTP अनुरोधों से कुकीज़ निकालता है, और उन्हें HTTP प्रतिसादों में देता है। कुकीज उदाहरणों में आवश्यक होने पर स्वचालित रूप से निहित कुकीज़ समाप्त हो जाते हैं। उपवर्ग एक फ़ाइल या डेटाबेस से कुकीज़ को संग्रहीत करने और पुनः प्राप्त करने के लिए भी जिम्मेदार हैं।
तो जो भी अनुरोध आप अपने CookieJar
उदाहरण के साथ करते हैं , सभी कुकीज़ स्वचालित रूप से नियंत्रित की जाएंगी। अपने ब्राउज़र की तरह Kinda :)
मैं केवल अपने स्वयं के अनुभव से बोल सकता हूं और कुकीज़ के लिए मेरा 99% उपयोग-मामला कुकी प्राप्त करना है और फिर उस सत्र में सभी बाद के अनुरोधों के साथ इसे भेजने की आवश्यकता है। ऊपर दिए गए कोड को बस संभालता है, और यह इतनी पारदर्शिता से करता है।
cookievals
, तो उपयोग करेंopener.addheaders.append(('Cookie', "; ".join('%s=%s' % (k,v) for k,v in cookievals.items())))
।