Вопрос

Я пытаюсь войти в систему 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 с одинаковым именем, просто выберите один.Потому что в итоге, скорее всего, будет оценен только один, иначе сервер просто вернет ошибку.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top