2014-03-22 2 views
1

Я пытаюсь получить время истечения определенного печенья, что я извлечение с сервера, как:питона - получить кук время истечения с использованием библиотеки запросов

s = requests.session() 
r = s.get("http://localhost/test") 
r.cookies 

Это будет список всех куки, отправленной сервер (Я получаю 2 печенье), как:

<<class 'requests.cookies.RequestsCookieJar'>[<Cookie PHPSESSID=cusa6hbtb85li8po 
argcgev221 for localhost.local/>, <Cookie WebSecu=f for localhost.local/test>]> 

Когда я делаю:

r.cookies.keys 

я получаю:

<bound method RequestsCookieJar.items of <<class 'requests.cookies.RequestsCooki 
eJar'>[Cookie(version=0, name='PHPSESSID', value='30tg9vn9376kmh60ana2essfi3', p 
ort=None, port_specified=False, domain='localhost.local', domain_specified=False 
, domain_initial_dot=False, path='/', path_specified=True, secure=False, expires 
=None, discard=True, comment=None, comment_url=None, rest={}, rfc2109=False), Co 
okie(version=0, name='WebSecu', value='f', port=None, port_specified=False, doma 
in='localhost.local', domain_specified=False, domain_initial_dot=False, path='/test', path_specified=False, secure=False, expires=1395491371, discard=Fals 
e, comment=None, comment_url=None, rest={}, rfc2109=False)]>> 

Как вы можете видеть, у нас есть два куки. Я хотел бы получить время истечения куков с именем «WebSecu»

Спасибо

ответ

7

В requests, куки являются особым объектом. Вы можете заметить, что если вы делаете:

r.cookies['WebSecu'] 

Вы получите значение этого печенья в виде строки (в вашем примере f). Чтобы получить реальный объект печенья, который содержит эту информацию, вам придется перебрать кук так:

expires = None 
for cookie in r.cookies: 
    if cookie.name == 'WebSecu': 
     expires = cookie.expires 
+1

более путь «вещего»: 'истекает = следующий (х для й в r.cookies, если х .name == 'WebSecu'). expires' – ChaimG

+0

«Pythonic» - это слово, о котором говорят люди, пытающиеся казаться превосходными. Если бы «Pythonic» означал что-то ценное, это означало бы «легко понять». Если вы должны были дать кому-то свой лайнер и петлю выше, большинство из них должно было уделить дополнительное время, чтобы понять однострочный. (Особенно большинство людей пытаются учиться на этом сайте.) –

+0

Я следил за этим методом, и хотя мой SESSION_COOKIE_AGE - 3600, я получаю 1510315939, это не миллисекунды, что это? Кажется, это не имеет ничего общего с моей SESSION_COOKIE_AGE. –

Смежные вопросы