Как анализировать запросы.атрибуты cookie сеанса в python

#python #python-3.x #python-requests #cookiejar

#python #python-3.x #python-запросы #cookiejar

Вопрос:

Я пишу скрипт на Python 3 для проверки определенных атрибутов cookie на сайте, над которым я работаю. В настоящее время я выполняю аутентификацию на сайте с помощью requests.session :

 SiteLogin = 'https://mytestsite.com/login'
payload = {'username': USER, 'password': PASSWORD}
s = requests.session()
s.post(SiteLogin, data=payload)
s.cookies
  

Теперь файлы cookie имеют ряд атрибутов, включая имя, домен, срок действия и т.д.. Я не смог найти метод, который фактически предоставлял бы все атрибуты в виде словаря для данного cookie, чтобы я мог проанализировать ожидаемые значения.

Есть ли метод, который я пропустил?

Редактировать

Обновлено, чтобы уточнить, что я вижу:

 >>> s.cookies
<RequestsCookieJar[Cookie(version=0, name='COOKIE_NAME', value='COOKIE_VALUE', port=None, port_specified=False, domain='DOMAIN, domain_specified=False, domain_initial_dot=False, path='PATH', path_specified=True, secure=True, expires=None, discard=True, comment=None, comment_url=None, rest={'HttpOnly': None}, rfc2109=False)]>
  
 >>> print(s.cookies)
<RequestsCookieJar[<Cookie 'COOKIE_NAME'='COOKIE_VALUE' for DOMAIN PATH>]>
  
 >>> print(s.cookies.get_dict())
{'COOKIE_NAME': 'COOKIE_VALUE'}
  

Итак, допустим, я хотел получить значение ‘expires’ для каждого cookie (обратите внимание выше, это доступно при запуске s.cookies). Как я могу получить доступ только к значению истечения срока действия? Если в моей системе много файлов cookie, возможно ли просмотреть их все и проверить срок действия для каждого?

Что-то вроде:

 >>> s.cookies['expires']
None
  

Комментарии:

1. Итак, вы хотите изменить файлы cookie в сеансе или просто распечатать их?

2. Распечатать их — это нормально. Не удалось найти хороший способ получить к ним доступ как к отдельным атрибутам.

3. Отлично, я только что отправил ответ.

Ответ №1:

Итак, чтобы просто распечатать файлы cookie, вы можете попробовать реализовать следующий код:

 payload = {'username': USER, 'password': PASSWORD}
s = requests.session()
s.post(SiteLogin, data=payload)
list(s.cookies)
  

надеюсь, это поможет

Комментарии:

1. Итак, когда я запускаю s.cookies.get_dict(), все, что я получаю, это: {‘CookieName’:’CookieValue’} Я не получаю домен, путь и т.д. (которые отображаются в s.cookies). Есть ли способ для меня получить только атрибут ‘domain’ или любой другой атрибут, отображаемый s.cookies?

2. Итак, если при выполнении print(s.cookies) вы получаете домен и путь, но при выполнении print(s.cookies.get_dict()) вы получаете только {'CookieName':'CookieValue'} ?

3. Итак, я попробовал несколько вещей: >>> s.cookies # Возвращает все атрибуты, включая домен, срок действия, путь и т.д. >>> print(s.cookies) # Возвращает ‘CookieName’=’CookieValue’ для ‘Домена» >>> print(s.cookies.get_dict()) # Возвращает {‘CookieName’:’CookieValue’} Я хочу получить доступ к любому из отдельных атрибутов, возвращаемых s.cookie для каждого файла cookie. Например, получите все атрибуты ‘expires’ для каждого cookie. Я надеялся, что есть способ перебирать словарь для каждого файла cookie и оценивать атрибуты.

4. Не могли бы вы отредактировать свой вопрос, добавить свой текущий вывод и желаемый, это бы очень помогло!

5. Отредактировано. Спасибо за помощь, Fozoro!

Ответ №2:

Итак, найдено решение, основанное на ответе Fozoro. Объект cookie в cookiejar содержит атрибуты участника, которые меня интересовали.

 payload = {'username': USER, 'password': PASSWORD}
s = requests.session()
s.post(SiteLogin, data=payload)
for cookie in list(s.cookies):
    print(cookie.expires)
  

Ответ №3:

Для дальнейшего использования я бы посоветовал вам использовать следующий синтаксис, как предложено в документации:

 s.cookies.get('expires')