Получить cookie из CookieJar по имени - PullRequest
17 голосов
/ 18 ноября 2011

Я знаю, что могу перебирать файлы cookie в файле cookie, и это позволило бы мне найти файл cookie с определенным именем - но есть ли у самого объекта CookieJar какие-либо методы, которые я могу вызвать, чтобы получить определенный файл cookie по имени?

Это избавляет меня от необходимости писать вспомогательный метод, который уже существует.

Ответы [ 5 ]

22 голосов
/ 17 декабря 2014

Да, метод __iter__ будет проходить через каждый файл cookie в CookieJar.

for cookie in cj:
   print cookie.name, cookie.value, cookie.domain #etc etc

Файл cookie - это не просто пара имя и значение.В его длинном списке (17) свойств есть domain и path.Значение домена .ibm.com будет применимо к веб-сайту mail.ibm.com, например.Значение домена ibm.com и значение пути /abc не будут применяться к веб-странице ibm.com/index.htm.Таким образом, одного только имени недостаточно, чтобы найти значение применимого файла cookie в CookieJar.

Хотя метод __iter__ легко возвращает список cookie объектов, например list(cj),Внутренняя структура CookieJar не является простым списком.Внутренние данные о CookieJar классе здесь .

9 голосов
/ 03 июня 2015

Вы также можете использовать dict_from_cookiejar , который возвращает словарь ключ / значение из CookieJar. Что-то вроде:

my_cookies = requests.utils.dict_from_cookiejar(s.cookies)

, а затем получите доступ к значению cookie по ключу.

5 голосов
/ 03 апреля 2016

Это недокументированные внутренние файлы, но вы можете получить прямой доступ к файлам cookie, например: cookiejar._cookies[domain][path][name]

1 голос
/ 08 октября 2012

cookielib.CookieJar

вы можете преобразовать jar в список и обработать его, например, {i.name: i for i in list(j)}

и между прочим, j._cookies уже фактически является диктатом, хотя и не полностью тривиально проиндексированным.

файл cookie?

Я думал, что это были простые текстовые файлы ...

0 голосов
/ 21 декабря 2018

Mix CookieJar с модулем Cookie

const { parse } = require("cookie");
// uri eg: http://localhost
const cookies = parse( cookieJar.getCookieString(uri) );
const cookieValue = cookies["cookie-name"];

Если uri без префикса http://, он не получит cookie от jar

...