Подтвердить что ты не робот

Получить cookie из CookieJar по имени

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

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

4b9b3361

Ответ 1

Да, метод __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 здесь.

Ответ 2

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

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

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

Ответ 3

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

Ответ 4

cookielib.CookieJar?

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

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

файл cookie cookie?

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

Ответ 5

Смешайте 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