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