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