Pergunta

Estou tentando fazer login no http://www.steampowered.com site usando os cookies que recebi da minha sessão do Chrome.

Depois de pegar todos os cookie dados da tabela, usando o comando SELECT * FROM cookie WHERE host_key LIKE '%steam%' e os nomes das colunas: PRAGMA table_info(cookie) e classifiquei todos os dados com compreensão de lista, não sei como passar tudo para requests para que os cookies se tornem utilizáveis.

O requestde documentos digamos que você precisa passar um dict, ou seja cookies={'cookies':'are_working'} mas então algumas das chaves names se sobrepõem, já que alguns dos namesão: Steam_Language, embora sejam hosts diferentes.

editar:Acabei de encontrar Como adicionar cookie à instância cookieJar existente do cookielib em Python? o que pode me ajudar, mas não sei como formatar os cookies do Chrome para cookielib

Minha pergunta é: Como faço para passar cookies para vários sites diferentes requests?

Foi útil?

Solução

eu criei um módulo para carregar cookies do Firefox.

Exemplo de uso com solicitações:

import requests
import browser_cookie
cj = browser_cookie.firefox()
r = requests.get(url, cookies=cj)

Outras dicas

Lembre-se de que você está tentando fazer algo que a especificação HTTP tenta impedir intencionalmente que você faça (ou seja,enviar cookies para domínios de onde eles não vieram).Então você pode estar condenado desde o início.E para piorar as coisas para você, dei uma olhada rápida na maneira como o Steampowered implementa o login e você terá muito trabalho para fazer.

Voltando à sua pergunta...

Agora, supondo que seus cookies de sessão movidos a vapor sejam válidos (que podem não ser baseados nos métodos de criptografia, compartilhamento de chave e captcha que a página de login executa), você poderá fazer login com a biblioteca de solicitações simplesmente fornecendo um dict de cookie válido como o estado dos documentos.

my_cookies = {'cookiename1': 'cookievalue1', 'cookiename2': 'cookievalue2'}
response = requests.get(
    'http://www.steampowered.com/mystuff',
    cookies=my_cookies)

Além disso, não sei quais dados são armazenados nos bancos de dados dos quais você está obtendo os cookies, mas lembre-se de que eles podem armazenar todos os metadados que acompanham um cabeçalho 'Set-Cookie' (expiração, caminho, domínio, etc.).Essas são informações que o agente do usuário (Chrome, IE, a biblioteca de solicitações, etc.) usa para determinar quais cookies enviar em uma solicitação, mas não estão incluídas na solicitação.Um cabeçalho 'Cookie' possui apenas pares nome=valor.Então isso é tudo que você precisa fornecer em seu dicionário de cookies.

E, se você tiver dois cookies com o mesmo nome, escolha apenas um.Porque no final, provavelmente apenas um será avaliado ou o servidor simplesmente retornará um erro.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top