Mettre un "Cookie" dans un " CookieJar`
Je suis en utilisant la nouvelle Python Demandes de la bibliothèque pour effectuer des requêtes http. Je obtenir un cookie à partir du serveur en tant que texte. Comment puis-je le transformer en un CookieJar
avec le cookie-t-il?
- Je vois votre Python liste de diffusion de messages, et je vois ici la raison de votre désespoir.
- Je ne la vois pas. Ce qui est si mal/alvéolé sur le haut de réponse?
- La réponse sommet est grande, j'étais au désespoir par les réponses qui l'ont précédé.
- Avec
requests.Session()
il n'y a pas besoin de s'inquiéter à propos de cookie pots. L'objet session gère la réception et à l'envoi de cookies pour vous. - Voir cette réponse pour un moyen d'y arriver sans l'aide de la Session de l'objet.
Vous devez vous connecter pour publier un commentaire.
Je suis confus par cette question. Les demandes de la bibliothèque va mettre les biscuits dans le bol pour vous.
La première requête à l'URL de remplir le bocal. La deuxième demande d'envoyer les cookies sur le serveur. Il en va de même pour la bibliothèque standard du module urllib cookielib. (doc actuellement disponible pour 2.x Version)
requests.Session
objet; il va gérer la jarre à biscuits pour vous, entièrement.requests.Session
énumérés ici dans les commentaires et plus bas a parfaitement fonctionné.Session
). Mais je suppose queSession
est le chemin à parcourir.Une demande
Session
permettra également de recevoir et d'envoyer des "cookies".(Code ci-dessus volé http://www.python-requests.org/en/latest/user/advanced/#session-objects)
Si vous voulez des cookies pour persister sur le disque entre les pistes de votre code, vous pouvez utiliser directement une jarre à biscuits et d'enregistrer/charger. De plus en plus lourde, mais encore assez facile:
Puis regardez dans le fichier:
Pour vous aider, j'ai écrit un module entier. Je l'ai essayé avec ma page web personnelle et google des cookies, donc je suppose que cela fonctionne.
J'ai obtenu de l'aide de Comment ajouter un cookie existant cookielib CookieJar exemple en Python?
J'ai beaucoup de unpythonic code ici, y compris une semi-quelque chose, de sorte que votre kilométrage peut varier. L'ajuster comme vous le souhaitez, en particulier avec l'hypothèse d'éléments (comme le port 80) la "demande" comme argument ci-dessous est de type de demandes.demande et j'ai réalisé que la "méthode" argument doit être toutes les capitales. J'espère que je pourrais vous aider!
Remarque: je n'ai pas eu le temps d'ajouter des commentaires pour les éclaircissements que vous aurez à utiliser la source.
cookielib.CookieJar.extract_cookies(response, request)
???Je pense que beaucoup de ces réponses sont à côté de la question. Parfois, cette autre bibliothèque n'utilise pas les demandes en vertu de la hotte. Ou de ne pas exposer le cookiejar qu'il utilise. Parfois tout ce que nous avons est le témoin de la chaîne. Dans mon cas, je vais essayer d'emprunter de l'auth cookie de pyVmomi.
Qui nous donne cette
cookie_jar
:Que l'on peut utiliser comme d'habitude:
Bien cookielib.LWPCookieJar a charger et enregistrer des méthodes sur elle. Regardez le format et voir si elle correspond à la native format cookie, vous pourriez bien être en mesure de charger votre cookie directement dans une jarre à biscuits à l'aide de StringIO. Sinon, si la demande est à l'aide de urllib2 sous le capot ne pourriez-vous pas ajouter un cookie gestionnaire par défaut ouvreur?
Je suis en train de faire la même chose. C'est ce que j'ai à ce jour, et pour une raison quelconque, il n'est pas l'envoi de cookies dans l'en-tête. Il pourrait vous obtenir suffisamment loin pour résoudre votre problème.
En supposant que vous avez demandé pour
url
et vous avez obtenuheaders
comme réponse. Type Type deurl
est une chaîne. Type Type deheaders
est liste.Essayez ce site: Voidspace article
Fil des ans, j'ai trouvé voidspace être extrêmement utile pour faire ce genre de choses. Espère que j'ai aidé, bien que je suis un cancre. Le code est disponible sur Voidspace Recettes
comme le code source .py bien que le fichier à télécharger est un ".py-" fichier.
requests
à mettre en œuvre cookie de manutention.Comme dstanek répondu, les demandes seront automatiquement mis la réponse des cookies un cookie jar pour vous.
Toutefois, si vous spécifiez manuellement un
Cookie
entrée d'en-tête, les demandes ne mettre ces cookies dans un bocal pour vous. Ceci signifie que toutes les demandes subséquentes seront dépourvues de votre première série de cookies, mais vous aurez tout de nouveaux cookies aller de l'avant.Si vous avez besoin de créer manuellement un cookie jar pour les demandes, utilisez
demandes.les témoins.RequestsCookieJar
. Dans le cas où leur exemple, les changements de code:Notez que si vous fournissez un cookie jar et un
Cookie
- tête l'en-tête l'emporte, mais le cookie jar sera toujours maintenue pour les futures demandes.Version simplifiée de overthink's réponse, comment obtenir un cookiejar et de persister les cookies dans Python3:
Pour conserver les cookies, entre les sessions, vous devez vous enregistrer et de réutiliser les cookiejar dans la Session (le s variable).
Si vous obtenez des réponses différentes entre r1/r2/s sur d'autres sites, vérifier si il y a une redirection. Comme exemple r1/r2 n'obtenez pas de cookie pour https://www.stackoverflow.com car il est redirigé vers le site sans www.