Найти - Пользователи
Полная версия: Как вытащить куки
Начало » Web » Как вытащить куки
1
AndreyCV
import urllib
import urllib2
import cookielib

page_address="http://www.*****.com/login.html"
cookie_handler = urllib2.HTTPCookieProcessor(cookielib.CookieJar())
redirect_handler = urllib2.HTTPRedirectHandler()
http_handler = urllib2.HTTPHandler()
https_handler = urllib2.HTTPSHandler()
# Загружаем хэндлеры в opener
opener = urllib2.build_opener(http_handler, https_handler, cookie_handler, redirect_handler)
# подключаем прокси
proxy_handler = urllib2.ProxyHandler(proxies)
opener.add_handler(proxy_handler)
# Устанавливаем заголовок User-agent
opener.addheaders = [('User-agent', useragent)]
urllib2.install_opener(opener)
params = urllib.urlencode({'user':login,'pass':password,'backfromssl':0,'refer':''})
request = urllib2.Request(page_address, params)
f = urllib2.urlopen(request)
Как вытащить кукисы с этого куска. Раньше вытаскивал так
cookie = unicode(f.headers['Set-Cookie'], 'cp1251')
# получаем значение cookie (например, id сессии):
matches = re.findall('(?si)SID=(.*?);', cookie)
cookie = matches[0]
print cookie
но почему то буквально с неделю перестало работать и выдает ошибку
File “C:\Python26\lib\rfc822.py”, line 388, in __getitem__
return self.dict
KeyError: ‘set-cookie’
dimabest
Вытаскивать куки лучше всего из объекта класса CookieJar, который куками заведует.

Заменяем строку
cookie_handler   = urllib2.HTTPCookieProcessor(cookielib.CookieJar())
на
cj = cookielib.CookieJar()
cookie_handler = urllib2.HTTPCookieProcessor(cj)
После запроса к сайту пробегаемся по кукам:
for cookie in cj:
if cookie.name == 'SID':
print cookie.value
AndreyCV
Большое спасибо, все работает нормально. Единственно что остается для меня загадкой почему пол года моя конструкция работала нормально, и потом неожиданно перестала :/
alexandre
Версия питона менялась? :)
AndreyCV
alexandre
Версия питона менялась? :)
Да нет, как была 2.6 так и осталась. Обновления тоже не делал.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB