Не устанавливаются куки в requests.Session
Пытаюсь установить куки в сессию через:
import requests
from json import loads
session = requests.Session()
for cookie in loads(open('cookies.json', 'r').read()):
print(session.cookies.set_cookie(cookie))
В cookie попадает словарь вида:
{
"domain": "site",
"expirationDate": 4785229872,
"hostOnly": true,
"httpOnly": false,
"name": "ips4_recentEmoji",
"path": "/",
"sameSite": null,
"secure": true,
"session": false,
"storeId": null,
"value": "value"
}
Но выдает ошибку:
AttributeError: 'dict' object has no attribute 'value'
Как это можно исправить?
Ответы (1 шт):
Автор решения: gil9red
→ Ссылка
Попробуйте передать объект в set_cookie
Поменял код (основываясь на ответе):
for cookie in loads(open('cookies.json', 'r').read()):
my_cookie = requests.cookies.create_cookie(**cookie)
session.cookies.set_cookie(my_cookie)
Но это вызвало ошибку из-за наличия запрещенных полей:
TypeError: create_cookie() got unexpected keyword arguments: ['expirationDate', 'hostOnly', 'sameSite', 'session', 'storeId', 'httpOnly']
Можно удалить эти поля из словаря cookie
Но, если не важны поля, можно просто добавить обязательные name и value (и если нужно то в этот метод можно и прочие поля передать), пример:
for cookie in loads(open('cookies.json').read()):
session.cookies.set(name=cookie['name'], value=cookie['value'])