@wintreist

Как в requests получить куки, правильно сохранить в файл, потом использовать?

Здравствуйте, периодически мне нужно будет запускать скрипт, который какое-то время будет парсить страницы НЕ моего сайта. Так как глубже авторизации на сайт меня не пустит, мне нужно залогиниться на сайте, и идти вглубь. Для этого я использую Requests Session. Мой скрипт по парсингу-то готов, однако, если я буду периодически заходить и логиниться, и снова логиниться, админы-то не дураки, спалят. Тут я подумал о безопасности, получается мне нужно каким-то образом заходить и не палиться тем, что логинюсь, а для этого и существуют куки. Но с ними проблема. Если после логина на сайте использовать команду
cookie1 = requests.utils.dict_from_cookiejar(session.cookies)

То в cookie1 будет
{'csuid': 'udP***********1IAxB7Ag==', 'xf_csrf': 'Ebb********NgXA', 'xf_session': '********TCl81zu1n******Hmk', 'xf_user': '9*************************a7RkNmzIVn3OTfs'}

А если эту команду cookie2 = session.cookies
То в cookie2 будет
<RequestsCookieJar[<Cookie csuid=udP***********1IAxB7Ag== for .uc.zone/>, <Cookie xf_csrf=Ebb********NgXA for uc.zone/>, <Cookie xf_session=********TCl81zu1n******Hmk for uc.zone/>, <Cookie xf_user=9*************************a7RkNmzIVn3OTfs for uc.zone/>]>

Ну ладно. Получили, допустим сохранили (К этому еще надо вернуться) в файл, запустил скрипт, скрипт нашел файл с куками (не важно какими) с помощью команды
try:
    session.cookies.set_cookie(cookie1)
except:
    session.cookies.set_cookie(cookie2)

пытаюсь вставить куки, но в первом случае выдает
AttributeError("'dict' object has no attribute 'value'",)
Во втором
AttributeError("'RequestsCookieJar' object has no attribute 'value'",)
Что не нравится requests? Сам же дал эти куки, как их блин использовать?
Еще вопрос как сохранять куки, пробовал в файлы json, но толку ноль, он потом их прочитать нормально не может
  • Вопрос задан
  • 10022 просмотра
Пригласить эксперта
Ответы на вопрос 1
@dgk
как-то так:
import requests, json

session = requests.session()
session.get('https://httpbin.org/cookies/set/my-cookie/my-value')
print(session.get('https://httpbin.org/cookies').json())

with open('cookies.json', 'w') as f:
    json.dump(requests.utils.dict_from_cookiejar(session.cookies), f)

session = requests.session()
print(session.get('https://httpbin.org/cookies').json())

with open('cookies.json') as f:
    session.cookies.update(json.load(f))

print(session.get('https://httpbin.org/cookies').json())
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы