मुझे सर्वर द्वारा भेजी गई HTTP प्रतिक्रिया से कुकीज़ प्राप्त करने की आवश्यकता है और उसे अगले अनुरोध के शीर्षलेख में रखना होगा। मैं यह कैसे कर सकता हूं?पायथन में HTTP शीर्षलेख में कुकी को कैसे सेट और पुनर्प्राप्त करें?
अग्रिम धन्यवाद।
मुझे सर्वर द्वारा भेजी गई HTTP प्रतिक्रिया से कुकीज़ प्राप्त करने की आवश्यकता है और उसे अगले अनुरोध के शीर्षलेख में रखना होगा। मैं यह कैसे कर सकता हूं?पायथन में HTTP शीर्षलेख में कुकी को कैसे सेट और पुनर्प्राप्त करें?
अग्रिम धन्यवाद।
आप cookielib module का उपयोग करना चाहिए urllib के साथ।
यह अनुरोधों के बीच कुकीज़ संग्रहीत करेगा, और आप उन्हें डिस्क पर लोड/सहेज सकते हैं। यहाँ एक उदाहरण है:
import cookielib
import urllib2
cookies = cookielib.LWPCookieJar()
handlers = [
urllib2.HTTPHandler(),
urllib2.HTTPSHandler(),
urllib2.HTTPCookieProcessor(cookies)
]
opener = urllib2.build_opener(*handlers)
def fetch(uri):
req = urllib2.Request(uri)
return opener.open(req)
def dump():
for cookie in cookies:
print cookie.name, cookie.value
uri = 'http://www.google.com/'
res = fetch(uri)
dump()
res = fetch(uri)
dump()
# save cookies to disk. you can load them with cookies.load() as well.
cookies.save('mycookies.txt')
सूचना है कि NID
और PREF
के लिए मूल्यों अनुरोधों के बीच एक ही हैं। यदि आपने HTTPCookieProcessor
छोड़ा तो यह अलग होगा (urllib2 दूसरे अनुरोध पर Cookie
शीर्षलेख नहीं भेजेगा)।
urllib मॉड्यूल पर देखो:
(अजगर 3.1 के साथ, अजगर 2 में, urllib2.urlopen बजाय का उपयोग करें) पुन: प्राप्त करने के लिए कुकीज़ के लिए:
>>> import urllib.request
>>> d = urllib.request.urlopen("http://www.google.co.uk")
>>> d.getheader('Set-Cookie')
'PREF=ID=a45c444aa509cd98:FF=0:TM=14.....'
और भेजने के लिए, बस के साथ एक कुकी शीर्ष लेख भेजने निवेदन। कि जैसा:
r=urllib.request.Request("http://www.example.com/",headers={'Cookie':"session_id=1231245546"})
urllib.request.urlopen(r)
संपादित करें:
"http.cookie" (अजगर 2 के लिए "कुकी") आपके लिए बेहतर काम कर सकते हैं:
आप अजगर 2,7
url="http://google.com"
request = urllib2.Request(url)
sock=urllib2.urlopen(request)
cookies=sock.info()['Set-Cookie']
content=sock.read()
sock.close()
print (cookies, content)
में उपयोग कर सकते हैं और अनुरोध वापस भेजने
def sendResponse(cookies):
import urllib
request = urllib2.Request("http://google.com")
request.add_header("Cookie", cookies)
request.add_data(urllib.urlencode([('arg1','val1'),('arg1','val1')]))
opener=urllib2
opener=urllib2.build_opener(urllib2.HTTPHandler(debuglevel=1))
sock=opener.open(request)
content=sock.read()
sock.close()
print len(content)
build_opener() आपके लिए HTTPHandler जोड़ देगा। यदि पाइथन इंस्टॉलेशन में SSL समर्थन है तो यह HTTPSHandler भी जोड़ देगा। https://docs.python.org/2/library/urllib2.html#urllib2.build_opener –