2014-09-20 7 views
0

Когда я попытаюсь получить набор файлов cookie экземпляра ответа, я получаю значение None, когда использую свое фактическое имя пользователя и пароль.Извлечение cookie из GET cookie

import urllib2, urllib, cookielib 

jar = cookielib.CookieJar()                               
cookie = urllib2.HTTPCookieProcessor(jar)                                
opener = urllib2.build_opener(cookie) 

data = urllib.urlencode({'email':'[email protected]','pass':'password','login':'Log+In'}) 
req = urllib2.Request('http://www.facebook.com/login.php') 
response = opener.open(req, data) 
response = opener.open(req, data) #I open it twice on purpose 

if "Logout" in response.read(): 
    print("Logged In") 
else: 
    print("Not Logged In") 

cookie_header = response.headers.get("Set-Cookie") 
print(cookie_header) 

Я знаю, как установить заголовок печенья, но проблема имеет значение None функции назначается cookie_header, когда я использую свои фактические полномочия. Как получить cookie?

+1

Куки бы установленного на ** первом ** 'opener.open()' соединении. Где находится 'res'? –

+0

Просто используйте 'запросы' и его [сеансовую поддержку] (http://docs.python-requests.org/en/latest/user/advanced/) вместо того, чтобы ругать этот материал. –

+0

@MartijnPieters Извините, это должно быть ответом. – user3818650

ответ

1

Переставив код, я смог его исправить.

response = opener.open(req, data) 
cookie_header = response.headers.get("Set-Cookie") 
response = opener.open(req, data) #I open it twice on purpose 

Поскольку cookie был установлен на первом открытом.

1

Файл cookie будет установлен на в начале ответа, вместо этого вы проверяете второе. Facebook не будет устанавливать еще cookie здесь.

Вы можете просто получить печенье из CookieJar объекта:

cookie = list(cookie.cookiejar)[0] 

Вы бы намного легче его, если вы использовали request library вместо:

import requests 

session = requests.Session() 

data = {'email':'[email protected]','pass':'password','login':'Log+In'} 
form = session.get('http://www.facebook.com/login.php') 
response = session.post('http://www.facebook.com/login.php', data/data) 
cookie_value = session.cookie['datr'] 
Смежные вопросы