Çerezleri bir sunucu tarafından gönderilen bir HTTP yanıtından almalı ve bir sonraki isteğin başlığına koymam gerekiyor. Nasıl yapabilirim?Python'da HTTP üstbilgisinde çerez nasıl ayarlanır ve alınır?
Şimdiden teşekkürler. urllib modülünde
Çerezleri bir sunucu tarafından gönderilen bir HTTP yanıtından almalı ve bir sonraki isteğin başlığına koymam gerekiyor. Nasıl yapabilirim?Python'da HTTP üstbilgisinde çerez nasıl ayarlanır ve alınır?
Şimdiden teşekkürler. urllib modülünde
Sen cookielib module kullanmalıdır urllib ile.
Çerezler istekler arasında saklanır ve bunları diskte yükleyebilir/kaydedebilirsiniz. İşte bir örnek: NID
ve PREF
değerleri istekleri arasında aynıdır
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')
Bildirim söyledi. HTTPCookieProcessor
'u ihmal ederseniz, bunlar farklı olurdu (urllib2, 2. istekte Cookie
başlığı göndermez).
Görünüş:
alınırken kurabiye için (Python 3.1 ile, Python 2'de yerine urllib2.urlopen kullanın): basitçe bir Cookie başlığı gönderir,
>>> import urllib.request
>>> d = urllib.request.urlopen("http://www.google.co.uk")
>>> d.getheader('Set-Cookie')
'PREF=ID=a45c444aa509cd98:FF=0:TM=14.....'
Ve göndermek için istek. Bunun gibi:
r=urllib.request.Request("http://www.example.com/",headers={'Cookie':"session_id=1231245546"})
urllib.request.urlopen(r)
Düzenleme:
"http.cookie" (Python 2 için "Çerez") sizin için daha iyi çalışabilir:
Sen Python 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)
kullanabilecekleri ve ben noktayı almıyorum geri
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() sizin için HTTPHandler'ı ekleyecektir. Python yüklemesinin SSL desteği varsa, HTTPSHandler'ı da ekler. https://docs.python.org/2/library/urllib2.html#urllib2.build_opener –