Использование файлов cookie Chrome в запросах Python
-
13-12-2019 - |
Вопрос
Я пытаюсь войти в систему http://www.steampowered.com веб-сайт, используя файлы cookie, полученные во время сеанса Chrome.
Как только я соберу все cookie
данные таблицы с помощью команды SELECT * FROM cookie WHERE host_key LIKE '%steam%'
и имена столбцов: PRAGMA table_info(cookie)
и отсортировал все данные с помощью списка, я не знаю, как передать все это requests
чтобы файлы cookie стали пригодными для использования.
А request
's документы скажем, вам нужно передать dict, т.е. cookies={'cookies':'are_working'}
но потом некоторые ключи name
перезаписывают друг друга, поскольку некоторые из name
это: Steam_Language
, хотя это разные хосты.
редактировать:Только что нашел Как добавить файл cookie в существующий экземпляр CookieJar библиотеки cookielib в Python? это может мне помочь, но я не знаю, как отформатировать файлы cookie Chrome для cookielib.
Мой вопрос: Как передать файлы cookie нескольким различным сайтам requests
?
Решение
я создал модуль для загрузки файлов cookie из Firefox.
Пример использования с запросами:
import requests
import browser_cookie
cj = browser_cookie.firefox()
r = requests.get(url, cookies=cj)
Другие советы
Имейте в виду, что вы пытаетесь сделать что-то, что спецификация HTTP намеренно пытается вам помешать (т.отправка файлов cookie на домены, откуда они не получены).Так что вы можете быть обречены с самого начала.И что еще хуже для вас, я бегло взглянул на то, как Steampowered реализует вход в систему, и вам придется поработать.
Возвращаясь к вашему вопросу...
Теперь, предполагая, что ваши файлы cookie сеанса Steampowered действительны (которые могут не основываться на методах шифрования, совместного использования ключей и проверки подлинности, которые выполняет страница входа), вы можете войти в систему с помощью библиотеки запросов, просто указав действительный файл cookie в качестве состояние документов.
my_cookies = {'cookiename1': 'cookievalue1', 'cookiename2': 'cookievalue2'}
response = requests.get(
'http://www.steampowered.com/mystuff',
cookies=my_cookies)
Кроме того, я не знаю, какие данные хранятся в базах данных, из которых вы получаете файлы cookie, но имейте в виду, что они могут хранить все метаданные, которые идут вместе с заголовком Set-Cookie (срок действия, путь, домен и т. д.).Эту информацию пользовательский агент (Chrome, IE, библиотека запросов и т. д.) использует для определения того, какие файлы cookie отправлять в запросе, но она не включается в запрос.Заголовок Cookie содержит только пары имя=значение.Итак, это все, что вам нужно указать в вашем файле cookie.
А если у вас есть два файла cookie с одинаковым именем, просто выберите один.Потому что в итоге, скорее всего, будет оценен только один, иначе сервер просто вернет ошибку.