Использование файлов 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'} но тогда некоторые ключи names перезаписывают друг друга, так как некоторые из names являются: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.

и, если у вас есть два куки с тем же именем, просто выберите один. Потому что в конце концов, скорее всего, будет оценен только один, иначе сервер просто вернет ошибку.