Question

Je suis en train de vous connecter à l' http://www.steampowered.com site web en utilisant les cookies, j'ai reçu de mon Chrome session.

Une fois que j'ai attrapé tout le cookie la table de données, à l'aide de la commande SELECT * FROM cookie WHERE host_key LIKE '%steam%' et les noms de colonne: PRAGMA table_info(cookie) et triés à travers toutes les données avec une compréhension de liste, je ne sais pas comment passer le tout requests de sorte que les cookies deviennent utilisables.

L' request's docs dire que vous devez passer dans un dict, c'est à dire cookies={'cookies':'are_working'} mais alors certaines touches names écraser les uns les autres, depuis quelques de la names sont : Steam_Language, mais ils sont de différents hôtes.

edit:Viens de trouver Comment ajouter un cookie existant cookielib CookieJar exemple en Python? qui pourrait m'aider, mais je ne sais pas comment faire pour formater le Chrome cookies pour cookielib

Ma question est: Comment puis-je passer les différents sites de la valeur de cookies pour requests?

Était-ce utile?

La solution

J'ai créé un module pour charger les cookies de Firefox.

Exemple d'utilisation avec les demandes:

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

Autres conseils

Gardez à l'esprit que vous essayez de faire quelque chose que la spécification HTTP tente intentionnellement de vous empêcher de faire (c'est à direl'envoi de cookies à des domaines qu'ils ne viennent pas d').Donc, vous pourriez être voué à l'échec dès le début.Et pour empirer les choses pour vous, j'ai pris un coup d'oeil sur la façon dont steampowered met en œuvre de connexion et que vous avez votre travail pour vous.

Pour revenir à ta question...

Maintenant, en supposant que votre steampowered les cookies de session sont valides (ce qu'ils ne soient pas basés sur le chiffrement, la clé de partage et de captcha méthodes de la page de connexion effectue), vous pourriez être en mesure de se connecter avec les demandes de la bibliothèque par la simple fourniture d'un cookie valide dict que les docs de l'état.

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

Aussi, je ne sais pas quelles sont les données stockées dans les bases de données que vous obtenez le les témoins à partir, mais gardez à l'esprit qu'ils pourraient être de stocker toutes les métadonnées qui vient avec un "Set-Cookie" de l'en-tête (date d'expiration, de chemin, domaine, etc).C'est de l'information de l'utilisateur-agent (Chrome, IE, les demandes de la bibliothèque, etc) pour déterminer les cookies pour envoyer une demande, mais il n'est pas inclus dans la demande.Un "Cookie" en-tête uniquement a des paires nom=valeur.Donc, c'est tout ce que vous devez fournir dans votre cookie dict.

Et, si vous avez deux biscuits avec le même nom, il suffit de choisir un.Parce que dans la fin, la plus probable, un seul sera évalué, sinon le serveur va simplement retourner une erreur.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top